В этом руководстве вы настроите платформы мониторинга 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
Сохраните файл и выйдите из редактора, когда закончите.
Далее откройте файл конфигурации ‘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’ для сбора метрик сервера 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
Теперь выполните приведенную ниже команду systemctl, чтобы перезагрузить менеджер systemd и применить изменения.
sudo systemctl daemon-reload
После перезагрузки менеджера systemd запустите и включите службу ‘postgres_exporter’ с помощью приведенной ниже команды systemctl.
sudo systemctl start postgres_exporter sudo systemctl enable postgres_exporter
Служба ‘postgres_exporter’ должна быть запущена и собирать метрики с сервера PostgreSQL. Кроме того, он должен быть включен и будет запускаться автоматически при загрузке.
Наконец, выполните приведенную ниже команду, чтобы проверить ‘postgres_exporter’ статус службы. Кроме того, убедитесь, что ‘postgres_exporter‘ запущен и включен.
sudo systemctl status postgres_exporter
Вы получите результат, похожий на этот — символ ‘postgres_exporter‘ служба запущена и включена.
На данный момент ‘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‘.
Когда брандмауэр настроен и ‘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']
Сохраните файл и выйдите из редактора, когда закончите.
Теперь выполните приведенную ниже команду 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‘. После этого вы получите результат, как на следующем снимке экрана.
Далее щелкните на меню Status (Состояние) и выберите Targets (Цели), и вы увидите имя задания ‘postgres_exporter’ запущен на сервере PostgreSQL с IP-адресом ‘192.168.5.21:9187‘.
Теперь, когда ‘postgres_exporter’ добавлен на сервер Prometheus, и метрика с сервера PostgreSQL теперь доступна на Prometheus.
В следующих шагах вы настроите приборную панель Grafana для мониторинга сервера PostgreSQL.
Настройка мониторинга панели мониторинга через Grafana
Откройте доменное имя Grafana или IP-адрес сервера, затем войдите в панель Grafana, используя имя пользователя и пароль.
После входа в систему нажмите на кнопку Приборная панель меню и выберите Импорт.
Введите идентификатор приборной панели PostgreSQL ‘xxx’ и нажмите кнопку Загрузить. Идентификатор приборной панели PostgreSQL ‘9628‘ доступен в репозитории Grafana Dashboard.
Затем введите новую приборную панель и выберите ‘Prometheus‘ в качестве источника данных. Затем нажмите Импорт для применения.
В этом примере вы создадите новую приборную панель с именем ‘Мониторинг PostgreSQL‘.
После того как панель Grafana импортирована, проверьте новую панель и вы должны увидеть мониторинг панели PostgreSQL, как показано ниже.
Заключение
Поздравляем! Теперь вы закончили мониторинг PostgreSQL Server с помощью Prometheus и Grafana через ‘postgres_exporter‘. Вы также создали специальную панель для мониторинга сервера PostgreSQL. С ее помощью вы можете получить подробную информацию о том, что происходит в PostgreSQL.
Теперь вы можете проверить страницу Prometheus Community GitHub, чтобы получить подробную информацию о доступных экспортерах Prometheus. Это позволит вам отслеживать работу приложений с помощью Grafana и Prometheus Monitoring Stack.