Мониторинг
Раздел описывает инструменты мониторинга приложения
Мониторинг meta: pg_stat_statements
Включение мониторинга
- В конфигурационном файле postgresql.conf указать:
shared_preload_libraries='pg_stat_statements' - Перезапустить сервис
- Включить расширение под пользователем с ролью
pg_read_all_stats:CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
Настройка в docker: docker-compose.yml
Настройка в 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;"
Отключение мониторинга
- Выключить расширение под пользователем с ролью pg_read_all_stats
DROP EXTENSION pg_stat_statements; - Убрать параметр
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-mqFLOWER_CMD_ARGS=null- дополнительные аргументы командной строки для celery flower