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

Main

Оценка: 84.94% - 14 Голосов

Общая

Не маловажным аспектом при работе с MS SQL Server является в отслеживание его производительности. Производительность можно отслеживать через счётчики производительности, а что бы сделать это централизованно и получать информацию со всех серверов в одном месте нам поможет Icinga2 и модуль check_wmi_plus.

Данная статья опускает этапы установки и первоначальной настройки плагина check_wmi_plus. Данные этапы расписаны в статье Безагентный мониторинг Windows систем

 Так же есть более функциональный модуль, настройка и работа которого описана в статье Мониторинг MS SQL Server в Icinga2 часть 2

Описание работы сервиса

Приведу пример описания работы сервиса собирающего общую статистику SQL сервера:


apply Service "SQL_Statistics" {
  display_name = "Статистика SQL"
  import "wmi-service"
  vars.check_mode = "checksql"
  vars.wmi_submode = "sqlstats"
  assign where host.vars.sql == "true"
  ignore where host.vars.disable_wmi
  vars.service_type = "SQL_State"
}

Указание на проверку именно SQL сервера установлено параметром vars.check_mode = "checksql", но у данного параметра есть множество подпараметров, конкретизирующих что именно проверять и указываются в строе vars.wmi_submode = "sqlstats"

 

Список возможных подпараметров:

general  - общая информация;
buffermanager - менеджер буферов;
latches - статистика блокировки (latches);
locks - статистика блокировки (locks);
sqlstats - SQL статистика;
waits - статистика ожиданий;
memory - статистика памяти;
cache - статистика кэш.

 

Описание работы хоста

Так как данный плагин может мониторить так же состояние операционной системы то я решил вынести мониторинг SQL в отдельную группу, создав отдельный файл с конфигурацией имеющегося windows хоста, но оставив проверку только SQL


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

 

Очень важным параметром тут является параметр wmi_arg1. В данный пункт нужно указать часть WMI класса состоящего из экземпляра SQL (SQL Instance).

При установке SQL по умолчанию это будет MSSQLSERVER_SQLSERVER.

Для версии SQL Express это будет MSSQLSQLEXPRESS_MSSQLSQLEXPRESS.

Для нестандартного имени экземпляра придётся поработать с именами WMI классов.

Обычно, если имя экземпляра является TEST, то параметр будет выгладить как MSSQLTEST_MSSQLTEST.

 

Возможные ошибки

Часть возможных ошибок и варианты их решения описаны тут.

 

Ошибка [wmi/wmic.c:212:main()] ERROR: Retrieve result data. NTSTATUS: NT code 0x80041010 - NT code 0x80041010

Данная ошибка говорит о неправильном названии экземпляра SQL или отсутствии счётчиков производительности SQL.

 

Варианты решения

Прежде всего необходимо убедиться в правильных правах доступа к state-файлам на Icinga2
Подробнее описано тут.

Так-же вам необходимо узнать, присутствуют ли в системе счётчики, для этого выполним команду perfmon.
В появившемся окне необходимо открыть диалоговое окно создания сборщиков данных и открыть список имеющихся счётчиков.

Если счётчики присутствуют, то список будет выглядеть как на картинках ниже, а так же будет говорить о том, что в вашем случаешь ошибка NT code 0x80041010 указывает на неправильное имя экземпляра SQL.

View the embedded image gallery online at:
https://itcrowd.top/mssql-icinga2#sigProId25a08ec7ab

Если же счётчики отсутствуют то вам надо либо их перерегистрировать или переустановить MS SQL Server.

 

Перерегестрация счётчиков

Необходимо что бы служба Удалённый реестр (Remote Registry) была включена.

Для перерегистрации вам необходимо командную строку от имени администратора и перейти в папку Binn, расположенная в папе с установкой SQL.

Пример C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Binn

Выполнимость команду unlodctr MSSQLSERVER для стандартной установки. Если у вас не стандартное имя экземпляра то MSSQLSERVER заменить на MSSQL$ИМЯ_ЭКЗЕМПЛЯРА.

Далее выполнить команду lodctr perf-MSSQLSERVERsqlctr.ini. Если у вас не стандартное имя экземпляра то название файла будет выглядеть как perf-ИМЯ_ЭКЗЕМПЛЯРАsqlctr.ini.

После чего перезагрузить сервер.

 

Так же необходимо проверить ветку реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib на наличие параметра Disable Performance Counters - его значение должно быть установлено на 0.

Если вышеупомянутые действия не помогли, то возможным решением может стать перестройка списков счётчиков производительности командами:

%systemroot%\syswow64\lodctr /R

%systemroot%\system32\lodctr /R

Если же у вас установлена x86 SQL Server в x64 ОС то вам необходимо запускать системный монитор в x86 режиме командой

mmc /32 perfmon.msc

 

  • Просмотров: 10356
Добавить комментарий