0Pricing
DevOps Bootcamp · Урок

Показатели с Prometheus и Grafana

Настройте Prometheus для сбора показателей кластера и приложений и визуализируйте их с помощью Grafana.

«Показатели с Prometheus и Grafana» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.

Возможности метрик

Метрики — это числовые измерения, описывающие состояние и производительность Ваших приложений и инфраструктуры. Представляйте их как жизненные показатели Вашего программного обеспечения!

Они дают ценную информацию о следующем:

  • Производительность: Насколько быстро Ваше приложение отвечает?
  • Использование ресурсов: Не заканчивается ли память на Вашем сервере?
  • Доступность: Работает ли Ваш сервис и доступен ли он пользователям?

Отслеживая метрики, Вы можете понимать тенденции, обнаруживать аномалии и заранее устранять проблемы.

Знакомство с Prometheus

Prometheus — система мониторинга с открытым исходным кодом, разработанная с учётом требований к надёжности и масштабируемости. Это важный инструмент стека наблюдаемости облачных приложений.

Основные задачи Prometheus:

  • Сбор: получение метрик от настроенных целей (например, Ваших приложений).
  • Хранение: сохранение метрик в базе данных временных рядов.
  • Запрос: возможность задавать вопросы о собранных данных.

Prometheus помогает получить ясное представление о происходящем внутри Вашего кластера Kubernetes.

Модель «сбора» Prometheus

Prometheus использует модель «pull» для сбора метрик. Вместо того чтобы приложения отправляли данные в Prometheus, Prometheus сам активно «собирает» или извлекает метрики из них.

В общих чертах это работает так:

  1. Ваше приложение предоставляет метрики по определённой конечной точке HTTP (часто это /metrics).
  2. Prometheus настраивается со списком целей (например, с IP-адресом и портом Вашего приложения).
  3. Через регулярные интервалы Prometheus отправляет HTTP-запрос к конечной точке /metrics каждой цели.
  4. Цель отвечает своими текущими метриками, которые Prometheus затем сохраняет.

Метрики: пары «ключ — значение»

Prometheus хранит данные в виде временных рядов: последовательностей значений с временными метками. Каждый временной ряд однозначно определяется именем метрики и набором пар «ключ — значение», называемых метками.

Пример: http_requests_total{method="GET", path="/api"}

В Prometheus есть следующие основные типы метрик:

  • Счётчик: накопительная метрика, которая только увеличивается (например, общее количество запросов).
  • Индикатор: значение, которое может увеличиваться или уменьшаться (например, текущее использование CPU).
  • Гистограмма/сводка: используются для выборки наблюдений и их подсчёта в настраиваемых диапазонах (например, длительность запросов).

Как научить приложения «говорить» на языке метрик

Чтобы Prometheus мог собирать метрики, Ваше приложение должно предоставлять их в формате, который понимает Prometheus. Обычно это делается через конечную точку HTTP.

Во многих языках программирования есть клиентские библиотеки, упрощающие добавление инструментирования в код:

  • увеличивать счётчики при возникновении событий;
  • задавать индикаторам значения текущих состояний;
  • измерять длительность операций.

Рассмотрим очень простой пример приложения, предоставляющего базовую метрику-счётчик.

Приложение Python, предоставляющее метрики

Перед Вами небольшое приложение Python на Flask, предоставляющее простую метрику-счётчик. Оно имитирует подсчёт просмотров страниц.

Запустите этот код, а затем попробуйте открыть /metrics в браузере или терминале (например, после запуска перейдите на http://localhost:5000/metrics).

from flask import Flask
from prometheus_client import Counter, generate_latest
import time

app = Flask(__name__)
c = Counter('my_app_requests_total', 'Total requests to my app')

@app.route('/')
def hello():
    c.inc() # Increment the counter
    return "Hello, CoddyKit!"

@app.route('/metrics')
def metrics():
    return generate_latest().decode('utf-8')

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

Prometheus в Вашем кластере

В Kubernetes эффективное развёртывание Prometheus часто выполняется с помощью Prometheus Operator. Этот оператор помогает управлять экземплярами и конфигурациями Prometheus.

Основные ресурсы Kubernetes для Prometheus:

  • ServiceMonitor: сообщает Prometheus, где искать конечные точки метрик (например, какие Service и Pod нужно опрашивать).
  • PodMonitor: похож на ServiceMonitor, но напрямую выбирает Pod.

Эти ресурсы позволяют Prometheus автоматически обнаруживать развёрнутые приложения и собирать их метрики.

Grafana: маэстро панелей мониторинга

Prometheus собирает и хранит метрики, а Grafana — основной инструмент для их визуализации. Это веб-приложение с открытым исходным кодом для анализа и интерактивной визуализации данных.

Grafana позволяет:

  • создавать красивые и информативные панели мониторинга;
  • отправлять запросы к нескольким источникам данных (например, Prometheus);
  • настраивать оповещения на основе пороговых значений метрик.

Она превращает необработанные данные метрик в полезные сведения, на основе которых можно действовать.

Grafana и Prometheus: мощный дуэт

Grafana не хранит данные метрик самостоятельно: она запрашивает данные из внешних источников. Чтобы визуализировать метрики Kubernetes, настройте Prometheus как источник данных в Grafana.

Шаги:

  1. В Grafana добавьте новый источник данных.
  2. Выберите «Prometheus» в качестве типа.
  3. Укажите URL-адрес сервера Prometheus.
  4. Начните создавать панели мониторинга, используя язык запросов Prometheus — PromQL!

Такое сочетание даёт Вам полный контроль над мониторингом кластера.

Проверьте свои знания!

Пора проверить, насколько хорошо Вы поняли принципы работы Prometheus и Grafana!

Повторение: метрики и визуализация

Отличная работа! На этом уроке Вы узнали:

  • о важности метрик для наблюдаемости;
  • о Prometheus как мощной системе сбора и хранения метрик временных рядов;
  • о том, как приложения предоставляют метрики для сбора Prometheus;
  • о Grafana для создания информативных панелей мониторинга и визуализации данных метрик.

Понимание этих инструментов крайне важно для поддержания работоспособности и высокой производительности приложений Kubernetes. Продолжайте изучать способы добавления инструментирования в собственные приложения!

Часто задаваемые вопросы

Урок «Показатели с Prometheus и Grafana» бесплатный?

Да — полный текст урока «Показатели с Prometheus и Grafana» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.

Чему я научусь в уроке «Показатели с Prometheus и Grafana»?

Настройте Prometheus для сбора показателей кластера и приложений и визуализируйте их с помощью Grafana. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать DevOps Bootcamp?

Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Показатели с Prometheus и Grafana»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке DevOps Bootcamp?

Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Журналирование с помощью kubectl logs
  2. Показатели с Prometheus и Grafana
  3. Проверки работоспособности: пробы активности и готовности
  4. Распределённая трассировка и события
← Назад к DevOps Bootcamp