Мониторинг СУБД Postgres весьма давно стал стандартным инструментом в поддержке, и такой функционал есть у любого, уважающего себя, мониторинга. Но в данном случае я покажу настройку такого мониторинга на примере системы Promtheus в связке с Grafana и Postgres Exporter.
В данной статье не буду рассматривать установку самих PostgreSQL, Grafana и Prometheus. Тут будет описана только установка Exporter и настройка всей связки в целом для получения результата.
Пожалуй начну:
Для начала устанавливаем postgres prometheus exporter, он будет подключаться к нашему postgres и собирать его метрики для prometheus:
Для начала заходим на Github проекта по ссылке https://github.com/prometheus-community/postgres_exporter в разделе «releases» находим свежий релиз и копируем ссылку на нужный нам архив, и скачиваем его на машину с установленным Postgres (в моем случае используется Ubuntu 20.04 в 64битной архитектуре, поэтому дистрибутив для linux-amd64):
wget https://github.com/prometheus-community/postgres_exporter/releases/download/v0.12.0/postgres_exporter-0.12.0.linux-amd64.tar.gz
Распаковываем скачанный архив:
tar -xf postgres_exporter-0.12.0.linux-amd64.tar.gz
И копируем его бинарник в /usr/local/bin
cp postgres_exporter-0.12.0.linux-amd64/postgres_exporter /usr/local/bin/
Назначаем владельцем файла пользователя postgres
chown -R postgres:postgres /usr/local/bin/postgres_exporter
Далее создаем сценарий запуска сервиса postgres_exporter, для этого создаем файл /etc/systemd/system/postgres_exporter.service
со следующим содержимым:
[Unit]
Description=Prometheus PostgreSQL Exporter
After=network.target
[Service]
Type=simple
Restart=always
User=postgres
Group=postgres
Environment=DATA_SOURCE_NAME="user=postgres host=/var/run/postgresql/ sslmode=disable"
ExecStart=/usr/local/bin/postgres_exporter
[Install]
WantedBy=multi-user.target
Перечитываем сервисы, запускаем и помечаем для автозапуска:
systemctl daemon-reload
systemctl start postgres_exporter.service
systemctl enable postgres_exporter.service
Проверяем что сервис запустился:
systemctl status postgres_exporter
Картина должна быть примерно такая:
Если на вашей машине запущен и работает Firewall, то дополнительно надо разрешить входящие подключения на порт 9187/tcp с адреса вашего prometheus
Переходим к настройке Prometheus
Открываем для редактирования ваш prometheus.yml и добавляем в конфиг блок для сбора метрик с нашего postgres:
scrape_configs:
.......
- job_name: 'postgres_exporter'
scrape_interval: 15s
static_configs:
- targets: ['SERVER-IP:9187']
Сохраняем и перезапускаем Prometheus.
Проверяем что в http://prometheus_ip:9090/targets появился новый таргет:
Добавляем дашборд в графану:
Полезные статьи по теме:
- Мониторинг Kubernetes кластера снаружи с помощью Prometheus
- ICMP мониторинг с помощью Prometheus и Blackbox Exporter Linux
Отправить ответ