Мониторинг Microsoft SQL
-
Заходим на srv-zabbix через ssh
-
Добавляем новый хост в файл /etc/odbc.ini
sudo nano /etc/odbc.ini
Формат записи:
[srv-sql01]
Driver = ODBC Driver 18 for SQL Server
Server = 10.4.145.251
PORT = 1433
TrustServerCertificate = yes
Добавляем по примеру блок для нового сервера, по сути меняются только 1 и 3 строка.
- Генерируем пароль для пользователя mssql - zbxmonuser используя только верхний/нижний регистр + цифры, без спецсимволов, 16+ знаков, заносим в менеджер паролей:
Пример записи в менеджере паролей

-
Заходим в Zabbix
-
Переходим к необходимому хосту - Configuration - Hosts - вводим в поле "Name" имя хоста
-
Заходим в настройки хоста - добавляем в поле Templates MSSQL - ODBC
-
Заходим там же в настройках хоста во вкладку "Macros", заносим логин пароль:
-
{$MSSQL.USER} указываем логин
-
{$MSSQL.PASSWORD} указываем пароль
-
{$MSSQL.DSN} указываем имя как в блоке odbc.ini
-

Ставим на поле пароль тип - Secret text
Пример заполнения полей Macro
Если имя экземпляра mssql server нестандартное, или поднято несколько экземпляров на 1й машине.
-
В файле /etc/odbc.ini после адреса сервера прописываем имя экземпляра sql сервера.
[SRV-1C01] Driver = ODBC Driver 18 for SQL Server Server = 10.4.231.31\MSSQLSERVER_NEW PORT = 1433 TrustServerCertificate = yes-
{$MSSQL.INSTANCE} - указываем имя экземпляра в формате MSSQL$"Имя экземпляра"

-
-
Запускаем утилиту sqlcmd для изменения настроек mssql
Если пользователь, под которым произведён вход в систему, имеет доступ в mssql:
sqlcmd -S localhost
Если доступа нет, то заходим под sa, будет запрос пароля:
sqlcmd -S localhost -U sa
Если утилита sqlcmd не работает, то выполняем команды в SQL Server Management Studio
- Выполняем команды внутри mssql
USE master;
- Меняем данные в команде на сгенерированный пароль:
CREATE LOGIN zbxmonuser WITH PASSWORD = '<сгенерированный_пароль>';
- Продолжаем ввод команд
GRANT VIEW ANY DEFINITION TO zbxmonuser;
GRANT VIEW SERVER STATE TO zbxmonuser;
use msdb;
CREATE USER zbxmonuser;
GRANT SELECT ON OBJECT::msdb.dbo.sysjobs TO zbxmonuser;
GRANT SELECT ON OBJECT::msdb.dbo.sysjobservers TO zbxmonuser;
GRANT SELECT ON OBJECT::msdb.dbo.sysjobactivity TO zbxmonuser;
GRANT EXECUTE ON OBJECT::msdb.dbo.agent_datetime TO zbxmonuser;
GO
EXIT
- После этого в заббиксе должны начать собираться данные по mssql