From 27e26037e37eb46f6d9ac24fa2760159c79cfc7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=BE=D0=BB=D1=8F=D0=BA=D0=BE=D0=B2=20=D0=98=D0=B3?= =?UTF-8?q?=D0=BE=D1=80=D1=8C?= Date: Thu, 1 Aug 2019 17:55:44 +0300 Subject: [PATCH 1/5] Added collector for SQLErrors counter --- collector/mssql.go | 45 ++++++++++++++++++++++++++++++++++++++++- docs/collector.mssql.md | 3 ++- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/collector/mssql.go b/collector/mssql.go index 93a55f64..cccbc2b4 100644 --- a/collector/mssql.go +++ b/collector/mssql.go @@ -91,7 +91,7 @@ func mssqlBuildWMIInstanceClass(suffix string, instance string) string { type mssqlCollectorsMap map[string]mssqlCollectorFunc func mssqlAvailableClassCollectors() string { - return "accessmethods,availreplica,bufman,databases,dbreplica,genstats,locks,memmgr,sqlstats" + return "accessmethods,availreplica,bufman,databases,dbreplica,genstats,locks,memmgr,sqlstats,sqlerrors" } func (c *MSSQLCollector) getMSSQLCollectors() mssqlCollectorsMap { @@ -105,6 +105,7 @@ func (c *MSSQLCollector) getMSSQLCollectors() mssqlCollectorsMap { mssqlCollectors["locks"] = c.collectLocks mssqlCollectors["memmgr"] = c.collectMemoryManager mssqlCollectors["sqlstats"] = c.collectSQLStats + mssqlCollectors["sqlerrors"] = c.collectSQLErrors return mssqlCollectors } @@ -358,6 +359,9 @@ type MSSQLCollector struct { SQLStatsSQLReCompilations *prometheus.Desc SQLStatsUnsafeAutoParams *prometheus.Desc + // Win32_PerfRawData_{instance}_SQLServerSQLErrors + SQLErrorsErrors *prometheus.Desc + mssqlInstances mssqlInstancesType mssqlCollectors mssqlCollectorsMap mssqlChildCollectorFailure int @@ -1637,6 +1641,14 @@ func NewMSSQLCollector() (Collector, error) { nil, ), + // Win32_PerfRawData_{instance}_SQLServerSQLErrors + SQLErrorsErrors: prometheus.NewDesc( + prometheus.BuildFQName(Namespace, subsystem, "sqlerrors_errors"), + "(SQLErrors.Errors)", + []string{"instance", "resource"}, + nil, + ), + mssqlInstances: getMSSQLInstances(), } @@ -3558,3 +3570,34 @@ func (c *MSSQLCollector) collectSQLStats(ch chan<- prometheus.Metric, sqlInstanc return nil, nil } + +type win32PerfRawDataSQLServerSQLErrors struct { + Name string + Errorssec uint64 +} + +// Win32_PerfRawData_MSSQLSERVER_SQLServerErrors docs: +// - https://docs.microsoft.com/en-us/sql/relational-databases/performance-monitor/sql-server-sql-errors-object +func (c *MSSQLCollector) collectSQLErrors(ch chan<- prometheus.Metric, sqlInstance string) (*prometheus.Desc, error) { + var dst []win32PerfRawDataSQLServerSQLErrors + log.Debugf("mssql_sqlerrors collector iterating sql instance %s.", sqlInstance) + + class := mssqlBuildWMIInstanceClass("SQLErrors", sqlInstance) + q := queryAllForClassWhere(&dst, class, `Name <> '_Total'`) + if err := wmi.Query(q, &dst); err != nil { + return nil, err + } + + for _, v := range dst { + resource := v.Name + + ch <- prometheus.MustNewConstMetric( + c.SQLErrorsErrors, + prometheus.CounterValue, + float64(v.Errorssec), + sqlInstance, resource, + ) + } + + return nil, nil +} \ No newline at end of file diff --git a/docs/collector.mssql.md b/docs/collector.mssql.md index 5812eddf..49781361 100644 --- a/docs/collector.mssql.md +++ b/docs/collector.mssql.md @@ -5,7 +5,7 @@ The mssql collector exposes metrics about the MSSQL server ||| -|- Metric name prefix | `mssql` -Classes | [`Win32_PerfRawData_MSSQLSERVER_SQLServerAccessMethods`](https://docs.microsoft.com/en-us/sql/relational-databases/performance-monitor/sql-server-access-methods-object)
[`Win32_PerfRawData_MSSQLSERVER_SQLServerAvailabilityReplica`](https://docs.microsoft.com/en-us/sql/relational-databases/performance-monitor/sql-server-availability-replica)
[`Win32_PerfRawData_MSSQLSERVER_SQLServerBufferManager`](https://docs.microsoft.com/en-us/sql/relational-databases/performance-monitor/sql-server-buffer-manager-object)
[`Win32_PerfRawData_MSSQLSERVER_SQLServerDatabaseReplica`](https://docs.microsoft.com/en-us/sql/relational-databases/performance-monitor/sql-server-database-replica)
[`Win32_PerfRawData_MSSQLSERVER_SQLServerDatabases`](https://docs.microsoft.com/en-us/sql/relational-databases/performance-monitor/sql-server-databases-object?view=sql-server-2017)
[`Win32_PerfRawData_MSSQLSERVER_SQLServerGeneralStatistics`](https://docs.microsoft.com/en-us/sql/relational-databases/performance-monitor/sql-server-general-statistics-object)
[`Win32_PerfRawData_MSSQLSERVER_SQLServerLocks`](https://docs.microsoft.com/en-us/sql/relational-databases/performance-monitor/sql-server-locks-object)
[`Win32_PerfRawData_MSSQLSERVER_SQLServerMemoryManager`](https://docs.microsoft.com/en-us/sql/relational-databases/performance-monitor/sql-server-memory-manager-object)
[`Win32_PerfRawData_MSSQLSERVER_SQLServerSQLStatistics`](https://docs.microsoft.com/en-us/sql/relational-databases/performance-monitor/sql-server-sql-statistics-object) +Classes | [`Win32_PerfRawData_MSSQLSERVER_SQLServerAccessMethods`](https://docs.microsoft.com/en-us/sql/relational-databases/performance-monitor/sql-server-access-methods-object)
[`Win32_PerfRawData_MSSQLSERVER_SQLServerAvailabilityReplica`](https://docs.microsoft.com/en-us/sql/relational-databases/performance-monitor/sql-server-availability-replica)
[`Win32_PerfRawData_MSSQLSERVER_SQLServerBufferManager`](https://docs.microsoft.com/en-us/sql/relational-databases/performance-monitor/sql-server-buffer-manager-object)
[`Win32_PerfRawData_MSSQLSERVER_SQLServerDatabaseReplica`](https://docs.microsoft.com/en-us/sql/relational-databases/performance-monitor/sql-server-database-replica)
[`Win32_PerfRawData_MSSQLSERVER_SQLServerDatabases`](https://docs.microsoft.com/en-us/sql/relational-databases/performance-monitor/sql-server-databases-object?view=sql-server-2017)
[`Win32_PerfRawData_MSSQLSERVER_SQLServerGeneralStatistics`](https://docs.microsoft.com/en-us/sql/relational-databases/performance-monitor/sql-server-general-statistics-object)
[`Win32_PerfRawData_MSSQLSERVER_SQLServerLocks`](https://docs.microsoft.com/en-us/sql/relational-databases/performance-monitor/sql-server-locks-object)
[`Win32_PerfRawData_MSSQLSERVER_SQLServerMemoryManager`](https://docs.microsoft.com/en-us/sql/relational-databases/performance-monitor/sql-server-memory-manager-object)
[`Win32_PerfRawData_MSSQLSERVER_SQLServerSQLStatistics`](https://docs.microsoft.com/en-us/sql/relational-databases/performance-monitor/sql-server-sql-statistics-object)
[`Win32_PerfRawData_MSSQLSERVER_SQLServerSQLErrors`](https://docs.microsoft.com/en-us/sql/relational-databases/performance-monitor/sql-server-sql-errors-object) Enabled by default? | No ## Flags @@ -230,6 +230,7 @@ Name | Description | Type | Labels `wmi_mssql_sqlstats_sql_compilations` | _Not yet documented_ | counter | `instance` `wmi_mssql_sqlstats_sql_recompilations` | _Not yet documented_ | counter | `instance` `wmi_mssql_sqlstats_unsafe_auto_parameterization_attempts` | _Not yet documented_ | counter | `instance` +`wmi_mssql_sqlerror_errors` | _Not yet documented_ | counter | `instance` ### Example metric _This collector does not yet have explained examples, we would appreciate your help adding them!_ From 4d9fb1be72136af2b7357974f0c70385740e632e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=BE=D0=BB=D1=8F=D0=BA=D0=BE=D0=B2=20=D0=98=D0=B3?= =?UTF-8?q?=D0=BE=D1=80=D1=8C?= Date: Thu, 1 Aug 2019 17:57:45 +0300 Subject: [PATCH 2/5] Added missing comments --- docs/collector.mssql.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/collector.mssql.md b/docs/collector.mssql.md index 49781361..ddbc63c7 100644 --- a/docs/collector.mssql.md +++ b/docs/collector.mssql.md @@ -12,7 +12,7 @@ Enabled by default? | No ### `--collectors.mssql.classes-enabled` -Comma-separated list of MSSQL WMI classes to use. Supported values are `accessmethods`, `availreplica`, `bufman`, `databases`, `dbreplica`, `genstats`, `locks`, `memmgr` and `sqlstats`. +Comma-separated list of MSSQL WMI classes to use. Supported values are `accessmethods`, `availreplica`, `bufman`, `databases`, `dbreplica`, `genstats`, `locks`, `memmgr`, `sqlstats` and `sqlerrors`. ### `--collectors.mssql.class-print` @@ -230,7 +230,7 @@ Name | Description | Type | Labels `wmi_mssql_sqlstats_sql_compilations` | _Not yet documented_ | counter | `instance` `wmi_mssql_sqlstats_sql_recompilations` | _Not yet documented_ | counter | `instance` `wmi_mssql_sqlstats_unsafe_auto_parameterization_attempts` | _Not yet documented_ | counter | `instance` -`wmi_mssql_sqlerror_errors` | _Not yet documented_ | counter | `instance` +`wmi_mssql_sqlerror_errors` | _Not yet documented_ | counter | `instance`, `resource` ### Example metric _This collector does not yet have explained examples, we would appreciate your help adding them!_ From cb6a91b70599e5aaa3aa2986e1000f33fff8a6ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=BE=D0=BB=D1=8F=D0=BA=D0=BE=D0=B2=20=D0=98=D0=B3?= =?UTF-8?q?=D0=BE=D1=80=D1=8C?= Date: Thu, 1 Aug 2019 17:58:44 +0300 Subject: [PATCH 3/5] Typo fix --- docs/collector.mssql.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/collector.mssql.md b/docs/collector.mssql.md index ddbc63c7..7a78cd8a 100644 --- a/docs/collector.mssql.md +++ b/docs/collector.mssql.md @@ -230,7 +230,7 @@ Name | Description | Type | Labels `wmi_mssql_sqlstats_sql_compilations` | _Not yet documented_ | counter | `instance` `wmi_mssql_sqlstats_sql_recompilations` | _Not yet documented_ | counter | `instance` `wmi_mssql_sqlstats_unsafe_auto_parameterization_attempts` | _Not yet documented_ | counter | `instance` -`wmi_mssql_sqlerror_errors` | _Not yet documented_ | counter | `instance`, `resource` +`wmi_mssql_sqlerrors_errors` | _Not yet documented_ | counter | `instance`, `resource` ### Example metric _This collector does not yet have explained examples, we would appreciate your help adding them!_ From 6322bb124f66db4b5bca7c0662d77819239eb119 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=BE=D0=BB=D1=8F=D0=BA=D0=BE=D0=B2=20=D0=98=D0=B3?= =?UTF-8?q?=D0=BE=D1=80=D1=8C?= Date: Thu, 1 Aug 2019 18:00:42 +0300 Subject: [PATCH 4/5] Undo ps1 changes --- tools/collector-generator/New-Collector.ps1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/collector-generator/New-Collector.ps1 b/tools/collector-generator/New-Collector.ps1 index bb03c2e4..d926d277 100644 --- a/tools/collector-generator/New-Collector.ps1 +++ b/tools/collector-generator/New-Collector.ps1 @@ -17,7 +17,7 @@ else { $wmiObject = Get-WMIObject -ComputerName $ComputerName -Class $Class } -$members = @($wmiObject ` +$members = $wmiObject ` | Get-Member -MemberType Properties ` | Where-Object { $_.Definition -Match '^u?int' -and $_.Name -NotMatch '_' } ` | Select-Object Name, @{Name="Type";Expression={$_.Definition.Split(" ")[0]}} @@ -25,7 +25,7 @@ $input = @{ "Class"=$Class; "CollectorName"=$CollectorName; "Members"=$members -} | ConvertTo-Json) +} | ConvertTo-Json $outFileName = "..\..\collector\$CollectorName.go".ToLower() $input | .\collector-generator.exe | Out-File -NoClobber -Encoding UTF8 $outFileName go fmt $outFileName From 37d1c4e958d3a0c65f4f69b1f97c868e1ae5147d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=BE=D0=BB=D1=8F=D0=BA=D0=BE=D0=B2=20=D0=98=D0=B3?= =?UTF-8?q?=D0=BE=D1=80=D1=8C?= Date: Sat, 3 Aug 2019 20:24:02 +0300 Subject: [PATCH 5/5] Errors counter renamed --- collector/mssql.go | 10 +++++----- docs/collector.mssql.md | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/collector/mssql.go b/collector/mssql.go index cccbc2b4..b5467029 100644 --- a/collector/mssql.go +++ b/collector/mssql.go @@ -360,7 +360,7 @@ type MSSQLCollector struct { SQLStatsUnsafeAutoParams *prometheus.Desc // Win32_PerfRawData_{instance}_SQLServerSQLErrors - SQLErrorsErrors *prometheus.Desc + SQLErrorsTotal *prometheus.Desc mssqlInstances mssqlInstancesType mssqlCollectors mssqlCollectorsMap @@ -1642,9 +1642,9 @@ func NewMSSQLCollector() (Collector, error) { ), // Win32_PerfRawData_{instance}_SQLServerSQLErrors - SQLErrorsErrors: prometheus.NewDesc( - prometheus.BuildFQName(Namespace, subsystem, "sqlerrors_errors"), - "(SQLErrors.Errors)", + SQLErrorsTotal: prometheus.NewDesc( + prometheus.BuildFQName(Namespace, subsystem, "sql_errors_total"), + "(SQLErrors.Total)", []string{"instance", "resource"}, nil, ), @@ -3592,7 +3592,7 @@ func (c *MSSQLCollector) collectSQLErrors(ch chan<- prometheus.Metric, sqlInstan resource := v.Name ch <- prometheus.MustNewConstMetric( - c.SQLErrorsErrors, + c.SQLErrorsTotal, prometheus.CounterValue, float64(v.Errorssec), sqlInstance, resource, diff --git a/docs/collector.mssql.md b/docs/collector.mssql.md index 7a78cd8a..76c7c1a1 100644 --- a/docs/collector.mssql.md +++ b/docs/collector.mssql.md @@ -230,7 +230,7 @@ Name | Description | Type | Labels `wmi_mssql_sqlstats_sql_compilations` | _Not yet documented_ | counter | `instance` `wmi_mssql_sqlstats_sql_recompilations` | _Not yet documented_ | counter | `instance` `wmi_mssql_sqlstats_unsafe_auto_parameterization_attempts` | _Not yet documented_ | counter | `instance` -`wmi_mssql_sqlerrors_errors` | _Not yet documented_ | counter | `instance`, `resource` +`wmi_mssql_sql_errors_total` | _Not yet documented_ | counter | `instance`, `resource` ### Example metric _This collector does not yet have explained examples, we would appreciate your help adding them!_