Настройка Grafana#

Grafana визуализирует метрики, которые собирает Prometheus. После подключения источника данных Grafana строит графики, панели мониторинга и диагностические представления для контроля состояния платформы и инфраструктуры.

Подключение источника данных Prometheus#

Prometheus можно подключить к Grafana двумя альтернативными способами: вручную через графическую консоль или автоматически через файл инициализации (provisioning). Выберите один способ подключения.

Совет

Если Grafana уже настроена средствами управления конфигурацией, используйте способ с файлом инициализации.

Подключение через графическую консоль#

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

  1. Откройте графическую консоль Grafana:

    http://<monitoring_host>:3000
    
  2. Выполните вход с использованием учетных данных администратора.

    Для новой установки действуют следующие учетные данные:

    • название учетной записи: admin;

    • пароль: admin.

    После первого входа Grafana предложит изменить пароль администратора.

  3. Откройте раздел Connections ‣ Data sources.

  4. Нажмите кнопку Add data source.

  5. Выберите источник данных Prometheus.

  6. Заполните параметры подключения:

    • Name: Prometheus;

    • Prometheus server URL: http://localhost:9090.

  7. Нажмите кнопку Save & test.

Подключение через файл инициализации#

Файл инициализации (provisioning) Grafana позволяет автоматически подключить источник данных Prometheus. Используйте постоянный идентификатор uid: prometheus, если панели мониторинга импортируются из файлов JSON и ссылаются на источник данных по uid.

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

  1. Создайте каталог для файлов инициализации:

    sudo install -d -o root -g grafana -m 0750 /etc/grafana/provisioning/datasources
    
  2. Создайте файл /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
    
  3. Перезапустите Grafana:

    sudo systemctl restart grafana-server
    
  4. Проверьте состояние сервиса:

    sudo systemctl status grafana-server
    

    Сервис должен находиться в состоянии active (running).

Проверка источника данных#

Убедитесь, что Grafana получает данные из Prometheus.

  1. Откройте раздел Explore.

  2. Выберите источник данных Prometheus.

  3. Введите в поле запроса PromQL выражение:

    up
    
  4. Нажмите кнопку 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 по служебной метрике Prometheus ALERTS. Если активных сигналов нет, запрос не возвращает данных, поэтому настройте панель так, чтобы отсутствие данных отображалось как 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.

  1. Откройте раздел Explore.

  2. Выполните проверочные запросы 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.

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

  4. Откройте созданные панели мониторинга.

  5. Убедитесь, что графики содержат актуальные значения.

После успешной проверки Grafana готова к использованию для мониторинга платформы.