Skip to content

Мониторинг

Раздел описывает инструменты мониторинга приложения

Мониторинг meta: pg_stat_statements

Официальная документация

Включение мониторинга

  1. В конфигурационном файле postgresql.conf указать: shared_preload_libraries='pg_stat_statements'
  2. Перезапустить сервис
  3. Включить расширение под пользователем с ролью pg_read_all_stats: CREATE EXTENSION IF NOT EXISTS pg_stat_statements;

Настройка в docker: docker-compose.yml

services:
  postgres:
    command:
      postgres  -c shared_preload_libraries='pg_stat_statements'

Настройка в kubernetes/bitnami/postgresql: values.yaml

postgres:
  auth:
    postgresPassword: ...
  primary:
    extendedConfiguration: |
      shared_preload_libraries = 'pg_stat_statements'
    initdb:
      scripts:
        statistic.sh: |
          #!/bin/sh
          export PGPASSWORD=$POSTGRES_POSTGRES_PASSWORD
          psql -U postgres -d meta -c "create extension if not exists pg_stat_statements;"

Отключение мониторинга

  1. Выключить расширение под пользователем с ролью pg_read_all_stats DROP EXTENSION pg_stat_statements;
  2. Убрать параметр shared_preload_libraries из конфигурационного файла postgresql.conf

Использование

SELECT * FROM pg_stat_statements;

Пример запроса для вывода 20 самых медленных запросов:

SELECT
    query,
    round(total_exec_time::numeric/1000, 2) AS total_time_s,
    round(min_exec_time::numeric/1000, 2) AS min_time_s,
    round(max_exec_time::numeric/1000, 2) AS max_time_s,
    round(mean_exec_time::numeric/1000, 2) AS mean_time_s,
    calls,
    round((100 * total_exec_time / sum(total_exec_time::numeric) OVER ())::numeric, 2)
      AS usage_percentage
FROM
    pg_stat_statements
ORDER BY total_time_s DESC
LIMIT 20;

Мониторинг celery: flower

Мониторинг Celery осуществляется через приложение flower, полный список настроек доступен в официальной документации.

При запуске flower смотрит на следующие переменные окружения:

  • EXECUTOR__BROKER_URL = secret:executor-broker-url: адрес брокера сообщений redis/sentinel или rabbit-mq
  • FLOWER_CMD_ARGS = null - дополнительные аргументы командной строки для celery flower