Мониторинг здоровья MS SQL Server

Описывается очередной изобретенный «велосипед» для мониторинга здоровья MS SQL Server, который мы используем в glassdoor.com — втором крупнейшем в США сайте для соискателей работы.

Думаю, что с понятием статистики ожиданий MS SQL Server знакомо большинство — SQL Server детально отслеживает потребление ресурсов и длительность выполнения внутренних процессов и позволяет пользователю получать кумулятивные значения со времени старта или сброса статистики. 
Хорошее описание есть здесь — https://habr.com/post/216309/

Наш веб-сайт целиком полагается на MS SQL Server, поэтому важно обеспечить бесперебойную работу и максимально быструю реакцию на возможные изменения. 

Во всех серьезных системах мониторинга баз данных есть возможность сбора статистики ожиданий и построение необходимой аналитики. По ряду причин мы не были удовлетворены тем что получаем "из коробки" (основная масса мониторингааналитии построена на https://www.appdynamics.com/), поэтому было решено реализовать собственный параллельный процесс сбора и визуализации данных.

Решение состоит из трех частей:
1) SQL Agent Task, которое непрерывно собирает накопленную статистику на каждом сервере. Каждые 15 секунд вычисляется разница между текущей и предыдущей статистикой и записывается в таблицу локальной базы данных (хранимая процедура [Monitor].[CollectWaitStatistics]).
2) Централизованный сервер для сбора статистики со всех серверов и отправки данных в ElasticSearch (три остальных файла).
3) ElasticSearch + Kibana для хранения, анализа и визуализации данных.

Хранимые процедуры и скрипт PowerShell можно скачать в приложенном архиве либо с гитхаба: 
https://github.com/alekseybochkov/publications/blob/master/sql-waits-monitoring/

Как эти данные используются?

У нас нет каких либо средств уведомления о проблемах на основе этих данных. Не все отлонения являются проблемами, а если это проблема, но центральная система мониторинга просигнализирует об этом.

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

Вопросы и комментарии только приветствуются.
Если интересны какие-то определенные моменты из опыта эксплуатации этих баз данных — готов поделится.

2 Comments

  1. capitan

    А рабочий сервер такой сбор статистики не нагружает ?

    Reply
  2. Aleksey.Bochkov

    (1) Существенной нагрузки этот процесс не создает.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *