Настройка Grafana#

Grafana визуализирует метрики, которые собирает Prometheus.

При установке системы мониторинга с помощью kube-prometheus-stack Helm развертывает Grafana автоматически и подключает источник данных Prometheus.

Получение доступа к Grafana#

Grafana работает в пространстве имен monitoring.

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

  1. Убедитесь, что Grafana pod запущен:

    kubectl -n monitoring get pods \
      -l app.kubernetes.io/name=grafana
    

    Grafana pod должен находиться в состоянии Running.

  2. Получите название секрета с учетными данными Grafana:

    kubectl -n monitoring get secret | grep grafana
    
  3. Получите пароль администратора:

    kubectl -n monitoring get secret kube-prometheus-stack-grafana \
      -o jsonpath="{.data.admin-password}" | base64 -d
    
  4. Настройте локальную переадресацию порта:

    kubectl -n monitoring port-forward svc/kube-prometheus-stack-grafana 3000:80
    
  5. Откройте графическую консоль Grafana, располагающуюся по адресу http://localhost:3000.

  6. Выполните вход:

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

    • пароль: значение, полученное ранее.

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

После входа убедитесь, что Grafana получает данные от Prometheus.

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

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

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

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

  4. Убедитесь, что отображается сообщение, подтверждающее успешное подключение Grafana к Prometheus:

    Successfully queried the Prometheus API.
    

Рекомендуемая структура панелей мониторинга#

Для контроля состояния платформы создайте отдельные панели мониторинга для различных групп компонентов. Такое разделение помогает быстро определять источник проблемы и упрощает анализ производительности системы.

Обзор платформы#

Используйте панель общего состояния платформы как основную страницу мониторинга. На панели мониторинга должны быть следующие показатели:

  • количество выполняемых заданий;

  • количество ожидающих заданий;

  • количество неуспешных заданий;

  • количество активных узлов;

  • состояние Gateway;

  • состояние Event-Driven Automation;

  • состояние Private Automation Hub.

Добавьте следующие запросы PromQL:

  • Выполняемые задания:

    awx_status_total{status="running"}
    

    Запрос возвращает текущее количество выполняемых заданий.

  • Ожидающие задания:

    awx_pending_jobs_total
    

    Запрос возвращает количество заданий, ожидающих запуска.

  • Неуспешные задания:

    awx_status_total{status="failed"}
    

    Запрос возвращает количество заданий со статусом failed.

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

Automation Controller#

Используйте панель Automation Controller для анализа нагрузки и производительности платформы. На панели мониторинга должны быть следующие показатели:

  • емкость узлов;

  • загрузка очередей;

  • количество выполняемых заданий;

  • количество ожидающих заданий;

  • распределение заданий по состояниям.

Добавьте следующие запросы PromQL:

  • Доступная емкость узлов:

    awx_instance_remaining_capacity
    

    Запрос показывает количество ресурсов, доступных для запуска новых заданий.

  • Общая емкость узлов:

    awx_instance_capacity
    

    Запрос показывает максимальную емкость каждого узла Automation Controller.

  • Использование емкости:

    100 * (
      1 - (
        awx_instance_remaining_capacity
        /
        awx_instance_capacity
      )
    )
    

    Запрос возвращает процент использованной емкости узлов.

Обработка событий#

Используйте панель обработки событий для контроля работы Redis и внутренних очередей Automation Controller. На панели мониторинга должны быть следующие показатели:

  • размер очереди событий;

  • скорость обработки событий;

  • количество ошибок обработки.

Добавьте следующие запросы PromQL:

  • Размер очереди событий:

    callback_receiver_events_queue_size_redis
    

    Запрос показывает количество событий, ожидающих обработки.

  • Среднее время обработки события:

    callback_receiver_event_processing_avg_seconds
    

    Запрос показывает среднее время обработки одного события.

  • Ошибки обработки за последние 30 минут:

    increase(callback_receiver_batch_events_errors[30m])
    

    Запрос показывает количество ошибок обработки за последние 30 минут.

Private Automation Hub#

Используйте панель Private Automation Hub для контроля работы сервиса автоматизации контента. На панели мониторинга должны быть следующие показатели:

  • количество запросов HTTP;

  • количество ошибок приложения;

  • активность импорта коллекций.

