Перейти к содержанию

Сервис мониторинга Grafana#

Комплект поставки Luna Cars Analytics включает сервис Grafana для визуализации, мониторинга и анализа метрик подсистем LCA.

Grafana использует следующие компоненты:

  • cAdvisor — собирает метрики использования ресурсов и производительности запущенных контейнеров (подробнее см. https://github.com/google/cadvisor).
  • Prometheus — собирает и сохраняет метрики (подробнее см. https://prometheus.io/).
  • Node Exporter — собирает метрики сервера, включая использование процессора, памяти и дисков (подробнее см. https://github.com/prometheus/node_exporter).

Настройка и запуск#

Перед началом установки убедитесь, что Docker и Docker Compose установлены. Дополнительную информацию об установке можно найти в документе «Руководство по установке».

Чтобы включить Grafana:

1. Перейдите в рабочую директорию

cd cars-installer_v.2.18.0

2. Откройте файл .env-vanilla и установите для переменной MONITOR_ENABLE значение true

MONITOR_ENABLE=true

3. Перезапустите сервер для применения изменений:

./stop.sh
./start.sh vanilla

Дополнительные параметры конфигурации Grafana описаны в файле README.md.

После запуска Grafana доступна по адресу:

 http://<IP_address>:8080/info

IP-адрес и порт можно изменить в файле .env-vanilla, где: - IP_address — IP-адрес сервера; - 8080 — порт по умолчанию. Задается параметром ANALYTICS_FRONTEND_PORT.

Данные для авторизации#

По умолчанию для входа в веб-интерфейс Grafana (Рисунок 5) используются следующие данные:

Для входа в веб-интерфейс Grafana используются следующие учетные данные (рисунок 5):

  • Пользовательadmin (не изменяется);
  • Пароль — значение переменной GRAFANA_PASSWORD из файла .env-vanilla..
Страница входа Grafana
Рисунок 5. Страница входа Grafana

Дашборды#

После запуска мониторинга в разделе Dashboards доступны преднастроенные дашборды.

Все дашборды поддерживают выбор периода отображения данных и, при наличии, фильтрацию по объектам мониторинга. После изменения периода или значения фильтра панели автоматически обновляются.

Чтобы открыть дашборд, нажмите его название.

Раздел Dashboards показан на рисунке 6.

Раздел Dashboards
Раздел Dashboards

Подробнее об администрировании Grafana см. в документации: https://grafana.com/docs/grafana/latest/

Дашборд «Celery monitoring»#

Дашборд позволяет отслеживать состояние обработчиков и выполнение задач в очереди (рисунок 10).

Дашборд «Celery monitoring»
Дашборд «Celery monitoring»

Панели дашборда:

  • Celery Worker Status — отображает состояние обработчиков Celery:
  • 1 — обработчик выполняет задачи;
  • 0 — обработчик не выполняет задачи.

  • Number of Tasks Currently Executing at Worker — отображает количество задач, которые в текущий момент выполняет каждый обработчик.

  • Average Task Runtime at Worker — отображает среднее время выполнения задач для каждого обработчика.
  • Task Prefetch Time at Worker — отображает среднее время между предварительным получением задачи и началом ее выполнения.
  • Number of Tasks Prefetched at Worker — отображает количество задач, предварительно полученных каждым обработчиком.
  • Task Success Ratio — отображает долю успешно выполненных задач за выбранный период.
  • Task Failure Ratio — отображает долю задач, завершившихся с ошибкой, за выбранный период.

Дашборд «Docker and system monitoring»#

Дашборд позволяет отслеживать использование системных ресурсов хоста и контейнеров Docker, а также контролировать нагрузку на процессор, память, дисковую подсистему и сеть (рисунок 11).

Дашборд «Docker and system monitoring»
Дашборд «Docker and system monitoring»

Панели дашборда:

Панель Total usage: отображает сводную информацию об использовании ресурсов хоста (карточки с показателями).

  • Cluster memory usage — отображает объем используемой и общей оперативной памяти.
  • Cluster CPU usage (5m avg) — отображает среднюю загрузку процессора за последние 5 минут.
  • Cluster filesystem usage — отображает объем используемого и общего дискового пространства.

Usage total: отображает общую нагрузку на основные ресурсы системы.

  • Network I/O pressure — отображает интенсивность входящего и исходящего сетевого трафика.
  • CPU use by namespace — отображает использование процессора по пространствам имен.
  • Memory use by namespace — отображает использование оперативной памяти по пространствам имен.

  • Pods CPU usage (5m avg) — отображает загрузку процессора группами контейнеров за последние 5 минут.

  • Containers CPU usage (5m avg) — отображает среднюю загрузку процессора каждым контейнером.
  • All processes CPU usage (5m avg) — отображает загрузку процессора всеми процессами, включая системные.

  • Pods memory usage — отображает использование оперативной памяти группами контейнеров.

  • Containers memory usage — отображает использование оперативной памяти каждым контейнером.
  • All processes memory usage — отображает использование оперативной памяти всеми процессами.

  • Pods network I/O (5m avg) — отображает объем входящего и исходящего сетевого трафика групп контейнеров за последние 5 минут.

  • Containers network I/O (5m avg) — отображает объем входящего и исходящего сетевого трафика для каждого контейнера.

Дашборд «Health check»#

Дашборд позволяет отслеживать состояние сервисов Luna Cars Analytics и время непрерывной работы контейнеров (рисунок 12).

Дашборд «Health check»
Дашборд «Health check»

Панели дашборда:

  • Service status — отображает историю изменения состояния сервисов и подсистем за выбранный период времени (диаграмма состояний).
  • Service status — отображает текущее состояние каждого сервиса.
  • Container uptime — отображает время непрерывной работы каждого контейнера.

Дашборд позволяет просматривать и анализировать журналы событий сервисов Luna Cars Analytics (рисунок 13).

Дашборд «Log search»
Дашборд «Log search»

Панели дашборда:

  • Raw logs — отображает записи журналов за выбранный период времени с учетом заданных фильтров.

Дашборд «Node Exporter Full»#

Дашборд позволяет отслеживать использование системных ресурсов хоста, включая процессор, оперативную память, дисковую подсистему и сеть (рисунок 14).

Дашборд «Node Exporter Full»
Дашборд «Node Exporter Full»

Основные панели дашборда:

Панель Quick CPU/Mem/Disk: отображает сводную информацию об использовании ресурсов хоста.

  • CPU Busy — отображает текущую загрузку процессора.
  • Sys Load — отображает среднюю нагрузку на систему.
  • RAM Used — отображает объем используемой оперативной памяти.
  • SWAP Used — отображает объем используемой памяти подкачки.
  • Root FS Used — отображает объем используемого дискового пространства корневой файловой системы.

Панель Basic CPU/Mem/Net/Disk: отображает основные показатели использования системных ресурсов.

  • CPU Basic — отображает загрузку процессора.
  • Memory Basic — отображает использование оперативной памяти.
  • Network Traffic Basic — отображает объем входящего и исходящего сетевого трафика.
  • Disk Space Used Basic — отображает использование дискового пространства.

Подробное описание всех панелей дашборда Node Exporter Full приведено в документации Grafana: https://grafana.com/docs/grafana/latest/

Дашборд «Nvidia GPU Metrics»#

Дашборд позволяет отслеживать состояние и использование графических процессоров NVIDIA, включая загрузку GPU, использование видеопамяти, температуру, энергопотребление и рабочие частоты (рисунок 15).

Дашборд «Nvidia GPU Metrics»
Дашборд «Nvidia GPU Metrics»

Основные панели дашборда:

  • Name, Driver Version, VBIOS Version — отображают сведения об установленном графическом процессоре.
  • P-State — отображает текущий режим производительности графического процессора.
  • GPU Utilization % — отображает загрузку графического процессора.
  • Memory Utilization % — отображает использование видеопамяти.
  • Memory Allocation — отображает объем выделенной видеопамяти.
  • Temperature — отображает температуру графического процессора.
  • Power Draw и Power Draw % — отображают текущее энергопотребление графического процессора.
  • Fan Speed % — отображает скорость вращения вентилятора графического процессора.
  • Graphics Clock Speed, SM Clock Speed, Memory Clock Speed, Video Clock Speed — отображают текущие рабочие частоты графического процессора и памяти.
  • Throttle Reasons — отображает причины ограничения производительности графического процессора.

Дашборд «Statistics»#

Дашборд позволяет отслеживать состояние камер, работу подсистемы Stream, объем используемого хранилища, количество событий и инцидентов, а также состояние очереди Celery (рисунок 7).

Дашборд «Statistics»
Дашборд «Statistics»

Панели дашборда:

  • Cameras — отображает текущее состояние созданных камер.

Панель Stream: отображает показатели работы подсистемы Stream.

  • Source FPS — отображает частоту кадров, поступающих от источника видеопотока.
  • Number of read frames — отображает количество обработанных кадров.
  • Number of skipped frames — отображает количество пропущенных кадров.
  • Number of skipped invalid frames — отображает количество пропущенных некорректных кадров.

Панель Storage: отображает объем хранилища, используемого различными компонентами системы.

  • Database size — отображает объем дискового пространства, занимаемого базой данных.
  • Full frame size — отображает объем дискового пространства, занимаемого полноразмерными кадрами.
  • Crop size — отображает объем дискового пространства, занимаемого кропами.

Панель Events: отображает статистику событий и инцидентов.

  • Checkpoint events count — отображает количество расширенных событий за выбранный период времени.
  • Events count — отображает количество событий за выбранный период времени.
  • Incidents count — отображает количество инцидентов за выбранный период времени.
  • The number of events of different types — отображает распределение событий и инцидентов по типам за выбранный период времени.

  • Celery — отображает количество задач в очереди Celery за выбранный период времени (график).

Работа с дашбордами#

Все дашборды Grafana поддерживают выбор периода отображения данных, фильтрацию данных и обновление информации.

Выбор периода времени#

Для изменения периода отображения данных нажмите селектор времени в правом верхнем углу страницы (рисунок 9).

Доступны предустановленные интервалы, например:

  • Last 5 minutes;
  • Last 15 minutes;
  • Last 1 hour;
  • Last 24 hours;
  • Last 7 days;
  • Last 30 days.

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

После выбора периода все панели дашборда автоматически обновляются.

Выбор периода времени
Выбор периода времени

Использование фильтров#

Некоторые дашборды содержат фильтры (переменные), позволяющие отображать данные только для выбранных объектов мониторинга.

Чтобы применить фильтр, выберите значение из раскрывающегося списка в верхней части дашборда (рисунок 10).

После изменения значения фильтра все панели дашборда автоматически обновляются.

Фильтры дашборда
Фильтры дашборда

Набор доступных фильтров зависит от выбранного дашборда.

Обновление данных#

В правом верхнем углу дашборда расположены элементы управления обновлением данных (рисунок 11).

  • Refresh — обновляет данные на дашборде.
  • Auto refresh — включает автоматическое обновление данных через заданный интервал времени.

Для автоматического обновления доступны различные интервалы, например 5 s, 10 s, 30 s, 1 min и другие.

Кнопки обновления данных
Кнопки обновления данных

Добавление нового дашборда#

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

Чтобы создать новый дашборд, нажмите New Dashboard. Откроется страница создания дашборда (рисунок 12).

Кнопки для добавления новых дашбордов
Кнопки для добавления новых дашбордов

Страница создания дашборда (рисунок 13) содержит следующие разделы:

  • Start your new dashboard by adding a visualization — позволяет создать новый дашборд, добавив визуализацию. Для этого нажмите Add visualization, выберите тип визуализации и настройте ее параметры.

  • Import panel — позволяет импортировать панели из других дашбордов. Выберите Import panel и укажите панель из списка доступных.

  • Import a dashboard — позволяет импортировать готовый дашборд из JSON-файла или репозитория Grafana.com. При необходимости выберите источник данных и настройте параметры импортируемого дашборда.

Страница создания дашборда
Страница создания дашборда

Подробная информация о создании и настройке дашбордов приведена в документации Grafana: https://grafana.com/docs/grafana/latest/

Импорт существующего дашборда#

Импортировать дашборд можно из раздела Dashboards или со страницы создания нового дашборда.

1. Нажмите Import в разделе Dashboards или Import a dashboard на странице создания нового дашборда. Откроется страница Import (рисунок 14).

Раздел Import
Раздел Import

2. Скопируйте содержимое файла с настройками дашборда и вставьте его в поле Import via panel json (рисунок 15).

Импортирование файла настроек new.json
Импортирование файла настроек new.json

3. Нажмите Load. При необходимости измените имя дашборда в поле Name, затем нажмите Import (рисунок 16).

Параметры дашборда
Параметры дашборда

4. После завершения импорта откроется страница добавленного дашборда (рисунок 17).

Общий вид дашборда
Общий вид дашборда

Подробная информация об импорте и администрировании Grafana приведена в документации Grafana: https://grafana.com/docs/grafana/latest/

Настройка и редактирование дашборда#

В Grafana можно редактировать как дашборд целиком, так и отдельные панели.

Редактирование дашборда#

Чтобы перейти в режим редактирования, нажмите Edit в правом верхнем углу страницы.

Для редактирования отдельной панели откройте меню панели, нажав кнопку с тремя точками в ее правом верхнем углу (рисунок 18).

Кнопки редактирования
Кнопки редактирования

Редактирование панели#

1. В меню панели выберите Edit (рисунок 19).

Редактирование панели
Редактирование панели

2. На вкладке Query измените существующий запрос или добавьте новый. Запросы формируются на языке PromQL (рисунок 20).

Вкладка Query при редактировании панели
Вкладка Query при редактировании панели

3. После внесения изменений сохраните дашборд.

Язык запросов Prometheus (PromQL) подробно описан в документации: https://prometheus.io/docs/prometheus/latest/querying/basics/

Добавление панели#

1. Нажмите Edit, затем выберите Add → Visualization (рисунок 21).

Кнопка «Visualization»
Кнопка «Visualization»

2. Настройте параметры панели и выберите тип визуализации.

3. На вкладке Query введите запрос на языке PromQL (рисунок 22).

Вкладка Query при добавлении панели
Вкладка Query при добавлении панели

4. Нажмите Back to dashboard, затем Save dashboard для сохранения изменений.

Подробная информация о настройке и администрировании Grafana приведена в документации: https://grafana.com/docs/grafana/latest/

Дополнительные настройки#

Дополнительные параметры мониторинга, включая настройки Prometheus и уведомлений Telegram, задаются в файле конфигурации .env-vanilla.

Настройка Prometheus#

Prometheus используется для хранения исторических метрик. Глубина хранения данных определяется следующими переменными:

  • PROMETHEUS_RETENTION_TIME — срок хранения данных;
  • PROMETHEUS_RETENTION_SIZE — максимальный размер хранилища.

При достижении любого из ограничений старые данные автоматически удаляются.

PROMETHEUS_RETENTION_TIME=30d
PROMETHEUS_RETENTION_SIZE=10GB

Настройка уведомлений Telegram#

Для отправки уведомлений в Telegram используются следующие переменные:

  • GRAFANA_TG_BOT_TOKEN — токен Telegram-бота;
  • GRAFANA_TG_CHAT_ID — идентификатор чата;
  • GRAFANA_SERVER_NAME — имя сервера, на котором запущена Grafana.
GRAFANA_TG_BOT_TOKEN=null
GRAFANA_TG_CHAT_ID=null

GRAFANA_SERVER_NAME=REPLACE_SERVER_NAME

Переменные GRAFANA_TG_BOT_TOKEN и GRAFANA_TG_CHAT_ID должны содержать корректные значения. Если они не заданы, запуск системы завершится ошибкой.

Получение токена Telegram-бота#

1. В Telegram найдите бота @BotFather и нажмите START. 2. Выполните команду /newbot. 3. Укажите имя бота. 4. Укажите имя пользователя (username), оканчивающееся на bot, например lunacars_health_bot. 5. Выполните команду /token и сохраните полученный токен (рисунок 23).

Пример ответных сообщений от бота
Пример ответных сообщений от бота

Получение идентификатора чата#

1. Откройте в браузере страницу:

https://api.telegram.org/botТокен_Бота/getUpdates

где Токен_Бота — токен, полученный на предыдущем шаге.

2. Если ответ пустой, отправьте боту любое сообщение и обновите страницу.

3. В ответе найдите поле chat.id. Его значение необходимо указать в переменной GRAFANA_TG_CHAT_ID (рисунок 24).

Пример получения chat.id
Пример получения chat.id

После настройки Grafana автоматически отправляет уведомления о срабатывании правил оповещения в указанный чат Telegram (рисунок 25).

Пример сообщения Grafana
Пример сообщения Grafana

Grafana отправляет следующие уведомления:

  • о недоступности сервиса — сообщение содержит название сервиса и описание ошибки;
  • о восстановлении сервиса — сообщение содержит название сервиса, описание ошибки и отметку FIXED.

Время в сообщении соответствует моменту срабатывания правила оповещения.