Мониторинг MS SQL Server в Icinga2 часть 2

Main

Оценка: 99.2% - 5 Голосов

Общая

В данной статье будет рассмотрена настройка плагина check_mssql_health для мониторинга баз данных в MS SQL Server.

Данный плагин более функционален, чем описанный ранее в статье Мониторинг MS SQL Server в Icinga2 часть 1. Полный перечень возможностей перечислен на сайте автора тут. Так же стоит отметить тот факт, что плагин работает напрямую с SQL сервером, поэтому потребуется создать пользователя для доступа к нему.

 

Создаем пользователя в MS SQL Server:

Для создания пользователя необходимо подключиться к серверу MS SQL и в Microsoft SQL Server Management Studio, открыть Безопасноть - Правой кнопкой мыши по "Имя входа" - Создать имя входа.

Заполнить необходимые для создания пользователя поля, а так же сопоставить пользователя с необходимыми базами данных и указать уровнем доступа к ним.

View the embedded image gallery online at:
http://itcrowd.top/mssql-icinga2-part2#sigProIdcf7ddecf28

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

 

Подготовка сервера Icinga2 к работе с плагином:

Для данного плагина требуется Perl модуль DBD::Sybase


apt install libtool libdbd-sybase-perl gettext gcc perl perl-modules rpm perl-doc libssl-dev e2fsprogs uuid-dev libxml-libxml-perl libxml2-dev libsoap-lite-perl build-essential freetds-bin

 

Установка Perl модуль DBD::Sybase


cpan DBD::Sybase 

 

Установка плагина check_mssql_health:


wget https://labs.consol.de/assets/downloads/nagios/check_mssql_health-2.6.4.14.tar.gz
tar -zxvf check_mssql_health-2.6.4.14.tar.gz
./configure
make
make install
cp plugins-scripts/check_mssql_health /usr/lib/nagios/plugins/

 

Проверка плагина на работоспособность:


/usr/lib/nagios/plugins/./check_mssql_health --hostname DNS-ИМЯ_или_IP-Адрес --port 1433 --username "ИМЯ_ВХОДА" --password ПАРОЛЬ --mode database-backup-age --name ИМЯ_БАЗЫ --server "" --commit 

 

Описание работы плагина в commands.conf:


object CheckCommand "check_mssql_health" {
import "plugin-check-command"
command = [ "/usr/lib/nagios/plugins/check_mssql_health" ]
arguments = {
"--hostname" = "$host.address$"
"--username" = "$username$"
"--password" = "$password$"
"--port" = "$port$"
"--server" = "$service.vars.server$"
"--mode" = "$service.vars.check_mode$"
"--name" = "$service.vars.objectname$"
"--name2" = "$service.vars.objectname_string$"
"--warning" = "$service.vars.warn$"
"--critical" = "$service.vars.crit$"
"--units" = "$service.vars.units$"
"--commit" = ""
}
vars.username = "ИМЯ_ВХОДА"
vars.password = "ПАРОЛЬ"
vars.port = "1433"
}

 

Создание шаблона в templates.conf для службы проверки времени последнего резервного копирования определенной базы данных:


template Service "sql-backup" {
import "generic-service"
check_command = "check_mssql_health"
check_interval = 1m
retry_interval = 1m
}

Описание работы службы в services.conf на примере проверки времени последнего резервного копирования определенной базы данных:

Следует отметить, что время проверки указывается в часах.


apply Service "ИМЯ СЛУЖБЫ" {
import "sql-backup"
display_name = "Желаемое отображаемое имя"
check_period = "Период проверки (если не нужно - строку удалить"
vars.service_type = "db_backup"
vars.server = ""
vars.check_mode = "database-backup-age"
vars.objectname = "ИМЯ Базы данных"
vars.warn = "1"
vars.crit = "2"
#Указать где назначается проверка, например
assign where host.vars.sql01 == "true"
}

 

Создаем группу в groups.conf, объединяющие все службы проверки резервного копирования:


object ServiceGroup "DB Backup" {
display_name = "Резервное копирование баз данных"
assign where match("db_backup", service.vars.service_type)
}

 

Применяем службу проверки к узлу, если иное не указано вами в описании работы службы:


object Host "sqldb01l" {
address = "Адрес SQL-Сервера"
display_name = "Желаемое отображаемое имя"
check_command = "hostalive"
vars.sql01 = "true"
vars.notification["mail"] = {
groups = [ "icingaadmins" ]
}
}

 

Проверяем настройки и если все хорошо, перезапускаем Icinga2:


service icinga2 checkconfig
service icinga2 restart

 

 

 

Добавить комментарий


Logo