В прошлых статьях я уже писал о metricbeat и о том, как его ставить и о базовых настройках, так что тут я это опущу.

Включение модуля postgresql

  1. Включаем модуль postgresql
    sudo metricbeat mudules enable postgresql
    
  2. Перезапускаем metricbeat
    sudo sysytemctl restart metricbeat 
    

Конфигурация модуля postgresql

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

Настройки модуля находятся по пути /etc/metricbeat/modules.d/postgresql.yml.

  1. Создаём keystore
    sudo metricbeat keystore create
    
  2. Создаём ключи keystore, в которые вводим логин и пароль для подключения к postgres
    sudo metricbeat keystore add MY_USR
    sudo metricbeat keystore add MY_PWD
    sudo metricbeat keystore list
    
  3. И настраиваем сам модуль
    sudo vim /etc/metricbeat/modules.d/postgresql.yml
    
- module: postgresql
  metricsets:
    - database
    - bgwriter
    - activity
  #тут можно выставить интервал мониторинга
  period: 60s
  #postgres - это бд, к которой будем подключаться
  hosts: ["postgres://127.0.0.1:5432/postgres?sslmode=disable"]
  #логин
  username: "${MY_USR}"
  #пароль
  password: "${MY_PWD}"

Права для пользователя в postgresql

Тут самое интересное я не нашел какой-то внятной статьи о правах в которых нуждается пользователь, под которым осуществляется аутентификация. Поэтому просто напишу тут какие права выдал я и это сработало.

  • Естественно первым делом connect к бд postgres
  • Роли pg_read_all_stats, pg_execute_server_program

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

Включаем логирование pg_stat_statements

  1. Включаем pg_stat_statements. Для этого редактируем файл конфигураций самого postgresql (путь может различаться). Для поиска файла можно воспользваться find / -name postgresql.conf.
    sudo vim /var/lib/pgsql/12/data/postgresql.conf
    
    shared_preload_libraries = 'pg_stat_statements'
    pg_stat_statements.max = 1000
    pg_stat_statements.track = all
    
  2. Создаём extention
    CREATE EXTENSION pg_stat_statements
    
  3. Проверяем pg_stat_statements
    SELECT * FROM pg_stat_statements
    
  4. Добавляем statement в metricbeat
    sudo vim /etc/metricbeat/modules.d/postgresql.yml
    
    //- module: postgresql
      metricsets:
     //- statement
    
  5. Перезапускаем postgres и metricbeat
    sudo sysytemctl restart postgresql-12
    sudo sysytemctl restart metricbeat