Пользовательские счетчики производительности SQL Server - PullRequest
5 голосов
/ 15 ноября 2011

Мне нужно создать несколько счетчиков для проверки и мониторинга работоспособности системы.Поскольку существует множество инструментов для регистрации, составления отчетов и оповещения о данных Windows Perfmon, я собираюсь опубликовать эти данные как счетчики Perfmon.

Некоторые значения должны поступать из базы данных SQL Server 2008, примерами которых являютсяколичество записей в таблице, используемой в качестве очереди, и возраст самой старой записи в таблице.Хотя, похоже, этого можно добиться с помощью SQL Server, объекта, устанавливаемого пользователем и хранимых процедур sp_user_counter1 до sp_user_counter10, это ограничивает меня только 10 счетчиками на сервер, а имена и описания счетчиков не могутбыть настроены так, чтобы отражать счетчик.

Без создания собственного приложения для создания счетчиков Perfmon, есть ли другие способы создания счетчиков в SQL Server?Если нет, существуют ли какие-либо инструменты / проекты, которые позволяют создавать пользовательские счетчики с использованием SQL-запросов?

Ответы [ 4 ]

1 голос
/ 05 октября 2016

Поздний ответ - но может быть полезным для других посетителей темы

Помимо других упомянутых решений, я могу предложить сторонний инструмент под названием ApexSQL Monitor. Это позволяет создавать пользовательские счетчики производительности SQL для конкретной конфигурации мониторинга системы по требованию, отслеживания тенденций и оповещений.

Пользовательские метрики - это запросы на основе T-SQL, которые можно добавить в этот инструмент. Данные, собранные с помощью этих запросов, можно анализировать и оповещать, как и другие встроенные метрики.

В следующей статье приведены примеры пользовательских счетчиков производительности SQL, которые могут быть полезны: http://solutioncenter.apexsql.com/using-custom-sql-performance-counters-to-monitor-sql-server/

0 голосов
/ 01 марта 2018

Это можно сделать с помощью недокументированных команд DBCC:

Чтобы создать новую метрику:

dbcc addinstance ('SQLServer:User Settable', 'MyNewCounter')

Чтобы изменить ее значение:

dbcc setinstance ('SQLServer:User Settable', 'Query', 'MyNewCounter', 5)

Удалить:

dbcc deleteinstance ('SQLServer:User Settable', 'MyNewCounter')
0 голосов
/ 12 мая 2015

Если вы посмотрите на источник хранимых процедур, вы получите:

ALTER procedure [sys].[sp_user_counter2] @newvalue int as
dbcc setinstance ('SQLServer:User Settable', 'Query', 'User counter 2', @newvalue)

=> вы можете попробовать вызвать dbcc setinstance со своим собственным именем счетчика

0 голосов
/ 03 апреля 2012

Я думаю, что единственный способ специально использовать SQL-сервер для пользовательских данных perfmon - это использовать десять хранимых процедур sp_user_counterX. Я немного искал, и единственными результатами, которые были найдены в моем поиске, были эти сохраненные процессы.

У меня есть еще одно предложение, которое требует немного кодирования. В этой статье объясняется, как создать небольшое приложение (будь то приложение службы или консольное приложение), которое позволяет вам создавать столько собственных счетчиков производительности, сколько вам нужно. Вы можете использовать это для создания своих собственных счетчиков.

В нашей организации мы используем Idera Diagnostic Manager, который мы считаем очень полезным, поскольку мы можем использовать встроенные метрики для мониторинга наших серверов, а также для создания наших собственных счетчиков. Мы находим, что он работает очень хорошо, и хотя он довольно дорогой, это единственный известный мне инструмент мониторинга, который не требует каких-либо агентов на сервере SQL.

...