Как следить за PostgreSQL с помощью Prometheus и Grafana на Ubuntu 22.04

В этом руководстве вы настроите платформы мониторинга Prometheus и Grafana для мониторинга сервера баз данных PostgreSQL. Вы установите и настроите postgres_exporter для сбора матриц сервера PostgreSQL и их отображения на сервере Prometheus. В конце этого урока вы настроите дашборд для мониторинга сервера PostgreSQL с помощью платформы визуализации данных Grafana.

Предварительные условия

Чтобы завершить этот учебник, вам понадобятся следующие требования:

  • Сервер с установленными на нем Prometheus и Grafana.
  • Целевой сервер с установленным сервером баз данных PostgreSQL.
  • Пользователь, не являющийся пользователем root, с правами администратора sudo/root.

Ниже приведены руководства по установке каждого компонента.

Как установить Prometheus и платформу мониторинга Grafana на сервер Ubuntu 22.04.
Как установить сервер баз данных PostgreSQL на Ubuntu 22.04 Server.

Теперь давайте приступим к работе, когда все предварительные условия выполнены и установлены.

Конфигурация сервера PostgreSQL

Сервер PostgreSQL предоставляет два различных метода шифрования паролей: md5 и scram-sha-256. Оба способа шифрования паролей могут быть настроены в конфигурационном файле PostgreSQL ‘postgresql.conf’.

В этом шаге вы настроите PostgreSQL на использование ‘scram-sha-256‘ Шифрование паролей.

В данном примере используется сервер PostgreSQL v14, установленный на системе Ubuntu, поэтому файлы конфигурации PostgreSQL хранятся в каталоге ‘/etc/postgresql/14/main’.

Переместитесь в рабочий каталог в директорию ‘/etc/postgresql/14/main‘ каталог и откройте файл конфигурации ‘postgresql.conf’ с помощью команды редактора nano.

cd /etc/postgresql/14/main
sudo nano postgresql.conf

Снимите комментарий с опции ‘пароль_шифрования‘ и измените значение на ‘scram-sha-256‘.

password_encryption = scram-sha-256     # scram-sha-256 or md5

Сохраните файл и выйдите из редактора, когда закончите.

шифрование пароля в scram-sha-256

Далее откройте файл конфигурации ‘pg_hba.conf‘ с помощью команды редактора nano, приведенной ниже. Файл ‘pg_hba.conf‘ — это конфигурация, в которой определяются методы парольной аутентификации для хостов или IP-адресов.

sudo nano pg_hba.conf

Изменение методов аутентификации по умолчанию для хоста ‘127.0.0.1/32‘ и ‘::1/128‘ к ‘scram-sha-256‘. Таким образом, метод аутентификации ‘scram-sha-256″ будет использоваться для каждого клиентского соединения с сервером PostgreSQL ‘127.0.0.1‘.

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256

Сохраните и выйдите из редактора, когда закончите.

аутентификация пользователей

Наконец, запустите приведенную ниже командную утилиту systemctl, чтобы перезапустить службу PostgreSQL и применить изменения.

sudo systemctl restart postgresql

После того как сервер PostgreSQL настроен, установите ‘postgres_exporter’, который позволяет собирать метрики сервера PostgreSQL.

Загрузка postgres_exporter

В качестве источника данных используется ‘postgres_exporter‘ — это экспортер prometheus для метрик сервера PostgreSQL. Он поддерживает множество версий PostgreSQL, таких как 9.4, 9.5, 9.6, 10, 11, 12, 13 и 14. Сайт ‘postgres_exporter‘ — это приложение для работы с одним бинарным файлом, написанное в основном на языке Go.

В этих шагах вы загрузите ‘postgres_exporter’ на сервер PostgreSQL.

Для начала выполните следующую команду, чтобы создать нового системного пользователя ‘postgres_exporter’ на вашем сервере PostgreSQL.

sudo useradd -M -r -s /sbin/nologin postgres_exporter

После этого загрузите двоичный файл ‘postgres_exporter’ с помощью команды wget, приведенной ниже. Обязательно проверьте ‘postgres_exporter’ Страница на GitHub, чтобы получить последнюю версию ‘postgres_exporter’. На момент написания этой статьи последняя версия postgres_exporter — v0.12.

wget https://github.com/prometheus-community/postgres_exporter/releases/download/v0.12.0-rc.0/postgres_exporter-0.12.0-rc.0.linux-amd64.tar.gz

Далее выполните приведенную ниже команду tar для извлечения пакета postgres_exporter. Затем переместите извлеченную директорию postgres_exporter в каталог ‘/opt/postgres_exporter‘.

tar xvf postgres_exporter*.tar.gz
mv postgres_exporter*/ /opt/postgres_exporter

Наконец, проверьте список файлов и каталогов в каталоге ‘postgres_exporter’. Вы должны увидеть ‘postgres_exporter’ доступен двоичный файл.

ls /opt/postgres_exporter

