Skip to content

Commit e14cf49

Browse files
m82labsdanielnelson
authored andcommitted
Added additional SQL Server performance counters (#3770)
* Included system databases in server properties, added backup/restore throughput counter, error counters, and user settable counters. * Added more resource governor counters. * Added Target and Total Server Memory counters. * Removed the c_type tag from the performance counters query, added more documentation instead.
1 parent 2af3d8c commit e14cf49

File tree

2 files changed

+57
-9
lines changed

2 files changed

+57
-9
lines changed

plugins/inputs/sqlserver/README.md

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,10 +89,46 @@ The new (version 2) metrics provide:
8989
- *Log activity*: Log bytes flushed/sec, Log flushes/sec, Log Flush Wait Time
9090
- *Memory*: PLE, Page reads/sec, Page writes/sec, + more
9191
- *TempDB*: Free space, Version store usage, Active temp tables, temp table creation rate, + more
92-
- *Resource Governor*: CPU Usage, Requests/sec, Queued Requests, and Blocked tasks per workload group
92+
- *Resource Governor*: CPU Usage, Requests/sec, Queued Requests, and Blocked tasks per workload group + more
9393
- *Server properties*: Number of databases in all possible states (online, offline, suspect, etc.), cpu count, physical memory, SQL Server service uptime, and SQL Server version
9494
- *Wait stats*: Wait time in ms, number of waiting tasks, resource wait time, signal wait time, max wait time in ms, wait type, and wait category. The waits are categorized using the sasme categories used in Query Store.
9595

96+
The following metrics can be used directly, with no delta calculations:
97+
- SQLServer:Buffer Manager\Buffer cache hit ratio
98+
- SQLServer:Buffer Manager\Page life expectancy
99+
- SQLServer:Buffer Node\Page life expectancy
100+
- SQLServer:Database Replica\Log Apply Pending Queue
101+
- SQLServer:Database Replica\Log Apply Ready Queue
102+
- SQLServer:Database Replica\Log Send Queue
103+
- SQLServer:Database Replica\Recovery Queue
104+
- SQLServer:Databases\Data File(s) Size (KB)
105+
- SQLServer:Databases\Log File(s) Size (KB)
106+
- SQLServer:Databases\Log File(s) Used Size (KB)
107+
- SQLServer:Databases\XTP Memory Used (KB)
108+
- SQLServer:General Statistics\Active Temp Tables
109+
- SQLServer:General Statistics\Processes blocked
110+
- SQLServer:General Statistics\Temp Tables For Destruction
111+
- SQLServer:General Statistics\User Connections
112+
- SQLServer:Memory Broker Clerks\Memory broker clerk size
113+
- SQLServer:Memory Manager\Memory Grants Pending
114+
- SQLServer:Memory Manager\Target Server Memory (KB)
115+
- SQLServer:Memory Manager\Total Server Memory (KB)
116+
- SQLServer:Resource Pool Stats\Active memory grant amount (KB)
117+
- SQLServer:Resource Pool Stats\Disk Read Bytes/sec
118+
- SQLServer:Resource Pool Stats\Disk Read IO Throttled/sec
119+
- SQLServer:Resource Pool Stats\Disk Read IO/sec
120+
- SQLServer:Resource Pool Stats\Disk Write Bytes/sec
121+
- SQLServer:Resource Pool Stats\Disk Write IO Throttled/sec
122+
- SQLServer:Resource Pool Stats\Disk Write IO/sec
123+
- SQLServer:Resource Pool Stats\Used memory (KB)
124+
- SQLServer:Transactions\Free Space in tempdb (KB)
125+
- SQLServer:Transactions\Version Store Size (KB)
126+
- SQLServer:User Settable\Query
127+
- SQLServer:Workload Group Stats\Blocked tasks
128+
- SQLServer:Workload Group Stats\CPU usage %
129+
- SQLServer:Workload Group Stats\Queued requests
130+
- SQLServer:Workload Group Stats\Requests completed/sec
131+
96132
Version 2 queries have the following tags:
97133
- `host`: Physical host name
98134
- `sql_instance`: Physical host and instance name (hostname:instance)

plugins/inputs/sqlserver/sqlserver.go

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,6 @@ CROSS APPLY (
390390
SELECT *
391391
FROM @sys_info
392392
) AS sinfo
393-
WHERE database_id > 4
394393
OPTION( RECOMPILE );
395394
`
396395

@@ -445,7 +444,10 @@ WHERE (
445444
'Memory Grants Pending',
446445
'Free list stalls/sec',
447446
'Buffer cache hit ratio',
448-
'Buffer cache hit ratio base'
447+
'Buffer cache hit ratio base',
448+
'Backup/Restore Throughput/sec',
449+
'Total Server Memory (KB)',
450+
'Target Server Memory (KB)'
449451
)
450452
) OR (
451453
instance_name IN ('_Total','Column store object pool')
@@ -494,6 +496,21 @@ WHERE (
494496
'Requests completed/sec',
495497
'Blocked tasks'
496498
)
499+
) OR (
500+
object_name = 'SQLServer:Resource Pool Stats'
501+
AND counter_name IN (
502+
'Active memory grant amount (KB)',
503+
'Disk Read Bytes/sec',
504+
'Disk Read IO Throttled/sec',
505+
'Disk Read IO/sec',
506+
'Disk Write Bytes/sec',
507+
'Disk Write IO Throttled/sec',
508+
'Disk Write IO/sec',
509+
'Used memory (KB)'
510+
)
511+
) OR object_name IN (
512+
'SQLServer:User Settable',
513+
'SQLServer:SQL Errors'
497514
)
498515
499516
SELECT 'sqlserver_performance' AS [measurement],
@@ -502,12 +519,7 @@ SELECT 'sqlserver_performance' AS [measurement],
502519
pc.object_name AS [object],
503520
pc.counter_name AS [counter],
504521
CASE pc.instance_name WHEN '_Total' THEN 'Total' ELSE ISNULL(pc.instance_name,'') END AS [instance],
505-
CASE WHEN pc.cntr_type = 537003264 AND pc1.cntr_value > 0 THEN (pc.cntr_value * 1.0) / (pc1.cntr_value * 1.0) * 100 ELSE pc.cntr_value END AS [value],
506-
CASE
507-
WHEN pc.cntr_type = 272696576 THEN 'rate'
508-
WHEN pc.cntr_type IN (65792,537003264) THEN 'raw'
509-
ELSE 'unknown'
510-
END AS c_type
522+
CASE WHEN pc.cntr_type = 537003264 AND pc1.cntr_value > 0 THEN (pc.cntr_value * 1.0) / (pc1.cntr_value * 1.0) * 100 ELSE pc.cntr_value END AS [value]
511523
FROM @PCounters AS pc
512524
LEFT OUTER JOIN @PCounters AS pc1
513525
ON (

0 commit comments

Comments
 (0)