- Мониторинг репликации PostgreSQL в Zabbix инструкция и советы
- Основные возможности
- Настройка подключения к серверу PostgreSQL
- Настройка мониторинга репликации
- Шаг 1: Установка Zabbix сервера и агента
- Шаг 2: Создание базы данных и пользователя для Zabbix
- Шаг 3: Установка модуля JSON для PostgreSQL
- Шаг 4: Настройка конфигурации PostgreSQL
- Шаг 5: Перезапуск сервиса PostgreSQL
- Шаг 6: Создание логического слота репликации
- Шаг 7: Создание скрипта для получения данных репликации
- Шаг 8: Изменение прав на скрипт
- Шаг 9: Создание файла UserParameter
- Шаг 10: Перезапуск Zabbix агента
- Шаг 11: Создание элементов данных и триггеров в Zabbix
- Определение и отслеживание задержки репликации
- Мониторинг состояния репликации
- Алертинг о проблемах репликации
- Введение
- Установка и настройка Mamonsu
- Настройка алертинга в Zabbix
- Настройка мониторинга основного сервера и реплик
- Настройка основного сервера
- Настройка реплик
- Определение и отслеживание лагов репликации
- Мониторинг работы WAL архивации
- Введение
- Мониторинг WAL архивации в Zabbix
- Получение метрик в Zabbix
- Использование пользовательских параметров для мониторинга
- 1. Создание самодельных параметров
- 2. Создание скрипта для получения данных
- 3. Использование параметров в Zabbix
- Видео:
- МОНИТОРИНГ PostgreSQL В ZABBIX ЧЕРЕЗ PYTHON
Мониторинг репликации PostgreSQL в Zabbix инструкция и советы
Репликация данных — один из основных направлений развития систем управления базами данных. В этой статье мы рассмотрим подключение мониторинга репликации PostgreSQL к серверу Zabbix. Для этого используется zabbix-agent, который установлен на каждом сервере базы данных. Благодаря этому, мы сможем отслеживать объем данных, скорость репликации и другие основные параметры репликации.
Для создания мониторинга репликации PostgreSQL, нам потребуется настроить сервер Zabbix, создать шаблон для мониторинга и установить необходимые настройки на сервере базы данных.
На сервере базы данных, где установлен Zabbix, вам нужно будет настроить zabbix-agent. Для этого откройте файл конфигурации /etc/zabbix/zabbix_agentd.conf
с помощью редактора текста (например, командой nano /etc/zabbix/zabbix_agentd.conf
) и внесите следующие изменения:
Server=IP_адрес_сервера_Zabbix
ServerActive=IP_адрес_сервера_Zabbix
Hostname=имя_сервера_базы_данных
Основные возможности
Мониторинг репликации PostgreSQL в Zabbix предоставляет ряд полезных возможностей для эффективного контроля за работой базы данных.
С помощью данного мониторинга вы сможете получить информацию о следующих метриках:
Метрика | Описание |
---|---|
Скорость репликации | Позволяет узнать, как быстро происходит передача данных от мастер-сервера к репликам. |
Объем данных | Отображает объем данных, передаваемых по репликации. |
Уровни нагрузки | Позволяет отслеживать уровни нагрузки на мастер- и реплик-серверах. |
Статус репликации | Показывает текущий статус репликации: работает ли она или возникли ошибки. |
Параметры сервера | Отображает ключевые параметры конфигурации PostgreSQL сервера. |
Для мониторинга репликации PostgreSQL в Zabbix вам понадобится Zabbix Server версии 5 и выше, а также модуль мониторинга mamonsu и самодельные шаблоны.
Установка и настройка мониторинга репликации в Zabbix предполагает следующие шаги:
- Установка и настройка PostgreSQL на мастере и на реплике.
- Создание и настройка пользователя для доступа к базе данных.
- Установка и настройка Zabbix Server и агента на сервере мониторинга.
- Установка и настройка модуля мониторинга mamonsu на мастере и на реплике.
- Создание и применение шаблонов мониторинга в Zabbix.
После настройки вы сможете получать информацию о репликации PostgreSQL в Zabbix и отслеживать основные показатели работы вашей базы данных.
Настройка подключения к серверу PostgreSQL
Для мониторинга репликации PostgreSQL с использованием Zabbix необходимо настроить подключение к серверу PostgreSQL на вашей установке Zabbix.
1. Установка PostgreSQL: если на вашем сервере PostgreSQL не установлен, выполните следующие действия:
Установка PostgreSQL в Ubuntu:
sudo apt-get install postgresql
Установка PostgreSQL в CentOS:
sudo yum install postgresql-server
2. Создание базы данных для мониторинга: на сервере PostgreSQL создайте новую базу данных. Для этого выполните следующую команду в командной строке PostgreSQL:
CREATE DATABASE zabbix;
3. Создание пользователя для мониторинга: создайте нового пользователя для мониторинга в базе данных zabbix. Для этого выполните следующую команду в командной строке PostgreSQL:
CREATE USER zabbix WITH PASSWORD 'your_password';
4. Настройка прав доступа для пользователя: установите необходимые права доступа для пользователя zabbix к базе данных zabbix. Для этого выполните следующую команду в командной строке PostgreSQL:
GRANT ALL PRIVILEGES ON DATABASE zabbix TO zabbix;
5. Изменение параметров конфигурации PostgreSQL: откройте файл настройки PostgreSQL в текстовом редакторе (например, с помощью команды nano /etc/postgresql/12/main/postgresql.conf
) и измените следующие параметры:
listen_addresses = '*'
max_connections = 100
shared_buffers = 1GB
work_mem = 16MB
maintenance_work_mem = 256MB
wal_buffers = 16MB
checkpoint_completion_target = 0.9
6. Перезапуск сервера PostgreSQL: выполните следующую команду для перезапуска сервера PostgreSQL:
sudo systemctl restart postgresql-12.service
7. Установка Zabbix agent: на сервере, где установлен Zabbix server, установите Zabbix agent. Для этого выполните следующую команду:
sudo apt-get install zabbix-agent
8. Настройка Zabbix agent: откройте файл конфигурации Zabbix agent в текстовом редакторе (например, с помощью команды nano /etc/zabbix/zabbix_agentd.conf
) и введите следующие параметры:
Server=127.0.0.1
ServerActive=127.0.0.1
ListenPort=10050
Hostname=your_hostname
9. Перезапуск Zabbix agent: выполните следующую команду для перезапуска Zabbix agent:
sudo systemctl restart zabbix-agent.service
После настройки подключения к серверу PostgreSQL и настройки Zabbix agent вы можете приступить к созданию метрик и уровней мониторинга для вашей базы данных PostgreSQL в Zabbix.
Настройка мониторинга репликации
Для мониторинга репликации PostgreSQL в Zabbix вам потребуется установить и настроить несколько компонентов. Ниже приведен шаг за шагом гайд:
Шаг 1: Установка Zabbix сервера и агента
Сначала необходимо установить Zabbix сервер и агент на вашей системе. Установите Zabbix сервер и агент, используя следующие команды:
$ sudo apt-get update $ sudo apt-get install zabbix-server-pgsql zabbix-frontend-php zabbix-agent
Шаг 2: Создание базы данных и пользователя для Zabbix
После установки Zabbix, создайте базу данных и пользователя для Zabbix сервера. Запустите интерактивную консоль PostgreSQL с помощью команды:
$ sudo -u postgres psql
Внутри консоли PostgreSQL создайте базу данных и пользователя с помощью следующих команд:
postgres=# CREATE DATABASE zabbix; postgres=# CREATE USER zabbix WITH PASSWORD 'password'; postgres=# GRANT ALL PRIVILEGES ON DATABASE zabbix TO zabbix; postgres=# \q
Шаг 3: Установка модуля JSON для PostgreSQL
Чтобы включить поддержку JSON в PostgreSQL, выполните следующую команду:
$ sudo apt-get install postgresql-96-json
Шаг 4: Настройка конфигурации PostgreSQL
Теперь настройте файл конфигурации PostgreSQL для разрешения удаленного подключения к серверу и логирования репликации. Откройте файл конфигурации PostgreSQL в текстовом редакторе:
$ sudo nano /etc/postgresql/9.6/main/postgresql.conf
Внесите следующие изменения в файл конфигурации:
listen_addresses = '*' wal_level = logical max_replication_slots = 10 logging_collector = on log_directory = 'pg_log' log_filename = 'postgresql-%H.log' log_truncate_on_rotation = on log_rotation_age = 1d log_rotation_size = 0
Сохраните изменения и закройте файл конфигурации.
Шаг 5: Перезапуск сервиса PostgreSQL
После внесения изменений в файл конфигурации, перезапустите сервис PostgreSQL с помощью следующей команды:
$ sudo systemctl restart postgresql-9.6
Шаг 6: Создание логического слота репликации
Создайте логический слот репликации с помощью следующей команды:
$ sudo -u postgres psql -c "SELECT * FROM pg_create_logical_replication_slot('zabbix_slot', 'wal2json')"
Шаг 7: Создание скрипта для получения данных репликации
Создайте новый файл с именем get_replication_data.sh и откройте его в текстовом редакторе:
$ sudo nano /etc/zabbix/scripts/get_replication_data.sh
Добавьте следующий скрипт в файл:
#!/bin/bash id="$1" address="$2" if [ "$id" -eq "1" ]; then server='master' else server="slave$id" fi replication_data=$(curl -s "$address") lag=$(echo "$replication_data" | jq -r '.lag') state=$(echo "$replication_data" | jq -r '.state') if [ "$state" == "streaming" ] || [ "$state" == "write" ]; then status=0 else status=1 fi echo -e "{ \t\"data\":[ \t\t{\"{#SERVERNAME}\":\"$server\"}, \t\t{\"{#LAG}\":\"$lag\"}, \t\t{\"{#STATE}\":\"$state\"} \t] }"
Сохраните файл и закройте его.
Шаг 8: Изменение прав на скрипт
Измените права на скрипт, чтобы он мог быть выполнен:
$ sudo chmod +x /etc/zabbix/scripts/get_replication_data.sh
Шаг 9: Создание файла UserParameter
Создайте новый файл с именем zabbix_replication.conf и откройте его в текстовом редакторе:
$ sudo nano /etc/zabbix/zabbix_agentd.d/zabbix_replication.conf
Добавьте следующие строки в файл:
UserParameter=replication.data[*],/etc/zabbix/scripts/get_replication_data.sh $1 $2
Сохраните файл и закройте его.
Шаг 10: Перезапуск Zabbix агента
Перезапустите Zabbix агент, чтобы применить изменения в файле конфигурации:
$ sudo systemctl restart zabbix-agent
Шаг 11: Создание элементов данных и триггеров в Zabbix
Наконец, создайте элементы данных и триггеры для мониторинга репликации в Zabbix. Войдите в веб-интерфейс Zabbix и создайте необходимые элементы данных и триггеры, используя API JSON или веб-интерфейс.
Теперь ваш мониторинг репликации PostgreSQL в Zabbix должен быть настроен и готов к использованию.
Обратите внимание, что в данном примере описана настройка для PostgreSQL версии 9.6. Если у вас другая версия PostgreSQL, некоторые команды или параметры могут отличаться.
Определение и отслеживание задержки репликации
Для эффективного мониторинга репликации в системе PostgreSQL необходимо уметь определять и отслеживать задержку репликации на уровне базы данных. Это позволяет оперативно реагировать на возможные проблемы и подбирать соответствующие настройки для достижения оптимальных значений.
Основное внимание при определении задержки репликации следует уделить двум серверам: мастеру (master) и слейву (slave). Настройки репликации могут быть различными для разных версий PostgreSQL, поэтому в данном примере рассмотрим версии 9.6 и выше.
Для начала пробуем получить настройки репликации на сервере мастере. Для этого вводим команду:
postgresql-96/bin/psql -U postgres -h localhost -c "select * from pg_stat_replication;"
В ответе будут основные значения, такие как: репликационный идентификатор (replication ID), адрес слейва (slave address), состояние подключения (connection state) и многое другое.
В случае успешного подключения к серверу слейва можно использовать следующие команды:
postgresql-96/bin/psql -U postgres -h localhost -c "select * from pg_stat_replication;"
Для установки и настройки мониторинга репликации в PostgreSQL можно использовать расширения и самодельные скрипты. В данном блоге рассматривается установка и настройка модуля Mamonsu.
Установка Mamonsu:
apt-get install mamonsu
В составе данного модуля уже есть некоторые настройки мониторинга репликации по умолчанию, но их можно дополнить или изменить, отредактировав конфигурационный файл:
nano /etc/mamonsu/agent.conf
Пример настроек для мониторинга репликации:
[PostgreSQL]
path = pgsql
metric_partition_period = 30s
[pgbufall]
sampling = Essential
context = pgbufall
value = allocate - written
keys =
pid,elevel_id
bye=NULL
publish =0|>
0.00/>False
[pairs1]
[Active_tbl]
sampling = Essential
value = rel.tuples_inserted - rel.tuples_deleted - rel.tuples_updated
keys = relname|>|NULL|>|>$
publish = \dissed|relname|>$
[DataExchange]
sampling = Essential
context = walreceiver |>$
value = written/replayed |>.replayed_time |>.written_time
keys = |>.sender_host|NULL
publish = \byedpod_g|aggr19_sum|sender_host|NULL|$.replayed_time, \byedpod_g|aggr5555_sum|sender_host|NULL|$.replayed_time_last, \byedpod_g|aggr5555_avr|sender_host|NULL|$.replayed_time, \byedpod_g|aggr19.verbose_sum|sender_host|NULL|$.replayed_time,.*.diff.*.kib.receiver_.*.ckn_time,.*.diff.*.kib.sender_.*.ckn_time
[Pages_from_zero]
sampling = Essential
context = page_read|rts
value = blk_read_time
keys =
blk_read_time|stars_testdb|cjpu8kr5949156oveg8tcaxrwq||>|.fp
publish =
[User_forks]
sampling = Essential
value = subprocess_create
keys =
subprocess_create|>|-1.
[str_axtest_user_data_statistics]
sampling = Essential
value = y_total
keys =
page_read|src_dir_storage_stat|Date
publish =
[RAM]
sampling = Essential
value = sum
keys =
pgsql..qnap11.copy.total_size_kb.high_limit|*>nil
pgsql..qnap11.copy.total_size_kb.high_limit|~nil
pgsql.*.copy.*
[AX1]
sampling = Essential
value = |
keys = |
publish =
Далее необходимо обновить шаблон мониторинга:
cd /var/lib/zabbix/
./update_template.py -d postgresql --commands-datadir /etc/zabbix/zabbix_agentd.d/ --release 4.0 --extensions /zabbix-extensions-master/templates --templates-dir /templates --zabbix-agent-conf /etc/zabbix/zabbix_agentd.conf
После выполнения всех настроек необходимо перезапустить Zabbix Agent:
systemctl restart zabbix-agent
Теперь в Zabbix будет доступно множество метрик для мониторинга репликации и других важных параметров PostgreSQL.
Мониторинг состояния репликации
Для мониторинга состояния репликации PostgreSQL в Zabbix можно использовать модуль mamonsu. Этот модуль позволяет получать метрики о состоянии репликации и загрузке базы данных.
Настройки мониторинга репликации PostgreSQL в Zabbix могут быть разными и зависят от вашей системы. Введение в мониторинг репликации PostgreSQL в Zabbix можно найти в других статьях.
Для начала необходимо настроить мониторинг репликации PostgreSQL в Zabbix следующими основными параметрами:
- Версия PostgreSQL (например, postgresql-96)
- Адрес и порт реплики
- Пользователи и пароли для доступа к базе данных
Затем необходимо установить на ваш сервер Zabbix-Agent и создать шаблон для мониторинга PostgreSQL.
Для получения метрик состояния репликации можно использовать различные команды и скрипты, включая команду «pg_stat_replication» и скрипт «mamonsu».
Пример команды для получения метрик состояния репликации PostgreSQL:
sudo -u postgres psql -h localhost -p 5432 -d template1 -c "SELECT * FROM pg_stat_replication"
Пример использования скрипта «mamonsu» для мониторинга состояния репликации:
mamonsu run --host=localhost --port=5432 --dbname=template1 --username=postgres --password=your_password
Полученные значения можно отправить в Zabbix с использованием шаблона и параметров Zabbix-Agent.
Для организации мониторинга состояния репликации PostgreSQL в Zabbix можно создать специальный шаблон подобно шаблонам для других устройств и сервисов. Для этого нужно создать новую метрику в шаблоне и настроить обработчик данных (handler), который будет отправлять полученные значения в Zabbix-сервер.
Важными метриками для мониторинга репликации PostgreSQL в Zabbix являются: момент последнего обновления реплики, объем загрузки базы данных, количество уровней репликации и другие.
Также, можно использовать шаблоны Zabbix для мониторинга PostgreSQL и получения метрик состояния репликации в формате JSON.
В итоге, мониторинг состояния репликации PostgreSQL в Zabbix позволяет получать актуальную информацию о состоянии репликации и использовании ресурсов сервера PostgreSQL.
Алертинг о проблемах репликации
Для эффективного мониторинга репликации PostgreSQL в Zabbix необходимо создать алерты о возможных проблемах, которые могут возникнуть при работе с репликацией.
В данной инструкции мы рассмотрим, как настроить алертинг в Zabbix для репликации PostgreSQL.
Введение
Для начала, убедитесь, что у вас установлен Zabbix сервер и агент на вашем мастер и слейв серверах PostgreSQL.
Следующим шагом будет установка и настройка расширения Mamonsu для мониторинга и алертинга репликации PostgreSQL в системе.
Установка и настройка Mamonsu
1. Установите расширение Mamonsu на ваш сервер PostgreSQL:
apt-get install postgresql-96-mamonsu
2. В файле конфигурации сервера PostgreSQL /etc/postgresql/96/main/postgresql.conf
настройте следующие параметры:
wal_level = replica
archive_mode = on
archive_command = 'cp %p /var/lib/postgresql/9.6/archive/%f'
3. Перезапустите сервер PostgreSQL:
service postgresql restart
4. Настройте метрики в файле конфигурации Mamonsu /etc/1-mamonsu.conf
:
mamonsu:metrics_modules: # расскоментируйте и отредактируйте следующие строки
- disk_space
- os_discovery
- os
- pgsql
- pgsql_bgwriter
- pg_stat_activity
- pg_stat_replication
5. Обновите конфигурацию Mamonsu и перезапустите службу:
mamonsu config-test && systemctl restart mamonsu
Настройка алертинга в Zabbix
Для настройки алертов в Zabbix необходимо создать шаблон, который будет проверять состояние репликации на мастере и слейве.
Пример настройки алертов:
1. Создайте новый шаблон в Zabbix и добавьте необходимые метрики и триггеры:
$ nano /etc/zabbix/zabbix_agentd.conf.d/postgresql.conf
2. Вставьте следующий код в файл:
UserParameter=pgsql.discovery[*],/usr/bin/ibase16 "< /var/lib/postgresql/9.6/pgsql/etc/databases-list.yml" postgres | python -y. /var/lib/postgresql/9.6/ibase16.yml
UserParameter=pgsql.status[*],/usr/share/zabbix/postgresql/status.py $1 $2 $3
UserParameter=pgsql.replication_lag[*],/usr/share/zabbix/postgresql/replication_lag.py -z -h $1 -U zabbix -p $2 -z -s "$3"
UserParameter=pgsql.repl_lag[*],/usr/lib/zabbix/externalscripts/mamonsu/get_replication_lag $1 $2 $3
3. Перезапустите Zabbix агента:
$ sudo systemctl restart zabbix-agent
4. Создайте новый шаблон в Zabbix, используя файл мониторинга:
$ nano /etc/zabbix/zabbix_agentd.d/postgresql.conf
5. Вставьте следующий код в файл:
UnsafeUserParameters=1
LoadModule=mamonsu /usr/lib/zabbix/externalscripts/mamonsu/mamonsu.so
UserParameter=pgsql.bgwriter_stats[*],/usr/lib/zabbix/externalscripts/mamonsu/bgwriter_stats $1 $2 $3
UserParameter=pgsql.replication_stats[*],/usr/lib/zabbix/externalscripts/mamonsu/replication_stats $1 $2 $3
6. Перезапустите Zabbix агента:
$ sudo systemctl restart zabbix-agent
Теперь алерты о проблемах с репликацией PostgreSQL будут отображаться в Zabbix.
Загрузка… Пожалуйста, подождите.
Настройка мониторинга основного сервера и реплик
Для мониторинга репликации PostgreSQL в Zabbix, необходимо настроить мониторинг как основного сервера, так и его реплик. В данном разделе мы рассмотрим основные шаги настройки мониторинга для обоих серверов.
Настройка основного сервера
1. Обновите вашу систему до последней версии с помощью команды: apt-get update
и apt-get upgrade
.
2. Остановите PostgreSQL сервер с помощью команды: systemctl stop postgresql-96
.
3. Создайте пользователя для мониторинга с помощью команды: createuser zabbix -P
. Введите пароль для пользователя.
4. Отредактируйте файл параметров PostgreSQL, который может быть найден по пути /etc/postgresql/9.6/main/postgresql.conf
. Закомментируйте строку #password_encryption = md5
и добавьте строку password_encryption = on
. Сохраните изменения и перезапустите PostgreSQL сервер.
5. Создайте базу данных мониторинга с помощью команды: createdb -O zabbix template1
.
6. Добавьте шаблон мониторинга PostgreSQL в Zabbix с использованием Zabbix веб-интерфейса. Импортируйте файл zabbix_template_postgresql.xml
, который должен быть доступен на официальном сайте Zabbix.
7. Установите агента Zabbix на вашу систему с помощью команды: apt-get install zabbix-agent
. Отредактируйте файл конфигурации агента, который может быть найден по пути /etc/zabbix/zabbix_agentd.conf
. Установите параметр Server
в IP-адрес или FQDN вашего Zabbix сервера. В параметре Hostname
укажите имя вашего сервера.
8. Перезапустите агент Zabbix с помощью команды: service zabbix-agent restart
.
9. Запустите PostgreSQL сервер снова с помощью команды: systemctl start postgresql-96
.
10. Настройте обработчик в Zabbix для получения метрик мониторинга. Создайте файл скрипта /etc/zabbix/scripts/postgresql_replication_binlog.sh
и добавьте в него следующий код:
#!/bin/bash # Полный путь к бинарному логу BINLOG="/var/lib/postgresql/9.6/main/pg_wal" # Получаем размер бинарного лога SIZE=$(du -sh $BINLOG | awk '{print $1}') # Отправляем размер в Zabbix echo "ibase16:${SIZE//[^0-9]/}" | zabbix_sender -s "hostname" -z "zabbix-server" -i -
11. Установите разрешения на выполнение скрипта с помощью команды: chmod +x /etc/zabbix/scripts/postgresql_replication_binlog.sh
.
12. Добавьте параметры для обработчика в файле конфигурации Zabbix агента /etc/zabbix/zabbix_agentd.conf
. Добавьте следующие строки в конец файла:
# Настройки для обработчика мониторинга репликации PostgreSQL в Zabbix UserParameter=postgres.replication_binlog,/etc/zabbix/scripts/postgresql_replication_binlog.sh
13. Перезапустите агент Zabbix с помощью команды: service zabbix-agent restart
.
Настройка реплик
Настройка мониторинга реплик PostgreSQL в Zabbix аналогична настройке основного сервера, за исключением нескольких шагов:
1. Загрузите конфигурацию репликации с основного сервера на реплику. Используйте команду pg_basebackup
. Например:
pg_basebackup -D /var/lib/postgresql/9.6/main -Fp -Xs -R -P -c fast -h master_ip -U replication_user
2. В файле конфигурации реплики /etc/postgresql/9.6/main/postgresql.conf
измените параметр hot_standby
на on
. Сохраните изменения и перезапустите реплику.
3. В шаблоне мониторинга PostgreSQL в Zabbix, укажите имя вашей реплики в качестве хоста для мониторинга репликации.
Теперь вы настроили мониторинг основного сервера и его реплик в Zabbix. Вы можете добавить различные метрики и параметры мониторинга для подгонки под вашу собственную конфигурацию и требования.
Определение и отслеживание лагов репликации
Перед началом настройки мониторинга, убедитесь, что у вас установлен и настроен Zabbix Agent на вашем сервере PostgreSQL. Если у вас еще нет Zabbix Agent, вы можете установить его следующей командой:
sudo apt-get install zabbix-agent
После установки Zabbix Agent, создайте файл конфигурации для модуля мониторинга PostgreSQL, который мы будем использовать — Mamonsu. Введение в установку и настройку Mamonsu можно найти в документации Mamonsu.
После создания файла конфигурации Mamonsu, добавьте в него следующие параметры:
Параметр | Значение |
---|---|
zabbix_host | адрес вашего Zabbix-сервера |
zabbix_port | порт вашего Zabbix-сервера (по умолчанию 10050) |
enable_module_shutdown_handler | 1 |
module_logging_level | debug |
module_logging_to (опционально) | путь к файлу логов для Mamonsu (по умолчанию /var/log/mamonsu/mamonsu.log) |
После настройки Mamonsu, запустите его в качестве сервиса, используя следующую команду:
sudo systemctl start mamonsu
Теперь настал момент создания нового хоста PostgreSQL в Zabbix. Создайте новый хост и задайте следующие параметры:
Параметр | Значение |
---|---|
Имя | имя вашего сервера PostgreSQL |
Видимое имя | имя вашего сервера PostgreSQL (может отличаться от имени хоста) |
IP-адрес | IP-адрес вашего сервера PostgreSQL |
Далее создайте новые элементы данных для мониторинга. Мы рекомендуем использовать шаблон «Template DB PostgreSQL by Zabbix Agent» для мониторинга баз данных PostgreSQL. В контексте мониторинга лагов репликации, следующие элементы данных важны для настройки:
Имя элемента данных | Ключ элемента данных | Тип значений |
---|---|---|
Лаг репликации (байты) | pg.stat.replication.sync_state.sec_behind_master | Число (байты) |
Лаг репликации (секунды) | pg.stat.replication.sync_state.sec_behind_master | Число (секунды) |
После настройки элементов данных, примените изменения и дождитесь обновления данных в Zabbix.
Теперь вы можете отслеживать и анализировать лаги репликации в Zabbix, используя созданные элементы данных. Это позволит вам оперативно реагировать на возможные проблемы с репликацией PostgreSQL и предотвращать возникновение задержек в передаче данных.
Мониторинг работы WAL архивации
В предыдущих разделах мы рассмотрели основные принципы мониторинга репликации в PostgreSQL с помощью Zabbix. Теперь давайте обратим внимание на мониторинг работы WAL архивации.
Введение
WAL (Write Ahead Logs) — это журнал транзакций в PostgreSQL, который содержит информацию о всех изменениях, произведенных в базе данных. Архивация WAL файлов — это процесс копирования журналов транзакций на удаленное хранилище с целью обеспечения возможности восстановления базы данных до определенного момента времени.
Мониторинг WAL архивации в Zabbix
Для мониторинга работы WAL архивации в Zabbix мы будем использовать несколько расширений и скриптов.
- Сначала создадим новое устройство в Zabbix для мониторинга WAL архивации. Укажите ip-адрес сервера PostgreSQL и настройте параметры подключения (пользователь и пароль).
- Затем установите на сервер PostgreSQL расширение
pg_stat_statements
и перезапустите сервер. - В директории
/usr/local/scripts/
создайте скриптwal_archiver.sh
, в котором будет содержаться необходимый нам функционал для мониторинга WAL архивации. - Создайте хост в Zabbix для сервера PostgreSQL-мастера и настройте на нем скриптовый агент (
zabbix_agentd
). - На сервере Zabbix создайте шаблон с именем
PostgreSQL WAL Archiver
и добавьте в него необходимые элементы данных и триггеры для мониторинга WAL архивации. - Обновите конфигурацию агента (
zabbix_agent
) на сервере PostgreSQL-мастере и перезапустите агент.
Получение метрик в Zabbix
Теперь, после настройки мониторинга WAL архивации в Zabbix, мы можем получить различные метрики, связанные с этим процессом. Например:
- Загрузка сервера PostgreSQL в момент работы WAL архивации
- Объем WAL файлов, ожидающих архивации
- Уровни записи WAL файлов
- Температура жесткого диска на сервере архивации
Таким образом, мониторинг работы WAL архивации позволяет нам более эффективно контролировать процессы в PostgreSQL и оперативно реагировать на возможные проблемы.
Использование пользовательских параметров для мониторинга
Для настройки мониторинга репликации PostgreSQL в Zabbix можно использовать пользовательские параметры. С помощью них можно получить различные метрики и сведения о состоянии репликации в базах данных. В этом разделе мы рассмотрим примеры настройки таких параметров и методы их использования.
1. Создание самодельных параметров
Для создания пользовательских параметров в Zabbix сервере нужно открыть файл конфигурации Zabbix agent’а. Обычно этот файл находится в директории /etc/zabbix/ и называется zabbix_agentd.conf. Учитывайте, что в представленных командах примера этот файл находится в той же директории.
Открываем файл в текстовом редакторе:
«`bash
sudo nano /etc/zabbix/zabbix_agentd.conf
Добавляем следующие строки в конец файла:
«`bash
# User-defined parameters for PostgreSQL replication monitoring
UserParameter=pgsql.replication.status[*],/usr/local/bin/pgreplication.sh $1
UserParameter=pgsql.replication.delay[*],/usr/local/bin/pgreplication.sh $1 delay
Сохраняем и закрываем файл. Эти строки создают два пользовательских параметра, которые будут использоваться для получения информации о состоянии репликации и задержке репликации.
2. Создание скрипта для получения данных
Теперь нам нужно создать скрипт, который будет обрабатывать пользовательские параметры и возвращать нужные данные о репликации PostgreSQL. Создаем файл скрипта в директории /usr/local/bin/:
«`bash
sudo nano /usr/local/bin/pgreplication.sh
Добавляем следующий код в файл:
«`bash
#!/bin/bash
# PostgreSQL connection settings
PGUSER=»your_username»
PGPASSWORD=»your_password»
PGHOST=»localhost»
PGPORT=»5432″
# Check if delay parameter has been passed
if [[ «$2» == «delay» ]]; then
psql -U $PGUSER -h $PGHOST -p $PGPORT -c «SELECT EXTRACT(EPOCH FROM NOW() — pg_last_xact_replay_timestamp())::integer AS replication_delay;» -d $1 -t -A
else
psql -U $PGUSER -h $PGHOST -p $PGPORT -c «SELECT 1 FROM pg_stat_replication WHERE application_name = ‘$1’ AND state = ‘streaming’;» -d $1 -t -A
fi
Не забудьте заменить your_username и your_password на ваш логин и пароль для подключения к PostgreSQL. Сохраните и закройте файл.
Теперь дайте скрипту права на выполнение:
«`bash
sudo chmod +x /usr/local/bin/pgreplication.sh
Этот скрипт будет получать нужные данные о репликации PostgreSQL, основываясь на переданных аргументах. Если задан аргумент «delay», он возвращает задержку репликации; в противном случае, он возвращает состояние репликации (1 — если репликация работает, 0 — если нет).
3. Использование параметров в Zabbix
Теперь настройте Zabbix сервер для мониторинга репликации PostgreSQL. Вам понадобятся установленный и настроенный Zabbix agent на мониторяемых серверах, а также установленный и настроенный Zabbix server.
Пример установки Zabbix agent:
«`bash
sudo apt-get install zabbix-agent
Пример установки Zabbix server:
«`bash
sudo apt-get install zabbix-server
Настройка сервера и агента выходит за рамки данной инструкции. Подробная информация о настройке Zabbix сервера и агента доступна в официальной документации Zabbix.
После настройки используйте шаблон мониторинга PostgreSQL в Zabbix для мониторинга мастера и слейва. В шаблоне уже есть макросы, связанные с пользовательскими параметрами, такими как {$PG.REPLICATION.STATUS} и {$PG.REPLICATION.DELAY}.
При первом запуске Zabbix агента на сервере, должна быть загружена конфигурация заббикс агента. Обновите данные, выполнив следующую команду:
«`bash
sudo systemctl restart zabbix-agent
Теперь вы должны видеть метрики репликации PostgreSQL в вашей системе мониторинга Zabbix, такие как состояние репликации и задержка репликации.
В этом разделе мы рассмотрели, как создавать пользовательские параметры для мониторинга репликации PostgreSQL в Zabbix. Мы создали самодельные параметры, а также настроили скрипт для получения данных и добавили их в Zabbix сервер. Теперь вы можете использовать эти параметры для умного мониторинга репликации PostgreSQL в вашей системе Zabbix.
Видео:
МОНИТОРИНГ PostgreSQL В ZABBIX ЧЕРЕЗ PYTHON
МОНИТОРИНГ PostgreSQL В ZABBIX ЧЕРЕЗ PYTHON by Pechenek.NET 2,384 views 5 years ago 11 minutes, 33 seconds