DataLife Engine / Мониторинг реплики AlwaysON с помощью Zabbix

Мониторинг реплики AlwaysON с помощью Zabbix


В данной статье мы рассмотрим, как настроить мониторинг времени отставания репликационных баз SQL Server AlwaysON с помощью системы мониторинга Zabbix.

1. Необходимо, чтобы на сервере Zabbix была установлена утилита sqlcmd позволяющая взаимодействовать с Microsoft SQL Server.

2. В репликационной базе создать пользователя zabbix с правами доступа на VIEW SERVER STATE:
USE master
GO
CREATE LOGIN [zabbix] WITH PASSWORD='yourpass';
GO
GRANT VIEW SERVER STATE TO "zabbix"

3. На сервере Zabbix создадим кастомный скрипт на bash проверяющий значение estimated recovery time в секундах:
vi /usr/lib/zabbix/externalscripts/check_replica.sh
#!/bin/bash

MSSQLSERVER="1.2.3.4"

QUERY="
SET NOCOUNT ON
GO
USE master
GO

SELECT 
(redo_queue_size/redo_rate) 

FROM sys.dm_hadr_database_replica_states
WHERE last_redone_time is not null
and CAST(DB_NAME(database_id)as VARCHAR(40)) = '$1'
;

GO
"

STATE=`/opt/mssql-tools/bin/sqlcmd -S $MSSQLSERVER -U zabbix -P yourpass -Q "$QUERY"`
echo $STATE | awk '{print $7}'

4. Меняем владельца скрипта и делаем скрипт исполняемым:
chown zabbix:zabbix /usr/lib/zabbix/externalscripts/check_replica.sh
chmod 700 /usr/lib/zabbix/externalscripts/check_replica.sh

5. Выполняем проверку скрипта, в качестве аргумента передаем имя репликационной БД:
/usr/lib/zabbix/externalscripts/check_replica.sh DatabaseName

6. Добавляем метрику и триггер в панели мониторинга Zabbix:
Мониторинг реплики AlwaysON с помощью Zabbix


7. Проверяем получение данных в Latest data
22-08-2022, 16:20
Вернуться назад