Добавьте следующие запросы PromQL:

  • Скорость обработки запросов HTTP:

    rate(django_http_responses_total_by_status_total[5m])
    

    Запрос показывает скорость обработки запросов HTTP.

  • Скорость появления ошибок уровня 5xx:

    rate(
      django_http_responses_total_by_status_total{
        status=~"5.."
      }[5m]
    )
    

    Запрос показывает скорость появления ошибок приложения.

  • Ошибки импорта коллекций:

    increase(galaxy_api_collection_import_failures_total[30m])
    

    Запрос показывает количество ошибок импорта коллекций за последние 30 минут. Рост значения может указывать на проблемы с содержимым коллекций, хранилищем или внешними источниками синхронизации.

Инфраструктура#

Используйте панель инфраструктуры для контроля ресурсов узлов Kubernetes. На панели мониторинга должны быть следующие показатели:

  • загрузка процессора;

  • использование памяти;

  • использование файловых систем;

  • сетевая активность.

Добавьте следующие запросы PromQL:

  • Загрузка процессора:

    100 * (
      1 -
      avg by(instance)(
        rate(
          node_cpu_seconds_total{
            mode="idle"
          }[5m]
        )
      )
    )
    

    Запрос показывает процент использования процессора.

  • Использование памяти:

    100 * (
      1 -
      (
        node_memory_MemAvailable_bytes
        /
        node_memory_MemTotal_bytes
      )
    )
    

    Запрос показывает процент использования оперативной памяти.

  • Использование файловых систем:

    100 * (
      1 -
      (
        node_filesystem_avail_bytes{fstype!~"tmpfs|overlay|squashfs"}
        /
        node_filesystem_size_bytes{fstype!~"tmpfs|overlay|squashfs"}
      )
    )
    

    Запрос показывает процент использования файловых систем. Рекомендуется исключать временные и служебные файловые системы, например tmpfs, overlay и squashfs: на узлах Kubernetes таких монтирований много, и без фильтра панель зашумляется.

Сервисы данных#

Используйте панель сервисов данных для контроля PostgreSQL и Redis.

Метрики PostgreSQL и Redis предоставляют экспортеры postgres_exporter и redis_exporter. Helm-чарт kube-prometheus-stack не устанавливает эти экспортеры, поэтому разверните их дополнительно, например с помощью Helm-чартов prometheus-community/prometheus-postgres-exporter и prometheus-community/prometheus-redis-exporter, указав в параметрах установки адреса сервисов данных Astra Automation. Без экспортеров приведенные ниже запросы возвращают пустой результат.

На панели мониторинга должны быть следующие показатели:

  • количество подключений PostgreSQL;

  • использование памяти Redis;

  • доступность сервисов.

Добавьте следующие запросы PromQL:

  • Подключения PostgreSQL:

    pg_stat_activity_count
    

    Запрос показывает текущее количество подключений к PostgreSQL.

  • Использование памяти Redis:

    redis_memory_used_bytes
    

    Запрос показывает текущий объем памяти, который потребляет Redis.

Проверки доступности#

Используйте панель проверок доступности для контроля результатов работы blackbox_exporter. На панели мониторинга должны быть следующие показатели:

  • состояние Gateway;

  • состояние Event-Driven Automation;

  • время ответа сервисов.

Добавьте следующие запросы PromQL:

  • Результат проверки:

    probe_success
    

    Значение 1 означает успешную проверку. Значение 0 означает ошибку проверки.

  • Время ответа:

    probe_duration_seconds
    

    Запрос показывает длительность выполнения проверки.

Проверка настройки Grafana#

После создания панелей убедитесь, что Grafana получает корректные данные.

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

  1. Откройте любую созданную панель.

  2. Перейдите в режим редактирования визуализации.

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

    up
    
  4. Убедитесь, что запрос возвращает данные.

  5. Проверьте наличие данных для следующих метрик:

    • awx_status_total;

    • awx_instance_capacity;

    • callback_receiver_events_queue_size_redis;

    • probe_success.

Если Grafana корректно показывает данные, ее настройка завершена.