Настройка Grafana#
Grafana визуализирует метрики, которые собирает Prometheus. После подключения источника данных Grafana строит графики, панели мониторинга и диагностические представления для контроля состояния платформы и инфраструктуры.
Подключение источника данных Prometheus#
Prometheus можно подключить к Grafana двумя альтернативными способами: вручную через графическую консоль или автоматически через файл инициализации (provisioning). Выберите один способ подключения.
Совет
Если Grafana уже настроена средствами управления конфигурацией, используйте способ с файлом инициализации.
Подключение через графическую консоль#
Для ручного подключения выполните следующие действия на узле мониторинга:
Откройте графическую консоль Grafana:
http://<monitoring_host>:3000
Выполните вход с использованием учетных данных администратора.
Для новой установки действуют следующие учетные данные:
название учетной записи:
admin;пароль:
admin.
После первого входа Grafana предложит изменить пароль администратора.
Откройте раздел .
Нажмите кнопку Add data source.
Выберите источник данных Prometheus.
Заполните параметры подключения:
Name:
Prometheus;Prometheus server URL:
http://localhost:9090.
Нажмите кнопку Save & test.
Подключение через файл инициализации#
Файл инициализации (provisioning) Grafana позволяет автоматически подключить источник данных Prometheus.
Используйте постоянный идентификатор uid: prometheus, если панели мониторинга импортируются из файлов JSON и ссылаются на источник данных по uid.
Для автоматического подключения выполните следующие действия на узле мониторинга:
Создайте каталог для файлов инициализации:
sudo install -d -o root -g grafana -m 0750 /etc/grafana/provisioning/datasources
Создайте файл
/etc/grafana/provisioning/datasources/prometheus.ymlна основе примера:--- apiVersion: 1 datasources: - name: Prometheus uid: prometheus type: prometheus access: proxy url: http://127.0.0.1:9090 isDefault: true editable: false
Перезапустите Grafana:
sudo systemctl restart grafana-server
Проверьте состояние сервиса:
sudo systemctl status grafana-server
Сервис должен находиться в состоянии
active (running).
Проверка источника данных#
Убедитесь, что Grafana получает данные из Prometheus.
Откройте раздел .
Выберите источник данных Prometheus.
Введите в поле запроса PromQL выражение:
up
Нажмите кнопку Run query.
В результате Grafana должна показать список целей сбора, настроенных в Prometheus.
Если запрос не возвращает результаты, проверьте настройки источника данных и состояние сервиса Prometheus.
Рекомендуемая структура панелей мониторинга#
Для контроля состояния платформы создайте несколько отдельных панелей мониторинга. Разделение данных по функциональным областям упрощает анализ состояния платформы и поиск неисправностей.
Создайте следующие панели мониторинга:
Панель |
Назначение |
|---|---|
Обзор платформы |
Общее состояние компонентов платформы |
Automation Controller |
Контроль выполнения заданий, их состояний и использования емкости узлов |
Обработка событий |
Контроль очередей Redis и скорости обработки событий |
Private Automation Hub |
Контроль работы Private Automation Hub и операций с контентом автоматизации |
Инфраструктура |
Контроль ресурсов узлов платформы |
Сервисы данных |
Контроль PostgreSQL и Redis |
Проверки доступности |
Контроль доступности Gateway, Event-Driven Automation и Private Automation Hub API |
Панель «Обзор платформы»#
Панель помогает оперативно оценивать общее состояние платформы. На основной странице мониторинга должны быть следующие показатели:
доступность Automation Controller;
доступность Private Automation Hub;
доступность Event-Driven Automation;
доступность Gateway;
количество активных сигналов оповещения;
количество выполняемых и ожидающих заданий;
состояние очереди событий Redis.
Добавьте следующие запросы PromQL:
Доступность источников данных Prometheus:
up
Запрос возвращает состояние целей сбора метрик. Значение
1означает, что источник доступен, значение0означает, что Prometheus не смог получить от него данные.Результат проверок доступности через
blackbox_exporter:probe_success{job=~"aa_blackbox.*"}Значение
1означает успешную проверку, значение0означает ошибку доступности проверяемого адреса.Количество активных сигналов оповещения:
count(ALERTS{alertstate="firing"})Запрос считает сигналы оповещения в состоянии
firingпо служебной метрике PrometheusALERTS. Если активных сигналов нет, запрос не возвращает данных, поэтому настройте панель так, чтобы отсутствие данных отображалось как0.Количество выполняемых заданий:
awx_running_jobs_total
Количество ожидающих заданий:
awx_pending_jobs_total
Размер очереди событий Redis:
callback_receiver_events_queue_size_redis
Подробное описание запросов о заданиях и очереди событий приведено в описаниях панелей «Automation Controller» и «Обработка событий».
Панель «Automation Controller»#
Панель помогает контролировать выполнение заданий и загрузку Automation Controller. На панели мониторинга должны быть следующие показатели:
использование емкости узлов;
количество выполняемых заданий;
количество ожидающих заданий;
количество неуспешных заданий;
количество заблокированных задач.
Добавьте следующие запросы PromQL:
Использование емкости узлов Automation Controller:
1 - (awx_instance_remaining_capacity / awx_instance_capacity)
Запрос показывает долю занятой емкости узлов. Чем ближе значение к
1, тем меньше свободной емкости остается для запуска новых заданий.Ожидающие задания:
awx_pending_jobs_total
Запрос показывает количество заданий, ожидающих запуска. Рост значения может указывать на нехватку емкости, проблемы с исполняющими узлами или неправильное распределение заданий по группам экземпляров.
Выполняемые задания:
awx_running_jobs_total
Запрос показывает количество заданий, которые платформа выполняет в текущий момент. Этот показатель анализируйте вместе с емкостью узлов и загрузкой процессора.
Неуспешные задания за последние 15 минут:
increase(awx_status_total{status=~"failed|error"}[15m])Запрос показывает прирост заданий в состояниях
failedиerrorза последние 15 минут. Резкий рост значения может указывать на проблемы с шаблонами заданий, учетными данными, доступностью целевых узлов или исполняющими окружениями.Заблокированные задачи:
task_manager_tasks_blocked
Запрос показывает количество задач, которые не могут быть запущены из-за ограничений планировщика, зависимостей или нехватки ресурсов.
Панель «Обработка событий»#
Панель помогает контролировать обработку событий заданий. Во время выполнения заданий Automation Controller формирует события, временно сохраняет их в Redis, а затем записывает в базу данных. На панели мониторинга должны быть следующие показатели:
размер очереди событий Redis;
среднее время обработки события;
количество ошибок пакетной записи событий;
количество событий, записанных в базу данных.
Добавьте следующие запросы PromQL:
Размер очереди событий Redis:
callback_receiver_events_queue_size_redis
Запрос показывает количество событий заданий, ожидающих обработки в Redis. Постоянный рост значения означает, что система не успевает обрабатывать поступающие события.
Среднее время обработки события:
callback_receiver_event_processing_avg_seconds
Запрос показывает среднее время обработки события в секундах. Рост значения может указывать на деградацию callback receiver или PostgreSQL.
Ошибки пакетной записи событий:
increase(callback_receiver_batch_events_errors[10m])
Запрос показывает количество ошибок пакетной записи событий за последние 10 минут. Ненулевое значение требует проверки журналов callback receiver и состояния PostgreSQL.
События, записанные в базу данных:
callback_receiver_events_insert_db
Запрос показывает количество событий, сохраненных в базе данных. Этот показатель помогает оценить интенсивность записи событий и сопоставить ее с нагрузкой на PostgreSQL.
Панель «Private Automation Hub»#
Панель помогает контролировать работоспособность Private Automation Hub. На панели мониторинга должны быть следующие показатели:
доступность узлов Private Automation Hub;
количество ответов HTTP по кодам состояния;
ошибки импорта коллекций;
ошибки выгрузки артефактов;
использование памяти процессом Private Automation Hub.
Добавьте следующие запросы PromQL:
Доступность узлов Private Automation Hub:
up{job="aa_hub_health"}Запрос показывает доступность каждого узла Private Automation Hub, подключенного к Prometheus через задание
aa_hub_health.Скорость ответов HTTP по кодам состояния:
sum by (status) (rate(django_http_responses_total_by_status_total{job="aa_hub"}[5m]))Запрос показывает скорость ответов HTTP Private Automation Hub по кодам состояния за последние 5 минут. Рост количества ответов
5xxможет указывать на ошибки приложения или проблемы с зависимыми сервисами.Ошибки импорта коллекций:
increase(galaxy_api_collection_import_failures_total{job="aa_hub"}[30m])Запрос показывает количество ошибок импорта коллекций за последние 30 минут. Рост значения может указывать на проблемы с содержимым коллекций, хранилищем или внешними источниками синхронизации.
Ошибки выгрузки артефактов:
increase(galaxy_api_collection_artifact_download_failures_total{job="aa_hub"}[30m])Запрос показывает количество ошибок выгрузки артефактов за последние 30 минут. Этот показатель анализируйте вместе с HTTP-ошибками и журналами Private Automation Hub.
Использование памяти процессом Private Automation Hub:
process_resident_memory_bytes{job="aa_hub"}Запрос показывает объем оперативной памяти, который потребляет процесс Private Automation Hub.
Панель «Инфраструктура»#
Панель помогает контролировать состояние узлов платформы. На панели мониторинга должны быть следующие показатели:
загрузка процессора;
использование оперативной памяти;
использование файловых систем;
нагрузка на устройства хранения данных;
доступность
node_exporter.
Добавьте следующие запросы PromQL:
Загрузка процессора:
1 - avg by (instance) (rate(node_cpu_seconds_total{job="aa_nodes",mode="idle"}[5m]))Запрос показывает среднюю загрузку процессора по каждому узлу. Чем ближе значение к
1, тем выше загрузка процессора.Использование оперативной памяти:
1 - node_memory_MemAvailable_bytes{job="aa_nodes"} / node_memory_MemTotal_bytes{job="aa_nodes"}Запрос показывает долю занятой оперативной памяти. Высокое значение в течение длительного времени может указывать на нехватку памяти.
Использование файловых систем:
1 - node_filesystem_avail_bytes{job="aa_nodes",fstype!~"tmpfs|overlay|squashfs"} / node_filesystem_size_bytes{job="aa_nodes",fstype!~"tmpfs|overlay|squashfs"}Запрос показывает долю занятого пространства в файловых системах. Рекомендуется исключать временные и служебные файловые системы, например
tmpfs,overlayиsquashfs.Нагрузка на устройства хранения данных:
rate(node_disk_io_time_seconds_total{job="aa_nodes"}[5m])Запрос показывает долю времени, в течение которого устройство хранения данных было занято операциями ввода-вывода. Высокие значения могут указывать на дисковую нагрузку, влияющую на производительность платформы.
Доступность
node_exporter:up{job="aa_nodes"}Запрос показывает, получает ли Prometheus метрики операционной системы с узлов платформы.
Панель «Сервисы данных»#
Панель помогает контролировать PostgreSQL и Redis. На панели мониторинга должны быть следующие показатели:
доступность PostgreSQL;
количество подключений PostgreSQL;
доступность Redis;
использование памяти Redis.
Добавьте следующие запросы PromQL:
Доступность PostgreSQL:
up{job="aa_postgres"}Запрос показывает, получает ли Prometheus метрики PostgreSQL.
Доля занятых подключений PostgreSQL:
sum(pg_stat_activity_count{job="aa_postgres"}) by (instance) / sum(pg_settings_max_connections{job="aa_postgres"}) by (instance)Запрос показывает отношение текущего количества подключений к максимальному количеству подключений PostgreSQL. Рост значения может указывать на риск исчерпания лимита подключений.
Доступность Redis:
redis_up{job="aa_redis"}Запрос показывает доступность Redis с точки зрения
redis_exporter. Значение1означает, чтоredis_exporterуспешно подключается к Redis.Использование памяти Redis:
redis_memory_used_bytes{job="aa_redis"}Запрос показывает объем памяти, который потребляет Redis.
Доля занятой памяти Redis при заданном
maxmemory:redis_memory_used_bytes{job="aa_redis"} / redis_memory_max_bytes{job="aa_redis"}Запрос показывает отношение памяти, которую потребляет Redis, к настроенному ограничению
maxmemory. Используйте этот запрос только для экземпляров Redis, у которыхredis_memory_max_bytesбольше0.
Панель «Проверки доступности»#
Панель помогает контролировать доступность сервисов платформы. На панели мониторинга должны быть следующие проверки:
Gateway;
Event-Driven Automation;
API Private Automation Hub.
Список соответствует целям, настроенным в заданиях aa_blackbox_http и aa_blackbox_gateway конфигурации Prometheus.
При необходимости добавьте в задание aa_blackbox_http дополнительные цели, например графическую консоль Private Automation Hub или внешние интеграции, к которым обращается платформа, – их результаты появятся на панели автоматически.
Добавьте следующие запросы PromQL:
Результаты всех проверок HTTP:
probe_success{job=~"aa_blackbox.*"}Запрос показывает результат проверок
blackbox_exporter. Значение1означает успешную проверку, значение0означает ошибку.Время отклика проверяемых сервисов:
probe_duration_seconds{job=~"aa_blackbox.*"}Запрос показывает длительность проверки в секундах. Рост значения может указывать на сетевые проблемы или деградацию проверяемого сервиса.
Коды HTTP-ответов:
probe_http_status_code{job=~"aa_blackbox.*"}Запрос показывает код HTTP, полученный при проверке. Коды
4xxи5xxтребуют дополнительного анализа.
Проверка настройки Grafana#
После завершения настройки убедитесь, что Grafana получает данные от Prometheus.
Откройте раздел .
Выполните проверочные запросы PromQL.
Используйте следующие запросы:
up– показывает состояние целей сбора метрик Prometheus. Для доступных целей значение равно1.awx_system_info– проверяет наличие системных метрик Automation Controller. Если запрос возвращает данные, Prometheus получает метрики контроллера.awx_pending_jobs_total– показывает количество заданий Automation Controller, ожидающих запуска. Запрос должен возвращать временной ряд после подключения метрик Automation Controller.redis_up– показывает доступность Redis с точки зренияredis_exporter. Для доступного Redis значение равно1.
Убедитесь, что каждый запрос возвращает один или несколько временных рядов.
Откройте созданные панели мониторинга.
Убедитесь, что графики содержат актуальные значения.
После успешной проверки Grafana готова к использованию для мониторинга платформы.