Мониторинг Postgres с помощью Prometheus+Grafana

postgresql+prometheus
postgresql+prometheus

Мониторинг СУБД 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 появился новый таргет:

Добавляем дашборд в графану:

Переходим в графану и импортируем дашборд с id 9628 или любой другой.

В качестве источника данных указываем наш Prometheus и любуемся графиками

Полезные статьи по теме:

2 уведомления

  1. ICMP мониторинг с помощью Prometheus и Blackbox Exporter Linux - Sysadmin talks
  2. Мониторинг Kubernetes кластера снаружи с помощью Prometheus - Sysadmin talks

Отправить ответ

Ваш e-mail не будет опубликован.


*