mirror of
https://github.com/prometheus-community/windows_exporter.git
synced 2026-03-01 08:06:38 +00:00
hyperv: Refactor collector, added DataStore, Virtual SMB and Dynamic Memory Balancer metrics (click PR number for more information) (#1712)
Signed-off-by: Jan-Otto Kröpke <mail@jkroepke.de>
This commit is contained in:
780
internal/collector/hyperv/hyperv_datastore.go
Normal file
780
internal/collector/hyperv/hyperv_datastore.go
Normal file
@@ -0,0 +1,780 @@
|
||||
package hyperv
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"github.com/prometheus-community/windows_exporter/internal/perfdata"
|
||||
"github.com/prometheus-community/windows_exporter/internal/types"
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
)
|
||||
|
||||
// collectorDataStore Hyper-V DataStore metrics
|
||||
type collectorDataStore struct {
|
||||
perfDataCollectorDataStore *perfdata.Collector
|
||||
|
||||
dataStoreFragmentationRatio *prometheus.Desc // \Hyper-V DataStore(*)\Fragmentation ratio
|
||||
dataStoreSectorSize *prometheus.Desc // \Hyper-V DataStore(*)\Sector size
|
||||
dataStoreDataAlignment *prometheus.Desc // \Hyper-V DataStore(*)\Data alignment
|
||||
dataStoreCurrentReplayLogSize *prometheus.Desc // \Hyper-V DataStore(*)\Current replay logSize
|
||||
dataStoreAvailableEntries *prometheus.Desc // \Hyper-V DataStore(*)\Number of available entries inside object tables
|
||||
dataStoreEmptyEntries *prometheus.Desc // \Hyper-V DataStore(*)\Number of empty entries inside object tables
|
||||
dataStoreFreeBytes *prometheus.Desc // \Hyper-V DataStore(*)\Number of free bytes inside key tables
|
||||
dataStoreDataEnd *prometheus.Desc // \Hyper-V DataStore(*)\Data end
|
||||
dataStoreFileObjects *prometheus.Desc // \Hyper-V DataStore(*)\Number of file objects
|
||||
dataStoreObjectTables *prometheus.Desc // \Hyper-V DataStore(*)\Number of object tables
|
||||
dataStoreKeyTables *prometheus.Desc // \Hyper-V DataStore(*)\Number of key tables
|
||||
dataStoreFileDataSize *prometheus.Desc // \Hyper-V DataStore(*)\File data size in bytes
|
||||
dataStoreTableDataSize *prometheus.Desc // \Hyper-V DataStore(*)\Table data size in bytes
|
||||
dataStoreNamesSize *prometheus.Desc // \Hyper-V DataStore(*)\Names size in bytes
|
||||
dataStoreNumberOfKeys *prometheus.Desc // \Hyper-V DataStore(*)\Number of keys
|
||||
dataStoreReconnectLatencyMicro *prometheus.Desc // \Hyper-V DataStore(*)\Reconnect latency microseconds
|
||||
dataStoreDisconnectCount *prometheus.Desc // \Hyper-V DataStore(*)\Disconnect count
|
||||
dataStoreWriteToFileByteLatency *prometheus.Desc // \Hyper-V DataStore(*)\Write to file byte latency microseconds
|
||||
dataStoreWriteToFileByteCount *prometheus.Desc // \Hyper-V DataStore(*)\Write to file byte count
|
||||
dataStoreWriteToFileCount *prometheus.Desc // \Hyper-V DataStore(*)\Write to file count
|
||||
dataStoreReadFromFileByteLatency *prometheus.Desc // \Hyper-V DataStore(*)\Read from file byte latency microseconds
|
||||
dataStoreReadFromFileByteCount *prometheus.Desc // \Hyper-V DataStore(*)\Read from file byte count
|
||||
dataStoreReadFromFileCount *prometheus.Desc // \Hyper-V DataStore(*)\Read from file count
|
||||
dataStoreWriteToStorageByteLatency *prometheus.Desc // \Hyper-V DataStore(*)\Write to storage byte latency microseconds
|
||||
dataStoreWriteToStorageByteCount *prometheus.Desc // \Hyper-V DataStore(*)\Write to storage byte count
|
||||
dataStoreWriteToStorageCount *prometheus.Desc // \Hyper-V DataStore(*)\Write to storage count
|
||||
dataStoreReadFromStorageByteLatency *prometheus.Desc // \Hyper-V DataStore(*)\Read from storage byte latency microseconds
|
||||
dataStoreReadFromStorageByteCount *prometheus.Desc // \Hyper-V DataStore(*)\Read from storage byte count
|
||||
dataStoreReadFromStorageCount *prometheus.Desc // \Hyper-V DataStore(*)\Read from storage count
|
||||
dataStoreCommitByteLatency *prometheus.Desc // \Hyper-V DataStore(*)\Commit byte latency microseconds
|
||||
dataStoreCommitByteCount *prometheus.Desc // \Hyper-V DataStore(*)\Commit byte count
|
||||
dataStoreCommitCount *prometheus.Desc // \Hyper-V DataStore(*)\Commit count
|
||||
dataStoreCacheUpdateOperationLatency *prometheus.Desc // \Hyper-V DataStore(*)\Cache update operation latency microseconds
|
||||
dataStoreCacheUpdateOperationCount *prometheus.Desc // \Hyper-V DataStore(*)\Cache update operation count
|
||||
dataStoreCommitOperationLatency *prometheus.Desc // \Hyper-V DataStore(*)\Commit operation latency microseconds
|
||||
dataStoreCommitOperationCount *prometheus.Desc // \Hyper-V DataStore(*)\Commit operation count
|
||||
dataStoreCompactOperationLatency *prometheus.Desc // \Hyper-V DataStore(*)\Compact operation latency microseconds
|
||||
dataStoreCompactOperationCount *prometheus.Desc // \Hyper-V DataStore(*)\Compact operation count
|
||||
dataStoreLoadFileOperationLatency *prometheus.Desc // \Hyper-V DataStore(*)\Load file operation latency microseconds
|
||||
dataStoreLoadFileOperationCount *prometheus.Desc // \Hyper-V DataStore(*)\Load file operation count
|
||||
dataStoreRemoveOperationLatency *prometheus.Desc // \Hyper-V DataStore(*)\Remove operation latency microseconds
|
||||
dataStoreRemoveOperationCount *prometheus.Desc // \Hyper-V DataStore(*)\Remove operation count
|
||||
dataStoreQuerySizeOperationLatency *prometheus.Desc // \Hyper-V DataStore(*)\Query size operation latency microseconds
|
||||
dataStoreQuerySizeOperationCount *prometheus.Desc // \Hyper-V DataStore(*)\Query size operation count
|
||||
dataStoreSetOperationLatencyMicro *prometheus.Desc // \Hyper-V DataStore(*)\Set operation latency microseconds
|
||||
dataStoreSetOperationCount *prometheus.Desc // \Hyper-V DataStore(*)\Set operation count
|
||||
}
|
||||
|
||||
const (
|
||||
// Hyper-V DataStore metrics
|
||||
dataStoreFragmentationRatio = "Fragmentation ratio"
|
||||
dataStoreSectorSize = "Sector size"
|
||||
dataStoreDataAlignment = "Data alignment"
|
||||
dataStoreCurrentReplayLogSize = "Current replay logSize"
|
||||
dataStoreAvailableEntries = "Number of available entries inside object tables"
|
||||
dataStoreEmptyEntries = "Number of empty entries inside object tables"
|
||||
dataStoreFreeBytes = "Number of free bytes inside key tables"
|
||||
dataStoreDataEnd = "Data end"
|
||||
dataStoreFileObjects = "Number of file objects"
|
||||
dataStoreObjectTables = "Number of object tables"
|
||||
dataStoreKeyTables = "Number of key tables"
|
||||
dataStoreFileDataSize = "File data size in bytes"
|
||||
dataStoreTableDataSize = "Table data size in bytes"
|
||||
dataStoreNamesSize = "Names size in bytes"
|
||||
dataStoreNumberOfKeys = "Number of keys"
|
||||
dataStoreReconnectLatencyMicro = "Reconnect latency microseconds"
|
||||
dataStoreDisconnectCount = "Disconnect count"
|
||||
dataStoreWriteToFileByteLatency = "Write to file byte latency microseconds"
|
||||
dataStoreWriteToFileByteCount = "Write to file byte count"
|
||||
dataStoreWriteToFileCount = "Write to file count"
|
||||
dataStoreReadFromFileByteLatency = "Read from file byte latency microseconds"
|
||||
dataStoreReadFromFileByteCount = "Read from file byte count"
|
||||
dataStoreReadFromFileCount = "Read from file count"
|
||||
dataStoreWriteToStorageByteLatency = "Write to storage byte latency microseconds"
|
||||
dataStoreWriteToStorageByteCount = "Write to storage byte count"
|
||||
dataStoreWriteToStorageCount = "Write to storage count"
|
||||
dataStoreReadFromStorageByteLatency = "Read from storage byte latency microseconds"
|
||||
dataStoreReadFromStorageByteCount = "Read from storage byte count"
|
||||
dataStoreReadFromStorageCount = "Read from storage count"
|
||||
dataStoreCommitByteLatency = "Commit byte latency microseconds"
|
||||
dataStoreCommitByteCount = "Commit byte count"
|
||||
dataStoreCommitCount = "Commit count"
|
||||
dataStoreCacheUpdateOperationLatency = "Cache update operation latency microseconds"
|
||||
dataStoreCacheUpdateOperationCount = "Cache update operation count"
|
||||
dataStoreCommitOperationLatency = "Commit operation latency microseconds"
|
||||
dataStoreCommitOperationCount = "Commit operation count"
|
||||
dataStoreCompactOperationLatency = "Compact operation latency microseconds"
|
||||
dataStoreCompactOperationCount = "Compact operation count"
|
||||
dataStoreLoadFileOperationLatency = "Load file operation latency microseconds"
|
||||
dataStoreLoadFileOperationCount = "Load file operation count"
|
||||
dataStoreRemoveOperationLatency = "Remove operation latency microseconds"
|
||||
dataStoreRemoveOperationCount = "Remove operation count"
|
||||
dataStoreQuerySizeOperationLatency = "Query size operation latency microseconds"
|
||||
dataStoreQuerySizeOperationCount = "Query size operation count"
|
||||
dataStoreSetOperationLatencyMicro = "Set operation latency microseconds"
|
||||
dataStoreSetOperationCount = "Set operation count"
|
||||
)
|
||||
|
||||
func (c *Collector) buildDataStore() error {
|
||||
var err error
|
||||
|
||||
c.perfDataCollectorDataStore, err = perfdata.NewCollector("Hyper-V DataStore", perfdata.InstanceAll, []string{
|
||||
dataStoreFragmentationRatio,
|
||||
dataStoreSectorSize,
|
||||
dataStoreDataAlignment,
|
||||
dataStoreCurrentReplayLogSize,
|
||||
dataStoreAvailableEntries,
|
||||
dataStoreEmptyEntries,
|
||||
dataStoreFreeBytes,
|
||||
dataStoreDataEnd,
|
||||
dataStoreFileObjects,
|
||||
dataStoreObjectTables,
|
||||
dataStoreKeyTables,
|
||||
dataStoreFileDataSize,
|
||||
dataStoreTableDataSize,
|
||||
dataStoreNamesSize,
|
||||
dataStoreNumberOfKeys,
|
||||
dataStoreReconnectLatencyMicro,
|
||||
dataStoreDisconnectCount,
|
||||
dataStoreWriteToFileByteLatency,
|
||||
dataStoreWriteToFileByteCount,
|
||||
dataStoreWriteToFileCount,
|
||||
dataStoreReadFromFileByteLatency,
|
||||
dataStoreReadFromFileByteCount,
|
||||
dataStoreReadFromFileCount,
|
||||
dataStoreWriteToStorageByteLatency,
|
||||
dataStoreWriteToStorageByteCount,
|
||||
dataStoreWriteToStorageCount,
|
||||
dataStoreReadFromStorageByteLatency,
|
||||
dataStoreReadFromStorageByteCount,
|
||||
dataStoreReadFromStorageCount,
|
||||
dataStoreCommitByteLatency,
|
||||
dataStoreCommitByteCount,
|
||||
dataStoreCommitCount,
|
||||
dataStoreCacheUpdateOperationLatency,
|
||||
dataStoreCacheUpdateOperationCount,
|
||||
dataStoreCommitOperationLatency,
|
||||
dataStoreCommitOperationCount,
|
||||
dataStoreCompactOperationLatency,
|
||||
dataStoreCompactOperationCount,
|
||||
dataStoreLoadFileOperationLatency,
|
||||
dataStoreLoadFileOperationCount,
|
||||
dataStoreRemoveOperationLatency,
|
||||
dataStoreRemoveOperationCount,
|
||||
dataStoreQuerySizeOperationLatency,
|
||||
dataStoreQuerySizeOperationCount,
|
||||
dataStoreSetOperationLatencyMicro,
|
||||
dataStoreSetOperationCount,
|
||||
})
|
||||
if err != nil && !errors.Is(err, perfdata.ErrNoData) {
|
||||
return fmt.Errorf("failed to create Hyper-V DataStore collector: %w", err)
|
||||
}
|
||||
|
||||
c.dataStoreFragmentationRatio = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_fragmentation_ratio"),
|
||||
"Represents the fragmentation ratio of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreSectorSize = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_sector_size_bytes"),
|
||||
"Represents the sector size of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreDataAlignment = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_data_alignment_bytes"),
|
||||
"Represents the data alignment of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreCurrentReplayLogSize = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_current_replay_log_size_bytes"),
|
||||
"Represents the current replay log size of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreAvailableEntries = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_available_entries"),
|
||||
"Represents the number of available entries inside object tables.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreEmptyEntries = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_empty_entries"),
|
||||
"Represents the number of empty entries inside object tables.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreFreeBytes = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_free_bytes"),
|
||||
"Represents the number of free bytes inside key tables.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreDataEnd = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_data_end_bytes"),
|
||||
"Represents the data end of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreFileObjects = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_file_objects"),
|
||||
"Represents the number of file objects in the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreObjectTables = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_object_tables"),
|
||||
"Represents the number of object tables in the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreKeyTables = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_key_tables"),
|
||||
"Represents the number of key tables in the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreFileDataSize = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_file_data_size_bytes"),
|
||||
"Represents the file data size in bytes of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreTableDataSize = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_table_data_size_bytes"),
|
||||
"Represents the table data size in bytes of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreNamesSize = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_names_size_bytes"),
|
||||
"Represents the names size in bytes of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreNumberOfKeys = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_number_of_keys"),
|
||||
"Represents the number of keys in the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreReconnectLatencyMicro = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_reconnect_latency_microseconds"),
|
||||
"Represents the reconnect latency in microseconds of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreDisconnectCount = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_disconnect_count"),
|
||||
"Represents the disconnect count of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreWriteToFileByteLatency = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_write_to_file_byte_latency_microseconds"),
|
||||
"Represents the write to file byte latency in microseconds of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreWriteToFileByteCount = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_write_to_file_byte_count"),
|
||||
"Represents the write to file byte count of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreWriteToFileCount = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_write_to_file_count"),
|
||||
"Represents the write to file count of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreReadFromFileByteLatency = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_read_from_file_byte_latency_microseconds"),
|
||||
"Represents the read from file byte latency in microseconds of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreReadFromFileByteCount = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_read_from_file_byte_count"),
|
||||
"Represents the read from file byte count of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreReadFromFileCount = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_read_from_file_count"),
|
||||
"Represents the read from file count of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreWriteToStorageByteLatency = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_write_to_storage_byte_latency_microseconds"),
|
||||
"Represents the write to storage byte latency in microseconds of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreWriteToStorageByteCount = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_write_to_storage_byte_count"),
|
||||
"Represents the write to storage byte count of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreWriteToStorageCount = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_write_to_storage_count"),
|
||||
"Represents the write to storage count of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreReadFromStorageByteLatency = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_read_from_storage_byte_latency_microseconds"),
|
||||
"Represents the read from storage byte latency in microseconds of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreReadFromStorageByteCount = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_read_from_storage_byte_count"),
|
||||
"Represents the read from storage byte count of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreReadFromStorageCount = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_read_from_storage_count"),
|
||||
"Represents the read from storage count of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreCommitByteLatency = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_commit_byte_latency_microseconds"),
|
||||
"Represents the commit byte latency in microseconds of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreCommitByteCount = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_commit_byte_count"),
|
||||
"Represents the commit byte count of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreCommitCount = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_commit_count"),
|
||||
"Represents the commit count of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreCacheUpdateOperationLatency = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_cache_update_operation_latency_microseconds"),
|
||||
"Represents the cache update operation latency in microseconds of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreCacheUpdateOperationCount = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_cache_update_operation_count"),
|
||||
"Represents the cache update operation count of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreCommitOperationLatency = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_commit_operation_latency_microseconds"),
|
||||
"Represents the commit operation latency in microseconds of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreCommitOperationCount = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_commit_operation_count"),
|
||||
"Represents the commit operation count of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreCompactOperationLatency = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_compact_operation_latency_microseconds"),
|
||||
"Represents the compact operation latency in microseconds of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreCompactOperationCount = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_compact_operation_count"),
|
||||
"Represents the compact operation count of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreLoadFileOperationLatency = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_load_file_operation_latency_microseconds"),
|
||||
"Represents the load file operation latency in microseconds of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreLoadFileOperationCount = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_load_file_operation_count"),
|
||||
"Represents the load file operation count of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreRemoveOperationLatency = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_remove_operation_latency_microseconds"),
|
||||
"Represents the remove operation latency in microseconds of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreRemoveOperationCount = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_remove_operation_count"),
|
||||
"Represents the remove operation count of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreQuerySizeOperationLatency = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_query_size_operation_latency_microseconds"),
|
||||
"Represents the query size operation latency in microseconds of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreQuerySizeOperationCount = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_query_size_operation_count"),
|
||||
"Represents the query size operation count of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreSetOperationLatencyMicro = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_set_operation_latency_microseconds"),
|
||||
"Represents the set operation latency in microseconds of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
c.dataStoreSetOperationCount = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(types.Namespace, Name, "datastore_set_operation_count"),
|
||||
"Represents the set operation count of the DataStore.",
|
||||
[]string{"datastore"},
|
||||
nil,
|
||||
)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *Collector) collectDataStore(ch chan<- prometheus.Metric) error {
|
||||
data, err := c.perfDataCollectorDataStore.Collect()
|
||||
if err != nil && !errors.Is(err, perfdata.ErrNoData) {
|
||||
return fmt.Errorf("failed to collect Hyper-V DataStore metrics: %w", err)
|
||||
}
|
||||
|
||||
for name, page := range data {
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreFragmentationRatio,
|
||||
prometheus.GaugeValue,
|
||||
page[dataStoreFragmentationRatio].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreSectorSize,
|
||||
prometheus.GaugeValue,
|
||||
page[dataStoreSectorSize].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreDataAlignment,
|
||||
prometheus.GaugeValue,
|
||||
page[dataStoreDataAlignment].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreCurrentReplayLogSize,
|
||||
prometheus.GaugeValue,
|
||||
page[dataStoreCurrentReplayLogSize].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreAvailableEntries,
|
||||
prometheus.GaugeValue,
|
||||
page[dataStoreAvailableEntries].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreEmptyEntries,
|
||||
prometheus.GaugeValue,
|
||||
page[dataStoreEmptyEntries].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreFreeBytes,
|
||||
prometheus.GaugeValue,
|
||||
page[dataStoreFreeBytes].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreDataEnd,
|
||||
prometheus.GaugeValue,
|
||||
page[dataStoreDataEnd].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreFileObjects,
|
||||
prometheus.GaugeValue,
|
||||
page[dataStoreFileObjects].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreObjectTables,
|
||||
prometheus.GaugeValue,
|
||||
page[dataStoreObjectTables].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreKeyTables,
|
||||
prometheus.GaugeValue,
|
||||
page[dataStoreKeyTables].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreFileDataSize,
|
||||
prometheus.GaugeValue,
|
||||
page[dataStoreFileDataSize].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreTableDataSize,
|
||||
prometheus.GaugeValue,
|
||||
page[dataStoreTableDataSize].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreNamesSize,
|
||||
prometheus.GaugeValue,
|
||||
page[dataStoreNamesSize].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreNumberOfKeys,
|
||||
prometheus.GaugeValue,
|
||||
page[dataStoreNumberOfKeys].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreReconnectLatencyMicro,
|
||||
prometheus.GaugeValue,
|
||||
page[dataStoreReconnectLatencyMicro].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreDisconnectCount,
|
||||
prometheus.CounterValue,
|
||||
page[dataStoreDisconnectCount].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreWriteToFileByteLatency,
|
||||
prometheus.GaugeValue,
|
||||
page[dataStoreWriteToFileByteLatency].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreWriteToFileByteCount,
|
||||
prometheus.CounterValue,
|
||||
page[dataStoreWriteToFileByteCount].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreWriteToFileCount,
|
||||
prometheus.CounterValue,
|
||||
page[dataStoreWriteToFileCount].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreReadFromFileByteLatency,
|
||||
prometheus.GaugeValue,
|
||||
page[dataStoreReadFromFileByteLatency].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreReadFromFileByteCount,
|
||||
prometheus.CounterValue,
|
||||
page[dataStoreReadFromFileByteCount].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreReadFromFileCount,
|
||||
prometheus.CounterValue,
|
||||
page[dataStoreReadFromFileCount].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreWriteToStorageByteLatency,
|
||||
prometheus.GaugeValue,
|
||||
page[dataStoreWriteToStorageByteLatency].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreWriteToStorageByteCount,
|
||||
prometheus.CounterValue,
|
||||
page[dataStoreWriteToStorageByteCount].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreWriteToStorageCount,
|
||||
prometheus.CounterValue,
|
||||
page[dataStoreWriteToStorageCount].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreReadFromStorageByteLatency,
|
||||
prometheus.GaugeValue,
|
||||
page[dataStoreReadFromStorageByteLatency].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreReadFromStorageByteCount,
|
||||
prometheus.CounterValue,
|
||||
page[dataStoreReadFromStorageByteCount].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreReadFromStorageCount,
|
||||
prometheus.CounterValue,
|
||||
page[dataStoreReadFromStorageCount].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreCommitByteLatency,
|
||||
prometheus.GaugeValue,
|
||||
page[dataStoreCommitByteLatency].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreCommitByteCount,
|
||||
prometheus.CounterValue,
|
||||
page[dataStoreCommitByteCount].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreCommitCount,
|
||||
prometheus.CounterValue,
|
||||
page[dataStoreCommitCount].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreCacheUpdateOperationLatency,
|
||||
prometheus.GaugeValue,
|
||||
page[dataStoreCacheUpdateOperationLatency].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreCacheUpdateOperationCount,
|
||||
prometheus.CounterValue,
|
||||
page[dataStoreCacheUpdateOperationCount].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreCommitOperationLatency,
|
||||
prometheus.GaugeValue,
|
||||
page[dataStoreCommitOperationLatency].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreCommitOperationCount,
|
||||
prometheus.CounterValue,
|
||||
page[dataStoreCommitOperationCount].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreCompactOperationLatency,
|
||||
prometheus.GaugeValue,
|
||||
page[dataStoreCompactOperationLatency].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreCompactOperationCount,
|
||||
prometheus.CounterValue,
|
||||
page[dataStoreCompactOperationCount].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreLoadFileOperationLatency,
|
||||
prometheus.GaugeValue,
|
||||
page[dataStoreLoadFileOperationLatency].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreLoadFileOperationCount,
|
||||
prometheus.CounterValue,
|
||||
page[dataStoreLoadFileOperationCount].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreRemoveOperationLatency,
|
||||
prometheus.GaugeValue,
|
||||
page[dataStoreRemoveOperationLatency].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreRemoveOperationCount,
|
||||
prometheus.CounterValue,
|
||||
page[dataStoreRemoveOperationCount].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreQuerySizeOperationLatency,
|
||||
prometheus.GaugeValue,
|
||||
page[dataStoreQuerySizeOperationLatency].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreQuerySizeOperationCount,
|
||||
prometheus.CounterValue,
|
||||
page[dataStoreQuerySizeOperationCount].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreSetOperationLatencyMicro,
|
||||
prometheus.GaugeValue,
|
||||
page[dataStoreSetOperationLatencyMicro].FirstValue,
|
||||
name,
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.dataStoreSetOperationCount,
|
||||
prometheus.CounterValue,
|
||||
page[dataStoreSetOperationCount].FirstValue,
|
||||
name,
|
||||
)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user