скачать postgres_exporter

С помощью ‘postgres_exporter‘, загрузите двоичный файл и настройте ‘postgres_exporter’ для сбора метрик сервера PostgreSQL.

Настройка postgres_exporter

На этом шаге вы настроите ‘postgres_exporter’ для сбора метрик PostgreSQL, что можно сделать, задав пользователя и пароль PostgreSQL. Также вы установите и настроите службу systemd для ‘postgres_exporter’.

С помощью ‘postgres_exporter‘, вы можете выставлять метрики для всех доступных баз данных на сервере PostgreSQL или выставлять определенные базы данных, которые вы хотите отслеживать. Вы также можете использовать безопасный режим SSL или не-SSL.

Переместить текущий рабочий каталог в ‘/opt/postgres_exporter’. с помощью команды cd, приведенной ниже.

cd /opt/postgres_exporter

Теперь создайте новый файл ‘.env‘ с помощью приведенной ниже команды редактора nano.

nano .env

Добавьте в файл следующие строки. Также не забудьте изменить данные о пользователе, пароле и хосте PostgreSQL. С помощью этого ‘.env‘ файл, вы будете скрести и собирать метрики PostgreSQL из всех доступных баз данных. Вы также можете собирать метрики из определенной базы данных PostgreSQL, для этого необходимо настроить следующий файл конфигурации.

# Format
#DATA_SOURCE_NAME=postgresql://username:password@localhost:5432/postgres?sslmode=disable

# Monitor all databases via postgres_exporter
DATA_SOURCE_NAME=»postgresql://postgres:strongpostgrespassword@localhost:5432/?sslmode=disable»

# Monitor specific databases on the PostgreSQL server
# DATA_SOURCE_NAME=»postgresql://username:password@localhost:5432/database-name?sslmode=disable»

Сохраните файл и выйдите из редактора, когда закончите.

Далее выполните приведенную ниже команду chown, чтобы изменить права собственности на каталог ‘/opt/postgres_exporter’ на пользователя ‘postgres_exporter’.

sudo chown -R postgres_exporter: /opt/postgres_exporter

После этого выполните следующую команду, чтобы создать новый служебный файл systemd ‘/etc/systemd/system/postgres_exporter.service’. С его помощью вы можете легко управлять ‘postgres_exporter‘ с помощью командной утилиты systemctl.

sudo tee /etc/systemd/system/postgres_exporter.service[Unit]
Description=Prometheus exporter for Postgresql
Wants=network-online.target
After=network-online.target

[Service]
User=postgres_exporter
Group=postgres_exporter
WorkingDirectory=/opt/postgres_exporter
EnvironmentFile=/opt/postgres_exporter/.env
ExecStart=/opt/postgres_exporter/postgres_exporter —web.listen-address=:9187 —web.telemetry-path=/metrics
Restart=always

[Install]
WantedBy=multi-user.target
EOF

настроить экспортер postgres

Теперь выполните приведенную ниже команду systemctl, чтобы перезагрузить менеджер systemd и применить изменения.

sudo systemctl daemon-reload

После перезагрузки менеджера systemd запустите и включите службу ‘postgres_exporter’ с помощью приведенной ниже команды systemctl.

sudo systemctl start postgres_exporter
sudo systemctl enable postgres_exporter

Служба ‘postgres_exporter’ должна быть запущена и собирать метрики с сервера PostgreSQL. Кроме того, он должен быть включен и будет запускаться автоматически при загрузке.

Настройки systemd для postgres_exporter

Наконец, выполните приведенную ниже команду, чтобы проверить ‘postgres_exporter’ статус службы. Кроме того, убедитесь, что ‘postgres_exporter‘ запущен и включен.

sudo systemctl status postgres_exporter

Вы получите результат, похожий на этот — символ ‘postgres_exporter‘ служба запущена и включена.

postgres_exporter status

На данный момент ‘postgres_exporter’ работает на TCP-порту по умолчанию ‘9187‘ на сервере PostgreSQL. Это откроет доступ к метрикам PostgreSQL для сервера Prometheus, но перед этим вам также нужно настроить firewalld на сервере PostgreSQL.

Настройка брандмауэра

В этом шаге вы настроите брандмауэр на открытие порта по умолчанию ‘postgres_exporter’ — TCP 9187. После этого убедитесь, что метрика ‘postgres_exporter’ доступна через веб-браузер.

Для систем Ubuntu, использующих UFW в качестве брандмауэра, выполните следующую команду ufw, чтобы добавить порт 9187 в брандмауэре ufw. Затем перезагрузите брандмауэр, чтобы применить изменения.

sudo ufw allow 9187/tcp
sudo ufw reload

Теперь вы можете проверить список портов на UFW с помощью команды ufw, приведенной ниже.

sudo ufw status

Вы получите вывод, похожий на следующий — postgres_exporter порт 9187 добавляется в firewalld.

настройка брандмауэра

