Думаю, что с понятием статистики ожиданий 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/
Как эти данные используются?
У нас нет каких либо средств уведомления о проблемах на основе этих данных. Не все отлонения являются проблемами, а если это проблема, но центральная система мониторинга просигнализирует об этом.
Основной дашбоард построен в виде графиков для каждого кластера с суммированными значениями ожиданий. Он построянно видим всеми и обновляется каждую минуту.
Одного взгляда на него достаточно, чтобы сказать, что кластер серверов здоров или испытывает проблемы.
Вопросы и комментарии только приветствуются.
Если интересны какие-то определенные моменты из опыта эксплуатации этих баз данных — готов поделится.
А рабочий сервер такой сбор статистики не нагружает ?
(1) Существенной нагрузки этот процесс не создает.