В данной статье мы рассмотрим, как настроить мониторинг времени отставания репликационных баз 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:
7. Проверяем получение данных в Latest data