add mssql accessmethod class

in the process of trying to build a grafana dashboard with "useful"
mssql metrics, I was looking around for what metrics might be useful and
came across an article of [15 SQL Server Performace Counters to Monitor](https://blogs.sentryone.com/allenwhite/sql-server-performance-counters-to-monitor/)

two of the suggested metrics are provided by the AccessMethod
class, which I was not yet capturing.

So I added metrics for the
Win32_PerfRawData_MSSQLSERVER_SQLServerAccessMethods class.
This commit is contained in:
Steve Zook
2018-08-03 13:09:40 -04:00
parent 626a25cd00
commit a20cf1274a

View File

@@ -1,4 +1,6 @@
// returns data points from the following 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
@@ -81,11 +83,12 @@ func getMSSQLInstances() mssqlInstancesType {
type mssqlCollectorsMap map[string]mssqlCollectorFunc
func mssqlAvailableClassCollectors() string {
return "availreplica,bufman,databases,dbreplica,genstats,locks,memmgr,sqlstats"
return "accessmethods,availreplica,bufman,databases,dbreplica,genstats,locks,memmgr,sqlstats"
}
func (c *MSSQLCollector) getMSSQLCollectors() mssqlCollectorsMap {
mssqlCollectors := make(mssqlCollectorsMap)
mssqlCollectors["accessmethods"] = c.collectAccessMethods
mssqlCollectors["availreplica"] = c.collectAvailabilityReplica
mssqlCollectors["bufman"] = c.collectBufferManager
mssqlCollectors["databases"] = c.collectDatabases
@@ -123,6 +126,51 @@ type MSSQLCollector struct {
mssqlScrapeDurationDesc *prometheus.Desc
mssqlScrapeSuccessDesc *prometheus.Desc
// Win32_PerfRawData_{instance}_SQLServerAccessMethods
AUcleanupbatchesPersec *prometheus.Desc
AUcleanupsPersec *prometheus.Desc
ByreferenceLobCreateCount *prometheus.Desc
ByreferenceLobUseCount *prometheus.Desc
CountLobReadahead *prometheus.Desc
CountPullInRow *prometheus.Desc
CountPushOffRow *prometheus.Desc
DeferreddroppedAUs *prometheus.Desc
DeferredDroppedrowsets *prometheus.Desc
DroppedrowsetcleanupsPersec *prometheus.Desc
DroppedrowsetsskippedPersec *prometheus.Desc
ExtentDeallocationsPersec *prometheus.Desc
ExtentsAllocatedPersec *prometheus.Desc
FailedAUcleanupbatchesPersec *prometheus.Desc
Failedleafpagecookie *prometheus.Desc
Failedtreepagecookie *prometheus.Desc
ForwardedRecordsPersec *prometheus.Desc
FreeSpacePageFetchesPersec *prometheus.Desc
FreeSpaceScansPersec *prometheus.Desc
FullScansPersec *prometheus.Desc
IndexSearchesPersec *prometheus.Desc
InSysXactwaitsPersec *prometheus.Desc
LobHandleCreateCount *prometheus.Desc
LobHandleDestroyCount *prometheus.Desc
LobSSProviderCreateCount *prometheus.Desc
LobSSProviderDestroyCount *prometheus.Desc
LobSSProviderTruncationCount *prometheus.Desc
MixedpageallocationsPersec *prometheus.Desc
PagecompressionattemptsPersec *prometheus.Desc
PageDeallocationsPersec *prometheus.Desc
PagesAllocatedPersec *prometheus.Desc
PagescompressedPersec *prometheus.Desc
PageSplitsPersec *prometheus.Desc
ProbeScansPersec *prometheus.Desc
RangeScansPersec *prometheus.Desc
ScanPointRevalidationsPersec *prometheus.Desc
SkippedGhostedRecordsPersec *prometheus.Desc
TableLockEscalationsPersec *prometheus.Desc
Usedleafpagecookie *prometheus.Desc
Usedtreepagecookie *prometheus.Desc
WorkfilesCreatedPersec *prometheus.Desc
WorktablesCreatedPersec *prometheus.Desc
WorktablesFromCacheRatio *prometheus.Desc
// Win32_PerfRawData_{instance}_SQLServerAvailabilityReplica
BytesReceivedfromReplicaPersec *prometheus.Desc
BytesSenttoReplicaPersec *prometheus.Desc
@@ -327,6 +375,268 @@ func NewMSSQLCollector() (Collector, error) {
[]string{"collector", "instance"},
nil,
),
// Win32_PerfRawData_{instance}_SQLServerAccessMethods
AUcleanupbatchesPersec: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_au_batch_cleanups"),
"(AccessMethods.AUcleanupbatches)",
[]string{"instance"},
nil,
),
AUcleanupsPersec: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_au_cleanups"),
"(AccessMethods.AUcleanups)",
[]string{"instance"},
nil,
),
ByreferenceLobCreateCount: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_by_reference_lob_creates"),
"(AccessMethods.ByreferenceLobCreateCount)",
[]string{"instance"},
nil,
),
ByreferenceLobUseCount: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_by_reference_lob_uses"),
"(AccessMethods.ByreferenceLobUseCount)",
[]string{"instance"},
nil,
),
CountLobReadahead: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_lob_read_aheads"),
"(AccessMethods.CountLobReadahead)",
[]string{"instance"},
nil,
),
CountPullInRow: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_column_value_pulls"),
"(AccessMethods.CountPullInRow)",
[]string{"instance"},
nil,
),
CountPushOffRow: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_column_value_pushes"),
"(AccessMethods.CountPushOffRow)",
[]string{"instance"},
nil,
),
DeferreddroppedAUs: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_deferred_dropped_aus"),
"(AccessMethods.DeferreddroppedAUs)",
[]string{"instance"},
nil,
),
DeferredDroppedrowsets: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_deferred_dropped_rowsets"),
"(AccessMethods.DeferredDroppedrowsets)",
[]string{"instance"},
nil,
),
DroppedrowsetcleanupsPersec: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_dropped_rowset_cleanups"),
"(AccessMethods.Droppedrowsetcleanups)",
[]string{"instance"},
nil,
),
DroppedrowsetsskippedPersec: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_dropped_rowset_skips"),
"(AccessMethods.Droppedrowsetsskipped)",
[]string{"instance"},
nil,
),
ExtentDeallocationsPersec: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_extent_deallocations"),
"(AccessMethods.ExtentDeallocations)",
[]string{"instance"},
nil,
),
ExtentsAllocatedPersec: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_extent_allocations"),
"(AccessMethods.ExtentsAllocated)",
[]string{"instance"},
nil,
),
FailedAUcleanupbatchesPersec: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_au_batch_cleanup_failures"),
"(AccessMethods.FailedAUcleanupbatches)",
[]string{"instance"},
nil,
),
//
Failedleafpagecookie: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_leaf_page_cookie_failures"),
"(AccessMethods.Failedleafpagecookie)",
[]string{"instance"},
nil,
),
Failedtreepagecookie: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_tree_page_cookie_failures"),
"(AccessMethods.Failedtreepagecookie)",
[]string{"instance"},
nil,
),
ForwardedRecordsPersec: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_forwarded_records"),
"(AccessMethods.ForwardedRecords)",
[]string{"instance"},
nil,
),
FreeSpacePageFetchesPersec: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_free_space_page_fetches"),
"(AccessMethods.FreeSpacePageFetches)",
[]string{"instance"},
nil,
),
FreeSpaceScansPersec: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_free_space_scans"),
"(AccessMethods.FreeSpaceScans)",
[]string{"instance"},
nil,
),
FullScansPersec: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_full_scans"),
"(AccessMethods.FullScans)",
[]string{"instance"},
nil,
),
IndexSearchesPersec: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_index_searches"),
"(AccessMethods.IndexSearches)",
[]string{"instance"},
nil,
),
InSysXactwaitsPersec: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_insysxact_waits"),
"(AccessMethods.InSysXactwaits)",
[]string{"instance"},
nil,
),
LobHandleCreateCount: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_lob_handle_creates"),
"(AccessMethods.LobHandleCreateCount)",
[]string{"instance"},
nil,
),
LobHandleDestroyCount: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_lob_handle_destroys"),
"(AccessMethods.LobHandleDestroyCount)",
[]string{"instance"},
nil,
),
LobSSProviderCreateCount: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_lob_ss_provider_creates"),
"(AccessMethods.LobSSProviderCreateCount)",
[]string{"instance"},
nil,
),
LobSSProviderDestroyCount: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_lob_ss_provider_destroys"),
"(AccessMethods.LobSSProviderDestroyCount)",
[]string{"instance"},
nil,
),
LobSSProviderTruncationCount: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_lob_ss_provider_truncations"),
"(AccessMethods.LobSSProviderTruncationCount)",
[]string{"instance"},
nil,
),
MixedpageallocationsPersec: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_mixed_page_allocations"),
"(AccessMethods.MixedpageallocationsPersec)",
[]string{"instance"},
nil,
),
PagecompressionattemptsPersec: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_page_compression_attempts"),
"(AccessMethods.PagecompressionattemptsPersec)",
[]string{"instance"},
nil,
),
PageDeallocationsPersec: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_page_deallocations"),
"(AccessMethods.PageDeallocationsPersec)",
[]string{"instance"},
nil,
),
PagesAllocatedPersec: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_page_allocations"),
"(AccessMethods.PagesAllocatedPersec)",
[]string{"instance"},
nil,
),
PagescompressedPersec: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_page_compressions"),
"(AccessMethods.PagescompressedPersec)",
[]string{"instance"},
nil,
),
PageSplitsPersec: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_page_splits"),
"(AccessMethods.PageSplitsPersec)",
[]string{"instance"},
nil,
),
ProbeScansPersec: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_probe_scans"),
"(AccessMethods.ProbeScansPersec)",
[]string{"instance"},
nil,
),
RangeScansPersec: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_range_scans"),
"(AccessMethods.RangeScansPersec)",
[]string{"instance"},
nil,
),
ScanPointRevalidationsPersec: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_scan_point_revalidations"),
"(AccessMethods.ScanPointRevalidationsPersec)",
[]string{"instance"},
nil,
),
SkippedGhostedRecordsPersec: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_ghost_record_skips"),
"(AccessMethods.SkippedGhostedRecordsPersec)",
[]string{"instance"},
nil,
),
TableLockEscalationsPersec: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_table_lock_escalations"),
"(AccessMethods.TableLockEscalationsPersec)",
[]string{"instance"},
nil,
),
Usedleafpagecookie: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_leaf_page_cookie_uses"),
"(AccessMethods.Usedleafpagecookie)",
[]string{"instance"},
nil,
),
Usedtreepagecookie: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_tree_page_cookie_uses"),
"(AccessMethods.Usedtreepagecookie)",
[]string{"instance"},
nil,
),
WorkfilesCreatedPersec: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_workfile_creates"),
"(AccessMethods.WorkfilesCreatedPersec)",
[]string{"instance"},
nil,
),
WorktablesCreatedPersec: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_worktables_creates"),
"(AccessMethods.WorktablesCreatedPersec)",
[]string{"instance"},
nil,
),
WorktablesFromCacheRatio: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "accessmethods_worktables_from_cache_ratio"),
"(AccessMethods.WorktablesFromCacheRatio)",
[]string{"instance"},
nil,
),
// Win32_PerfRawData_{instance}_SQLServerAvailabilityReplica
BytesReceivedfromReplicaPersec: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "availreplica_received_from_replica_bytes"),
@@ -1392,6 +1702,368 @@ func (c *MSSQLCollector) Collect(ch chan<- prometheus.Metric) error {
return nil
}
type win32PerfRawDataSQLServerAccessMethods struct {
AUcleanupbatchesPersec uint64
AUcleanupsPersec uint64
ByreferenceLobCreateCount uint64
ByreferenceLobUseCount uint64
CountLobReadahead uint64
CountPullInRow uint64
CountPushOffRow uint64
DeferreddroppedAUs uint64
DeferredDroppedrowsets uint64
DroppedrowsetcleanupsPersec uint64
DroppedrowsetsskippedPersec uint64
ExtentDeallocationsPersec uint64
ExtentsAllocatedPersec uint64
FailedAUcleanupbatchesPersec uint64
Failedleafpagecookie uint64
Failedtreepagecookie uint64
ForwardedRecordsPersec uint64
FreeSpacePageFetchesPersec uint64
FreeSpaceScansPersec uint64
FullScansPersec uint64
IndexSearchesPersec uint64
InSysXactwaitsPersec uint64
LobHandleCreateCount uint64
LobHandleDestroyCount uint64
LobSSProviderCreateCount uint64
LobSSProviderDestroyCount uint64
LobSSProviderTruncationCount uint64
MixedpageallocationsPersec uint64
PagecompressionattemptsPersec uint64
PageDeallocationsPersec uint64
PagesAllocatedPersec uint64
PagescompressedPersec uint64
PageSplitsPersec uint64
ProbeScansPersec uint64
RangeScansPersec uint64
ScanPointRevalidationsPersec uint64
SkippedGhostedRecordsPersec uint64
TableLockEscalationsPersec uint64
Usedleafpagecookie uint64
Usedtreepagecookie uint64
WorkfilesCreatedPersec uint64
WorktablesCreatedPersec uint64
WorktablesFromCacheRatio uint64
}
func (c *MSSQLCollector) collectAccessMethods(ch chan<- prometheus.Metric, sqlInstance string) (*prometheus.Desc, error) {
var dst []win32PerfRawDataSQLServerAccessMethods
log.Debugf("mssql_accessmethods collector iterating sql instance %s.", sqlInstance)
class := fmt.Sprintf("Win32_PerfRawData_%s_SQLServerAccessMethods", sqlInstance)
q := queryAllForClass(&dst, class)
if err := wmi.Query(q, &dst); err != nil {
return nil, err
}
if len(dst) > 0 {
v := dst[0]
ch <- prometheus.MustNewConstMetric(
c.AUcleanupbatchesPersec,
prometheus.CounterValue,
float64(v.AUcleanupbatchesPersec),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.AUcleanupsPersec,
prometheus.CounterValue,
float64(v.AUcleanupsPersec),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.ByreferenceLobCreateCount,
prometheus.CounterValue,
float64(v.ByreferenceLobCreateCount),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.ByreferenceLobUseCount,
prometheus.CounterValue,
float64(v.ByreferenceLobUseCount),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.CountLobReadahead,
prometheus.CounterValue,
float64(v.CountLobReadahead),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.CountPullInRow,
prometheus.CounterValue,
float64(v.CountPullInRow),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.CountPushOffRow,
prometheus.CounterValue,
float64(v.CountPushOffRow),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.DeferreddroppedAUs,
prometheus.GaugeValue,
float64(v.DeferreddroppedAUs),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.DeferredDroppedrowsets,
prometheus.GaugeValue,
float64(v.DeferredDroppedrowsets),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.DroppedrowsetcleanupsPersec,
prometheus.CounterValue,
float64(v.DroppedrowsetcleanupsPersec),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.DroppedrowsetsskippedPersec,
prometheus.CounterValue,
float64(v.DroppedrowsetsskippedPersec),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.ExtentDeallocationsPersec,
prometheus.CounterValue,
float64(v.ExtentDeallocationsPersec),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.ExtentsAllocatedPersec,
prometheus.CounterValue,
float64(v.ExtentsAllocatedPersec),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.FailedAUcleanupbatchesPersec,
prometheus.CounterValue,
float64(v.FailedAUcleanupbatchesPersec),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.Failedleafpagecookie,
prometheus.CounterValue,
float64(v.Failedleafpagecookie),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.Failedtreepagecookie,
prometheus.CounterValue,
float64(v.Failedtreepagecookie),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.ForwardedRecordsPersec,
prometheus.CounterValue,
float64(v.ForwardedRecordsPersec),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.FreeSpacePageFetchesPersec,
prometheus.CounterValue,
float64(v.FreeSpacePageFetchesPersec),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.FreeSpaceScansPersec,
prometheus.CounterValue,
float64(v.FreeSpaceScansPersec),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.FullScansPersec,
prometheus.CounterValue,
float64(v.FullScansPersec),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.IndexSearchesPersec,
prometheus.CounterValue,
float64(v.IndexSearchesPersec),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.InSysXactwaitsPersec,
prometheus.CounterValue,
float64(v.InSysXactwaitsPersec),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.LobHandleCreateCount,
prometheus.CounterValue,
float64(v.LobHandleCreateCount),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.LobHandleDestroyCount,
prometheus.CounterValue,
float64(v.LobHandleDestroyCount),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.LobSSProviderCreateCount,
prometheus.CounterValue,
float64(v.LobSSProviderCreateCount),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.LobSSProviderDestroyCount,
prometheus.CounterValue,
float64(v.LobSSProviderDestroyCount),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.LobSSProviderTruncationCount,
prometheus.CounterValue,
float64(v.LobSSProviderTruncationCount),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.MixedpageallocationsPersec,
prometheus.CounterValue,
float64(v.MixedpageallocationsPersec),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.PagecompressionattemptsPersec,
prometheus.CounterValue,
float64(v.PagecompressionattemptsPersec),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.PageDeallocationsPersec,
prometheus.CounterValue,
float64(v.PageDeallocationsPersec),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.PagesAllocatedPersec,
prometheus.CounterValue,
float64(v.PagesAllocatedPersec),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.PagescompressedPersec,
prometheus.CounterValue,
float64(v.PagescompressedPersec),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.PageSplitsPersec,
prometheus.CounterValue,
float64(v.PageSplitsPersec),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.ProbeScansPersec,
prometheus.CounterValue,
float64(v.ProbeScansPersec),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.RangeScansPersec,
prometheus.CounterValue,
float64(v.RangeScansPersec),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.ScanPointRevalidationsPersec,
prometheus.CounterValue,
float64(v.ScanPointRevalidationsPersec),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.SkippedGhostedRecordsPersec,
prometheus.CounterValue,
float64(v.SkippedGhostedRecordsPersec),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.TableLockEscalationsPersec,
prometheus.CounterValue,
float64(v.TableLockEscalationsPersec),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.Usedleafpagecookie,
prometheus.CounterValue,
float64(v.Usedleafpagecookie),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.Usedtreepagecookie,
prometheus.CounterValue,
float64(v.Usedtreepagecookie),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.WorkfilesCreatedPersec,
prometheus.CounterValue,
float64(v.WorkfilesCreatedPersec),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.WorktablesCreatedPersec,
prometheus.CounterValue,
float64(v.WorktablesCreatedPersec),
sqlInstance,
)
ch <- prometheus.MustNewConstMetric(
c.WorktablesFromCacheRatio,
prometheus.CounterValue,
float64(v.WorktablesFromCacheRatio),
sqlInstance,
)
}
return nil, nil
}
type win32PerfRawDataSQLServerAvailabilityReplica struct {
Name string
BytesReceivedfromReplicaPersec uint64
@@ -1481,7 +2153,6 @@ func (c *MSSQLCollector) collectAvailabilityReplica(ch chan<- prometheus.Metric,
sqlInstance, replicaName,
)
}
return nil, nil
}
@@ -2851,6 +3522,5 @@ func (c *MSSQLCollector) collectSQLStats(ch chan<- prometheus.Metric, sqlInstanc
sqlInstance,
)
}
return nil, nil
}