Делюсь полезным шаблоном для мониторинга Microsoft SQL Server 2014. Ось - Windows Server 2012 R2.
В шаблоне 70 элементов данных и 23 триггера. Плюс 11 прототипов элементов данных и 3 прототипа триггеров.
Скачать шаблон: zabbix шаблон MSSQL 2014.
Ещё полезно: Zabbix шаблон для мониторинга Jobs у Microsoft SQL Server 2014.
Дополнительно может понадобиться добавить в Administration > General > Regular expressions следующее регулярное выражение:
Name: Databases for discovery
Expression: ^(master|model|msdb|ReportServer|ReportServerTempDB|tempdb)$
Type: Result is FALSE
Также на сервере нужно настроить пользовательские параметры и залить ps скрипты для получения данных из базы.
Шаблон был сделан на основе https://share.zabbix.com/databases/microsoft-sql-server/ms-sql-2012-2016-template-for-zabbix-3-2-3-4. Скачать используемую мной версию: zabbix шаблон MSSQL 2014.
Мой шаблон имеет некоторые отличия, опишу как я модифицировал шаблон и почему. Также расскажу как добавить в него свои элементы данных.
Установка и модификация шаблона
Сначала скачиваем zbx-mssql-master.zip по ссылке выше или прямо из этой статьи. Возможно, в исходнике будет уже более полная версия. Архив содержит инструкцию по установке, опишу как действовал я. Распаковываем архив.
На вашем MSSQL сервере редактируем файл конфигурации zabbix агента zabbix_agentd.win.conf. Добавляем строку
Include=C:\zabbix\conf\userparameter_mssql.conf
Собственно, вы можете указать свой собственный путь, который вам нужен.
Файл userparameter_mssql.conf копируем из архива по указанному в Include пути.
Редактируем скопированный userparameter_mssql.conf. В нём есть два пользовательских параметра:
Пути к скриптам mssql_basename.ps1 и mssql_version.ps1 меняем на свои.
Копируем папку scripts из архива по указанному вами пути.
В zabbix добавляем регулярное выражение в Administration > General > Regular expressions:
Name: MS SQL Databases for discovery
Expression: ^(master|model|msdb|ReportServer|ReportServerTempDB|tempdb)$
Type: Result is FALSE
Внимание: на сайте с исходным шаблоном и в инструкции совершена ошибка, название регулярки должно быть "MS SQL Databases for discovery", а не "Databases for discovery"!
Примечание: Если вы собираетесь использовать мой модифицированный шаблон, то добавлять value mapping нет необходимости. Если же вы планируете использовать исходный шаблон, то добавляйте.
Импортируем value mapping из файла zbx_valuemaps_mssql.xml
Дальше импортируем сам шаблон. Или мой модифицированный zbx_mssql_2014.xml или исходный из архива zbx_template_mssql.xml.
Шаблон появляется в списке. Модифицированный шаблон имеет в названии 2014.
Модифицируем файл mssql_basename.ps1. Прописываем пользователя и пароль для доступа к базе данных.
Перезапускаем zabbix agent.
Своему хосту добавляем свежесозданный шаблон.
Если вы используете исходный шаблон, то внесите изменения в несколько элементов данных. Проверьте все элементы шаблона, которые содержат в названии "(KB)".
Отредактируйте каждый.
Зайдите во вкладку Preprocessing. Если нет Custom multiplier, то добавьте его со значением 1024. Я нашёл три таких "забытых" элемента данных.
Я в своём шаблоне уже внёс исправления, иначе будет неверно отределяться размер файлов данных и лога транзакций каждой базы. На рисунке верхний элемент уже исправлен, у него размер исчисляется гигабайтами. А нижние два - не исправлены, размер в мегабайтах и килобайтах, что на порядок неверно.
После исправления:
Если вы используете исходный шаблон, то найдите сломанный элемент данных как на рисунке и измените тип на Numeric (float).
В моём шаблоне это уже исправлено.
Я ещё внес несколько изменений в исходный шаблон. В частности, удалил элемент данных и триггер связанный с получением статуса каждой базы данных через ODBC. Ибо нечего заббиксу иметь доступ к базе данных, кто это вообще придумал... Я переживу отсутствие этого элемента данных. Данный шаг позволил грохнуть требуемый value mapping. Если вы со мной согласны - можете его тоже удалить.
Также я удалил следующие элементы данных и триггеры:
Они делают следующее, как только лог базы данных пару раз увеличивается - триггер срабатывает. И всегда висит, потому что это счётчик, он не уменьшается. Зачем был нужен такой триггер - не понимаю. Со сжатием лога - то же самое, только он срабатывал после 15-го сжатия. У меня БД ежедневно жмётся и увеличивается. Для режима FULL это просто необходимо, иначе место на диске закончится. Так что не увидел смысла в этих триггерах.
Свои элементы данных
Я обещал рассказать про возможность добавлять свои элементы данных. Всё очень просто. Данный шаблон использует виндовые счётчики производительности, которые ставятся вместе с MSSQL сервером. Но не все. Вы можете добавлять свои, из списка имеющихся. Список счётчиков производительности и объектов можно увидеть здесь: https://docs.microsoft.com/en-us/sql/relational-databases/performance-monitor/use-sql-server-objects.
К примеру, прототип элемента данных perf_counter["\SQLServer:Databases({#DBNAME})\Active Transactions"] использует счётчик Active Transactions объекта Databases.
Клонируете текущий элемент данных и вписываете из списка требуемый счётчик.