Показатели с 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 сам активно «собирает» или извлекает метрики из них.
В общих чертах это работает так:
- Ваше приложение предоставляет метрики по определённой конечной точке HTTP (часто это
/metrics). - Prometheus настраивается со списком целей (например, с IP-адресом и портом Вашего приложения).
- Через регулярные интервалы Prometheus отправляет HTTP-запрос к конечной точке
/metricsкаждой цели. - Цель отвечает своими текущими метриками, которые 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.
Шаги:
- В Grafana добавьте новый источник данных.
- Выберите «Prometheus» в качестве типа.
- Укажите URL-адрес сервера Prometheus.
- Начните создавать панели мониторинга, используя язык запросов 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 — локальная установка не требуется.
Все уроки этого курса
- Журналирование с помощью kubectl logs
- Показатели с Prometheus и Grafana
- Проверки работоспособности: пробы активности и готовности
- Распределённая трассировка и события