Для дистрибутивов на базе RHEL, использующих firewalld в качестве брандмауэра по умолчанию, выполните приведенную ниже команду firewall-cmd, чтобы добавить порт 9187 в firewalld. Затем перезагрузите firewalld, чтобы применить новые изменения.

sudo firewall-cmd --add-port=9187/tcp --permanent
sudo firewall-cmd --reload

После этого выполните следующую команду, чтобы убедиться, что порт postgres_exporter 9187 добавлен.

sudo firewall-cmd --list-ports

Теперь вы должны увидеть, что порт 9187 добавлен в брандмауэр.

Наконец, откройте веб-браузер и введите IP-адрес вашего сервера PostgreSQL, за которым следует ‘postgres_exporter‘ порт 9187 (i.e: http://192.168.5.21:9187/metrics).

Вы должны увидеть подробную информацию о метриках сервера PostgreSQL, собранную программой ‘postgres_exporter‘.

метрики pstgres_exporter

Когда брандмауэр настроен и ‘postgres_exporter’ доступен, добавьте ‘postgres_exporter’ в цель Prometheus ‘scrape_configs’.

Добавление postgres_exporter в Prometheus

Вернитесь на сервер Prometheus, затем откройте файл конфигурации Prometheus ‘/etc/prometheus/prometheus.yml‘ с помощью приведенной ниже команды редактора nano.

sudo nano /etc/prometheus/prometheus.yml

Под ‘scrape_configs‘, добавьте в файл следующие строки. В этом примере вы создадите новое задание для сбора метрик сервера PostgreSQL с именем ‘postgres_exporter‘, а целевым сервером PostgreSQL является ‘192.168.5.21:9187‘, то есть метрики, которые выставляются с помощью ‘postgres_exporter‘ сервис.

  # PostgreSQL Monitoring with postgres_exporter
  - job_name: 'postgres_exporter'
    scrape_interval: 5s
    static_configs:
      - targets: ['192.168.5.21:9187']

Сохраните файл и выйдите из редактора, когда закончите.

добавить postgres_exporter в prometheus

Теперь выполните приведенную ниже команду systemctl, чтобы перезапустить службу Prometheus и применить изменения.

sudo systemctl restart prometheus

Создав новые scrape_configs и перезапустив сервер Prometheus, проверьте ‘postgres_exporter’ через веб-панель Prometheus.

откройте веб-браузер и зайдите на IP-адрес сервера Prometheus, за которым следует порт по умолчанию 9090 (т.е: https://192.168.5.100:9090).

Войдите на сервер Prometheus под своим именем пользователя и паролем, если у вас включен basic_auth.

На приборной панели Prometheus нажмите кнопку ‘браузер‘, чтобы получить список запросов Prometheus. Затем введите ‘pg‘ для фильтрации запросов, начинающихся с ‘pg‘. После этого вы получите результат, как на следующем снимке экрана.

запросы pg

Далее щелкните на меню Status (Состояние) и выберите Targets (Цели), и вы увидите имя задания ‘postgres_exporter’ запущен на сервере PostgreSQL с IP-адресом ‘192.168.5.21:9187‘.

postgres_exporter prometheus

Теперь, когда ‘postgres_exporter’ добавлен на сервер Prometheus, и метрика с сервера PostgreSQL теперь доступна на Prometheus.

В следующих шагах вы настроите приборную панель Grafana для мониторинга сервера PostgreSQL.

Настройка мониторинга панели мониторинга через Grafana

Откройте доменное имя Grafana или IP-адрес сервера, затем войдите в панель Grafana, используя имя пользователя и пароль.

После входа в систему нажмите на кнопку Приборная панель меню и выберите Импорт.

импорт приборной панели

Введите идентификатор приборной панели PostgreSQL ‘xxx’ и нажмите кнопку Загрузить. Идентификатор приборной панели PostgreSQL ‘9628‘ доступен в репозитории Grafana Dashboard.

import dashboard id

Затем введите новую приборную панель и выберите ‘Prometheus‘ в качестве источника данных. Затем нажмите Импорт для применения.

В этом примере вы создадите новую приборную панель с именем ‘Мониторинг PostgreSQL‘.

настройка новой приборной панели

После того как панель Grafana импортирована, проверьте новую панель и вы должны увидеть мониторинг панели PostgreSQL, как показано ниже.

Мониторинг панели PostgreSQL

Заключение

Поздравляем! Теперь вы закончили мониторинг PostgreSQL Server с помощью Prometheus и Grafana через ‘postgres_exporter‘. Вы также создали специальную панель для мониторинга сервера PostgreSQL. С ее помощью вы можете получить подробную информацию о том, что происходит в PostgreSQL.

Теперь вы можете проверить страницу Prometheus Community GitHub, чтобы получить подробную информацию о доступных экспортерах Prometheus. Это позволит вам отслеживать работу приложений с помощью Grafana и Prometheus Monitoring Stack.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *