2020-11-26 11:45:55 +00:00
// +build windows
package collector
import (
"github.com/prometheus/client_golang/prometheus"
2020-12-20 02:09:10 +00:00
"github.com/prometheus/common/log"
2020-12-03 06:59:15 +00:00
"gopkg.in/alecthomas/kingpin.v2"
2020-11-26 11:45:55 +00:00
)
2020-12-03 06:59:15 +00:00
var dfsrEnabledCollectors = kingpin . Flag ( "collectors.dfsr.sources-enabled" , "Comma-seperated list of DFSR Perflib sources to use." ) . Default ( "connection,folder,volume" ) . String ( )
2020-11-26 11:45:55 +00:00
func init ( ) {
2020-12-20 02:09:10 +00:00
log . Info ( "dfsr collector is in an experimental state! Metrics for this collector have not been tested." )
2020-12-03 06:59:15 +00:00
// Perflib sources are dynamic, depending on the enabled child collectors
var perflibDependencies [ ] string
for _ , source := range expandEnabledChildCollectors ( * dfsrEnabledCollectors ) {
perflibDependencies = append ( perflibDependencies , dfsrGetPerfObjectName ( source ) )
}
registerCollector ( "dfsr" , NewDFSRCollector , perflibDependencies ... )
2020-11-26 11:45:55 +00:00
}
2020-12-03 06:59:15 +00:00
// DFSRCollector contains the metric and state data of the DFSR collectors.
type DFSRCollector struct {
// Meta
dfsrScrapeDurationDesc * prometheus . Desc
dfsrScrapeSuccessDesc * prometheus . Desc
// Connection source
ConnectionBandwidthSavingsUsingDFSReplicationTotal * prometheus . Desc
ConnectionBytesReceivedTotal * prometheus . Desc
ConnectionCompressedSizeOfFilesReceivedTotal * prometheus . Desc
ConnectionFilesReceivedTotal * prometheus . Desc
ConnectionRDCBytesReceivedTotal * prometheus . Desc
ConnectionRDCCompressedSizeOfFilesReceivedTotal * prometheus . Desc
ConnectionRDCSizeOfFilesReceivedTotal * prometheus . Desc
ConnectionRDCNumberofFilesReceivedTotal * prometheus . Desc
ConnectionSizeOfFilesReceivedTotal * prometheus . Desc
// Folder source
FolderBandwidthSavingsUsingDFSReplicationTotal * prometheus . Desc
FolderCompressedSizeOfFilesReceivedTotal * prometheus . Desc
FolderConflictBytesCleanedupTotal * prometheus . Desc
FolderConflictBytesGeneratedTotal * prometheus . Desc
FolderConflictFilesCleanedUpTotal * prometheus . Desc
FolderConflictFilesGeneratedTotal * prometheus . Desc
FolderConflictFolderCleanupsCompletedTotal * prometheus . Desc
FolderConflictSpaceInUse * prometheus . Desc
FolderDeletedSpaceInUse * prometheus . Desc
FolderDeletedBytesCleanedUpTotal * prometheus . Desc
FolderDeletedBytesGeneratedTotal * prometheus . Desc
FolderDeletedFilesCleanedUpTotal * prometheus . Desc
FolderDeletedFilesGeneratedTotal * prometheus . Desc
FolderFileInstallsRetriedTotal * prometheus . Desc
FolderFileInstallsSucceededTotal * prometheus . Desc
FolderFilesReceivedTotal * prometheus . Desc
FolderRDCBytesReceivedTotal * prometheus . Desc
FolderRDCCompressedSizeOfFilesReceivedTotal * prometheus . Desc
FolderRDCNumberofFilesReceivedTotal * prometheus . Desc
FolderRDCSizeOfFilesReceivedTotal * prometheus . Desc
FolderSizeOfFilesReceivedTotal * prometheus . Desc
FolderStagingSpaceInUse * prometheus . Desc
FolderStagingBytesCleanedUpTotal * prometheus . Desc
FolderStagingBytesGeneratedTotal * prometheus . Desc
FolderStagingFilesCleanedUpTotal * prometheus . Desc
FolderStagingFilesGeneratedTotal * prometheus . Desc
FolderUpdatesDroppedTotal * prometheus . Desc
// Volume source
VolumeDatabaseLookupsTotal * prometheus . Desc
VolumeDatabaseCommitsTotal * prometheus . Desc
VolumeUSNJournalUnreadPercentage * prometheus . Desc
VolumeUSNJournalRecordsAcceptedTotal * prometheus . Desc
VolumeUSNJournalRecordsReadTotal * prometheus . Desc
// Map of child collector functions used during collection
2020-12-09 04:45:26 +00:00
dfsrChildCollectors [ ] dfsrCollectorFunc
2020-11-26 11:45:55 +00:00
}
2020-12-09 04:45:26 +00:00
type dfsrCollectorFunc func ( ctx * ScrapeContext , ch chan <- prometheus . Metric ) error
2020-12-03 06:59:15 +00:00
// Map Perflib sources to DFSR collector names
// E.G. volume -> DFS Replication Service Volumes
func dfsrGetPerfObjectName ( collector string ) string {
prefix := "DFS "
suffix := ""
switch collector {
case "connection" :
suffix = "Replication Connections"
case "folder" :
suffix = "Replicated Folders"
case "volume" :
suffix = "Replication Service Volumes"
}
return ( prefix + suffix )
}
// NewDFSRCollector is registered
func NewDFSRCollector ( ) ( Collector , error ) {
const subsystem = "dfsr"
2020-12-03 10:20:28 +00:00
enabled := expandEnabledChildCollectors ( * dfsrEnabledCollectors )
2020-12-03 06:59:15 +00:00
perfCounters := make ( [ ] string , 0 , len ( enabled ) )
for _ , c := range enabled {
perfCounters = append ( perfCounters , dfsrGetPerfObjectName ( c ) )
}
addPerfCounterDependencies ( subsystem , perfCounters )
dfsrCollector := DFSRCollector {
// meta
dfsrScrapeDurationDesc : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "collector_duration_seconds" ) ,
"windows_exporter: Duration of an dfsr child collection." ,
[ ] string { "collector" } ,
nil ,
) ,
dfsrScrapeSuccessDesc : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "collector_success" ) ,
"windows_exporter: Whether a dfsr child collector was successful." ,
[ ] string { "collector" } ,
nil ,
) ,
// Connection
ConnectionBandwidthSavingsUsingDFSReplicationTotal : prometheus . NewDesc (
2020-12-09 09:49:32 +00:00
prometheus . BuildFQName ( Namespace , subsystem , "bandwidth_savings_using_dfs_replication_bytes_total" ) ,
2020-11-26 11:45:55 +00:00
"Total amount of bandwidth savings using DFS Replication for this connection, in bytes" ,
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
ConnectionBytesReceivedTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "bytes_received_total" ) ,
2020-11-26 11:45:55 +00:00
"Total bytes received for connection" ,
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
ConnectionCompressedSizeOfFilesReceivedTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "compressed_size_of_files_received_total" ) ,
2020-11-26 11:45:55 +00:00
"" ,
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
ConnectionFilesReceivedTotal : prometheus . NewDesc (
2020-12-09 09:49:32 +00:00
prometheus . BuildFQName ( Namespace , subsystem , "received_files_total" ) ,
2020-11-26 11:45:55 +00:00
"Total number of files receieved for connection" ,
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
ConnectionRDCBytesReceivedTotal : prometheus . NewDesc (
2020-12-09 09:49:32 +00:00
prometheus . BuildFQName ( Namespace , subsystem , "rdc_received_bytes_total" ) ,
2020-11-26 11:45:55 +00:00
"" ,
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
ConnectionRDCCompressedSizeOfFilesReceivedTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "rdc_compressed_size_of_files_received_total" ) ,
2020-11-26 11:45:55 +00:00
"" ,
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
ConnectionRDCNumberofFilesReceivedTotal : prometheus . NewDesc (
2020-12-09 09:49:32 +00:00
prometheus . BuildFQName ( Namespace , subsystem , "rdc_received_files_total" ) ,
"Total number of Remote Differential Compression files received" ,
2020-11-26 11:45:55 +00:00
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
ConnectionRDCSizeOfFilesReceivedTotal : prometheus . NewDesc (
2020-12-09 09:49:32 +00:00
prometheus . BuildFQName ( Namespace , subsystem , "rdc_size_of_received_files_bytes_total" ) ,
"Total size of received Remote Differential Compression files, in bytes." ,
2020-11-26 11:45:55 +00:00
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
ConnectionSizeOfFilesReceivedTotal : prometheus . NewDesc (
2020-12-09 09:49:32 +00:00
prometheus . BuildFQName ( Namespace , subsystem , "files_received_bytes_total" ) ,
"Total size of files received, in bytes" ,
2020-11-26 11:45:55 +00:00
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
// Folder
FolderBandwidthSavingsUsingDFSReplicationTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "bandwidth_savings_using_dfs_replication_total" ) ,
"" ,
2020-11-26 11:45:55 +00:00
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
FolderCompressedSizeOfFilesReceivedTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "compressed_size_of_files_received_total" ) ,
"" ,
2020-11-26 11:45:55 +00:00
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
FolderConflictBytesCleanedupTotal : prometheus . NewDesc (
2020-12-09 09:49:32 +00:00
prometheus . BuildFQName ( Namespace , subsystem , "conflict_cleaned_up_bytes_total" ) ,
2020-12-03 06:59:15 +00:00
"" ,
2020-11-26 11:45:55 +00:00
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
FolderConflictBytesGeneratedTotal : prometheus . NewDesc (
2020-12-09 09:49:32 +00:00
prometheus . BuildFQName ( Namespace , subsystem , "conflict_generated_bytes_total" ) ,
2020-12-03 06:59:15 +00:00
"" ,
2020-11-26 11:45:55 +00:00
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
FolderConflictFilesCleanedUpTotal : prometheus . NewDesc (
2020-12-09 09:49:32 +00:00
prometheus . BuildFQName ( Namespace , subsystem , "conflict_cleaned_up_files_total" ) ,
2020-12-03 06:59:15 +00:00
"" ,
2020-11-26 11:45:55 +00:00
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
FolderConflictFilesGeneratedTotal : prometheus . NewDesc (
2020-12-09 09:49:32 +00:00
prometheus . BuildFQName ( Namespace , subsystem , "conflict_generated_files_total" ) ,
2020-11-26 11:45:55 +00:00
"" ,
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
FolderConflictFolderCleanupsCompletedTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "conflict_folder_cleanups_total" ) ,
2020-11-26 11:45:55 +00:00
"" ,
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
FolderConflictSpaceInUse : prometheus . NewDesc (
2020-12-09 09:49:32 +00:00
prometheus . BuildFQName ( Namespace , subsystem , "conflict_space_in_use_bytes" ) ,
2020-11-26 11:45:55 +00:00
"" ,
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
FolderDeletedSpaceInUse : prometheus . NewDesc (
2020-12-09 09:49:32 +00:00
prometheus . BuildFQName ( Namespace , subsystem , "deleted_space_in_use_bytes" ) ,
2020-11-26 11:45:55 +00:00
"" ,
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
FolderDeletedBytesCleanedUpTotal : prometheus . NewDesc (
2020-12-09 09:49:32 +00:00
prometheus . BuildFQName ( Namespace , subsystem , "deleted_cleaned_up_bytes_total" ) ,
2020-11-26 11:45:55 +00:00
"" ,
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
FolderDeletedBytesGeneratedTotal : prometheus . NewDesc (
2020-12-09 09:49:32 +00:00
prometheus . BuildFQName ( Namespace , subsystem , "deleted_generated_bytes_total" ) ,
2020-11-26 11:45:55 +00:00
"" ,
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
FolderDeletedFilesCleanedUpTotal : prometheus . NewDesc (
2020-12-09 09:49:32 +00:00
prometheus . BuildFQName ( Namespace , subsystem , "deleted_cleaned_up_files_total" ) ,
2020-11-26 11:45:55 +00:00
"" ,
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
FolderDeletedFilesGeneratedTotal : prometheus . NewDesc (
2020-12-09 09:49:32 +00:00
prometheus . BuildFQName ( Namespace , subsystem , "deleted_generated_files_total" ) ,
2020-11-26 11:45:55 +00:00
"" ,
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
FolderFileInstallsRetriedTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "file_installs_retried_total" ) ,
2020-11-26 11:45:55 +00:00
"" ,
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
FolderFileInstallsSucceededTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "file_installs_succeeded_total" ) ,
2020-11-26 11:45:55 +00:00
"" ,
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
FolderFilesReceivedTotal : prometheus . NewDesc (
2020-12-09 09:49:32 +00:00
prometheus . BuildFQName ( Namespace , subsystem , "received_files_total" ) ,
2020-11-26 11:45:55 +00:00
"" ,
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
FolderRDCBytesReceivedTotal : prometheus . NewDesc (
2020-12-09 09:49:32 +00:00
prometheus . BuildFQName ( Namespace , subsystem , "rdc_received_bytes_total" ) ,
2020-11-26 11:45:55 +00:00
"" ,
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
FolderRDCCompressedSizeOfFilesReceivedTotal : prometheus . NewDesc (
2020-12-09 09:49:32 +00:00
prometheus . BuildFQName ( Namespace , subsystem , "rdc_compressed_size_of_files_received_bytes_total" ) ,
2020-11-26 11:45:55 +00:00
"" ,
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
FolderRDCNumberofFilesReceivedTotal : prometheus . NewDesc (
2020-12-09 09:49:32 +00:00
prometheus . BuildFQName ( Namespace , subsystem , "rdc_received_files_total" ) ,
2020-11-26 11:45:55 +00:00
"" ,
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
FolderRDCSizeOfFilesReceivedTotal : prometheus . NewDesc (
2020-12-09 09:49:32 +00:00
prometheus . BuildFQName ( Namespace , subsystem , "rdc_files_received_bytes_total" ) ,
2020-11-26 11:45:55 +00:00
"" ,
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
FolderSizeOfFilesReceivedTotal : prometheus . NewDesc (
2020-12-09 09:49:32 +00:00
prometheus . BuildFQName ( Namespace , subsystem , "files_received_bytes_total" ) ,
2020-11-26 11:45:55 +00:00
"" ,
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
FolderStagingSpaceInUse : prometheus . NewDesc (
2020-12-09 09:49:32 +00:00
prometheus . BuildFQName ( Namespace , subsystem , "staging_space_in_use_bytes" ) ,
2020-11-26 11:45:55 +00:00
"" ,
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
FolderStagingBytesCleanedUpTotal : prometheus . NewDesc (
2020-12-09 09:49:32 +00:00
prometheus . BuildFQName ( Namespace , subsystem , "staging_cleaned_up_bytes_total" ) ,
2020-11-26 11:45:55 +00:00
"" ,
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
FolderStagingBytesGeneratedTotal : prometheus . NewDesc (
2020-12-09 09:49:32 +00:00
prometheus . BuildFQName ( Namespace , subsystem , "staging_generated_bytes_total" ) ,
2020-11-26 11:45:55 +00:00
"" ,
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
FolderStagingFilesCleanedUpTotal : prometheus . NewDesc (
2020-12-09 09:49:32 +00:00
prometheus . BuildFQName ( Namespace , subsystem , "staging_cleaned_up_files_total" ) ,
2020-11-26 11:45:55 +00:00
"" ,
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
FolderStagingFilesGeneratedTotal : prometheus . NewDesc (
2020-12-09 09:49:32 +00:00
prometheus . BuildFQName ( Namespace , subsystem , "staging_generated_files_total" ) ,
2020-11-26 11:45:55 +00:00
"" ,
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
FolderUpdatesDroppedTotal : prometheus . NewDesc (
2020-12-09 09:49:32 +00:00
prometheus . BuildFQName ( Namespace , subsystem , "dropped_updates_total" ) ,
2020-11-26 11:45:55 +00:00
"" ,
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
// Volume
VolumeDatabaseCommitsTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "database_commits_total" ) ,
"Total number of DFSR Volume database commits" ,
2020-11-26 11:45:55 +00:00
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
VolumeDatabaseLookupsTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "database_lookups_total" ) ,
"Total number of DFSR Volume database lookups" ,
2020-11-26 11:45:55 +00:00
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
VolumeUSNJournalUnreadPercentage : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "usn_journal_unread_percentage" ) ,
"Percentage of DFSR Volume USN journal records that are unread" ,
2020-11-26 11:45:55 +00:00
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
VolumeUSNJournalRecordsAcceptedTotal : prometheus . NewDesc (
2020-12-09 09:49:32 +00:00
prometheus . BuildFQName ( Namespace , subsystem , "usn_journal_accepted_records_total" ) ,
2020-12-03 06:59:15 +00:00
"Total number of USN journal records accepted" ,
2020-11-26 11:45:55 +00:00
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
VolumeUSNJournalRecordsReadTotal : prometheus . NewDesc (
2020-12-09 09:49:32 +00:00
prometheus . BuildFQName ( Namespace , subsystem , "usn_journal_read_records_total" ) ,
2020-12-03 06:59:15 +00:00
"Total number of DFSR Volume USN journal records read" ,
2020-11-26 11:45:55 +00:00
[ ] string { "name" } ,
nil ,
) ,
2020-12-03 06:59:15 +00:00
}
2020-12-09 04:45:26 +00:00
dfsrCollector . dfsrChildCollectors = dfsrCollector . getDFSRChildCollectors ( enabled )
2020-12-03 06:59:15 +00:00
return & dfsrCollector , nil
}
2020-12-09 04:45:26 +00:00
// Maps enabled child collectors names to their relevant collection function,
2020-12-03 06:59:15 +00:00
// for use in DFSRCollector.Collect()
2020-12-09 04:45:26 +00:00
func ( c * DFSRCollector ) getDFSRChildCollectors ( enabledCollectors [ ] string ) [ ] dfsrCollectorFunc {
var dfsrCollectors [ ] dfsrCollectorFunc
for _ , collector := range enabledCollectors {
switch collector {
case "connection" :
dfsrCollectors = append ( dfsrCollectors , c . collectConnection )
case "folder" :
dfsrCollectors = append ( dfsrCollectors , c . collectFolder )
case "volume" :
dfsrCollectors = append ( dfsrCollectors , c . collectVolume )
}
}
2020-12-03 06:59:15 +00:00
return dfsrCollectors
2020-11-26 11:45:55 +00:00
}
2020-12-03 06:59:15 +00:00
// Collect implements the Collector interface.
// Sends metric values for each metric to the provided prometheus Metric channel.
func ( c * DFSRCollector ) Collect ( ctx * ScrapeContext , ch chan <- prometheus . Metric ) error {
2020-12-09 04:45:26 +00:00
for _ , fn := range c . dfsrChildCollectors {
err := fn ( ctx , ch )
if err != nil {
return err
}
2020-11-26 11:45:55 +00:00
}
return nil
}
2020-12-03 06:59:15 +00:00
// Child-specific functions are provided to this function and executed concurrently.
// Child collector metrics & results are reported.
2020-12-09 04:45:26 +00:00
func ( c * DFSRCollector ) execute ( ctx * ScrapeContext , name string , fn dfsrCollectorFunc , ch chan <- prometheus . Metric ) error {
2020-12-03 06:59:15 +00:00
// Child collector function called here, sends metric data back through channel
2020-12-09 04:45:26 +00:00
err := fn ( ctx , ch )
2020-12-03 06:59:15 +00:00
if err != nil {
2020-12-09 04:45:26 +00:00
return err
2020-12-03 06:59:15 +00:00
}
2020-12-09 04:45:26 +00:00
return err
2020-12-03 06:59:15 +00:00
}
// Perflib: "DFS Replication Service Connections"
type PerflibDFSRConnection struct {
Name string
BandwidthSavingsUsingDFSReplicationTotal float64 ` perflib:"Bandwidth Savings Using DFS Replication" `
BytesReceivedTotal float64 ` perflib:"Total Bytes Received" `
CompressedSizeOfFilesReceivedTotal float64 ` perflib:"Compressed Size of Files Received" `
FilesReceivedTotal float64 ` perflib:"Total Files Received" `
RDCBytesReceivedTotal float64 ` perflib:"RDC Bytes Received" `
RDCCompressedSizeOfFilesReceivedTotal float64 ` perflib:"RDC Compressed Size of Files Received" `
RDCNumberofFilesReceivedTotal float64 ` perflib:"RDC Number of Files Received" `
RDCSizeOfFilesReceivedTotal float64 ` perflib:"RDC Size of Files Received" `
SizeOfFilesReceivedTotal float64 ` perflib:"Size of Files Received" `
}
2020-12-09 04:45:26 +00:00
func ( c * DFSRCollector ) collectConnection ( ctx * ScrapeContext , ch chan <- prometheus . Metric ) error {
2020-12-03 06:59:15 +00:00
var dst [ ] PerflibDFSRConnection
if err := unmarshalObject ( ctx . perfObjects [ "DFS Replication Connections" ] , & dst ) ; err != nil {
2020-12-09 04:45:26 +00:00
return err
2020-12-03 06:59:15 +00:00
}
for _ , connection := range dst {
ch <- prometheus . MustNewConstMetric (
c . ConnectionBandwidthSavingsUsingDFSReplicationTotal ,
prometheus . CounterValue ,
connection . BandwidthSavingsUsingDFSReplicationTotal ,
connection . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . ConnectionBytesReceivedTotal ,
prometheus . CounterValue ,
connection . BytesReceivedTotal ,
connection . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . ConnectionCompressedSizeOfFilesReceivedTotal ,
prometheus . CounterValue ,
connection . CompressedSizeOfFilesReceivedTotal ,
connection . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . ConnectionFilesReceivedTotal ,
prometheus . CounterValue ,
connection . FilesReceivedTotal ,
connection . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . ConnectionRDCBytesReceivedTotal ,
prometheus . CounterValue ,
connection . RDCBytesReceivedTotal ,
connection . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . ConnectionRDCCompressedSizeOfFilesReceivedTotal ,
prometheus . CounterValue ,
connection . RDCCompressedSizeOfFilesReceivedTotal ,
connection . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . ConnectionRDCSizeOfFilesReceivedTotal ,
prometheus . CounterValue ,
connection . RDCSizeOfFilesReceivedTotal ,
connection . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . ConnectionRDCNumberofFilesReceivedTotal ,
prometheus . CounterValue ,
connection . RDCNumberofFilesReceivedTotal ,
connection . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . ConnectionSizeOfFilesReceivedTotal ,
prometheus . CounterValue ,
connection . SizeOfFilesReceivedTotal ,
connection . Name ,
)
}
2020-12-09 04:45:26 +00:00
return nil
2020-12-03 06:59:15 +00:00
}
2020-11-26 11:45:55 +00:00
// Perflib: "DFS Replicated Folder"
type PerflibDFSRFolder struct {
Name string
BandwidthSavingsUsingDFSReplicationTotal float64 ` perflib:"Bandwidth Savings Using DFS Replication" `
CompressedSizeOfFilesReceivedTotal float64 ` perflib:"Compressed Size of Files Received" `
ConflictBytesCleanedupTotal float64 ` perflib:"Conflict Bytes Cleaned Up" `
ConflictBytesGeneratedTotal float64 ` perflib:"Conflict Bytes Generated" `
ConflictFilesCleanedUpTotal float64 ` perflib:"Conflict Files Cleaned Up" `
ConflictFilesGeneratedTotal float64 ` perflib:"Conflict Files Generated" `
ConflictFolderCleanupsCompletedTotal float64 ` perflib:"Conflict Folder Cleanups Completed" `
ConflictSpaceInUse float64 ` perflib:"Conflict Space In Use" `
DeletedSpaceInUse float64 ` perflib:"Deleted Space In Use" `
DeletedBytesCleanedUpTotal float64 ` perflib:"Deleted Bytes Cleaned Up" `
DeletedBytesGeneratedTotal float64 ` perflib:"Deleted Bytes Generated" `
DeletedFilesCleanedUpTotal float64 ` perflib:"Deleted Files Cleaned Up" `
DeletedFilesGeneratedTotal float64 ` perflib:"Deleted Files Generated" `
FileInstallsRetriedTotal float64 ` perflib:"File Installs Retried" `
FileInstallsSucceededTotal float64 ` perflib:"File Installs Succeeded" `
FilesReceivedTotal float64 ` perflib:"Total Files Received" `
RDCBytesReceivedTotal float64 ` perflib:"RDC Bytes Received" `
RDCCompressedSizeOfFilesReceivedTotal float64 ` perflib:"RDC Compressed Size of Files Received" `
RDCNumberofFilesReceivedTotal float64 ` perflib:"RDC Number of Files Received" `
RDCSizeOfFilesReceivedTotal float64 ` perflib:"RDC Size of Files Received" `
SizeOfFilesReceivedTotal float64 ` perflib:"Size of Files Received" `
StagingSpaceInUse float64 ` perflib:"Staging Space In Use" `
StagingBytesCleanedUpTotal float64 ` perflib:"Staging Bytes Cleaned Up" `
StagingBytesGeneratedTotal float64 ` perflib:"Staging Bytes Generated" `
StagingFilesCleanedUpTotal float64 ` perflib:"Staging Files Cleaned Up" `
StagingFilesGeneratedTotal float64 ` perflib:"Staging Files Generated" `
UpdatesDroppedTotal float64 ` perflib:"Updates Dropped" `
}
2020-12-09 04:45:26 +00:00
func ( c * DFSRCollector ) collectFolder ( ctx * ScrapeContext , ch chan <- prometheus . Metric ) error {
2020-11-26 11:45:55 +00:00
var dst [ ] PerflibDFSRFolder
if err := unmarshalObject ( ctx . perfObjects [ "DFS Replicated Folders" ] , & dst ) ; err != nil {
2020-12-09 04:45:26 +00:00
return err
2020-11-26 11:45:55 +00:00
}
for _ , folder := range dst {
ch <- prometheus . MustNewConstMetric (
2020-12-03 06:59:15 +00:00
c . FolderBandwidthSavingsUsingDFSReplicationTotal ,
2020-11-26 11:45:55 +00:00
prometheus . CounterValue ,
folder . BandwidthSavingsUsingDFSReplicationTotal ,
folder . Name ,
)
ch <- prometheus . MustNewConstMetric (
2020-12-03 06:59:15 +00:00
c . FolderCompressedSizeOfFilesReceivedTotal ,
2020-11-26 11:45:55 +00:00
prometheus . CounterValue ,
folder . CompressedSizeOfFilesReceivedTotal ,
folder . Name ,
)
ch <- prometheus . MustNewConstMetric (
2020-12-03 06:59:15 +00:00
c . FolderConflictBytesCleanedupTotal ,
2020-11-26 11:45:55 +00:00
prometheus . CounterValue ,
folder . ConflictBytesCleanedupTotal ,
folder . Name ,
)
ch <- prometheus . MustNewConstMetric (
2020-12-03 06:59:15 +00:00
c . FolderConflictBytesGeneratedTotal ,
2020-11-26 11:45:55 +00:00
prometheus . CounterValue ,
folder . ConflictBytesGeneratedTotal ,
folder . Name ,
)
ch <- prometheus . MustNewConstMetric (
2020-12-03 06:59:15 +00:00
c . FolderConflictFilesCleanedUpTotal ,
2020-11-26 11:45:55 +00:00
prometheus . CounterValue ,
folder . ConflictFilesCleanedUpTotal ,
folder . Name ,
)
ch <- prometheus . MustNewConstMetric (
2020-12-03 06:59:15 +00:00
c . FolderConflictFilesGeneratedTotal ,
2020-11-26 11:45:55 +00:00
prometheus . CounterValue ,
folder . ConflictFilesGeneratedTotal ,
folder . Name ,
)
ch <- prometheus . MustNewConstMetric (
2020-12-03 06:59:15 +00:00
c . FolderConflictFolderCleanupsCompletedTotal ,
2020-11-26 11:45:55 +00:00
prometheus . CounterValue ,
folder . ConflictFolderCleanupsCompletedTotal ,
folder . Name ,
)
ch <- prometheus . MustNewConstMetric (
2020-12-03 06:59:15 +00:00
c . FolderConflictSpaceInUse ,
2020-11-26 11:45:55 +00:00
prometheus . GaugeValue ,
folder . ConflictSpaceInUse ,
folder . Name ,
)
ch <- prometheus . MustNewConstMetric (
2020-12-03 06:59:15 +00:00
c . FolderDeletedSpaceInUse ,
2020-11-26 11:45:55 +00:00
prometheus . GaugeValue ,
folder . DeletedSpaceInUse ,
folder . Name ,
)
ch <- prometheus . MustNewConstMetric (
2020-12-03 06:59:15 +00:00
c . FolderDeletedBytesCleanedUpTotal ,
2020-11-26 11:45:55 +00:00
prometheus . CounterValue ,
folder . DeletedBytesCleanedUpTotal ,
folder . Name ,
)
ch <- prometheus . MustNewConstMetric (
2020-12-03 06:59:15 +00:00
c . FolderDeletedBytesGeneratedTotal ,
2020-11-26 11:45:55 +00:00
prometheus . CounterValue ,
folder . DeletedBytesGeneratedTotal ,
folder . Name ,
)
ch <- prometheus . MustNewConstMetric (
2020-12-03 06:59:15 +00:00
c . FolderDeletedFilesCleanedUpTotal ,
2020-11-26 11:45:55 +00:00
prometheus . CounterValue ,
folder . DeletedFilesCleanedUpTotal ,
folder . Name ,
)
ch <- prometheus . MustNewConstMetric (
2020-12-03 06:59:15 +00:00
c . FolderDeletedFilesGeneratedTotal ,
2020-11-26 11:45:55 +00:00
prometheus . CounterValue ,
folder . DeletedFilesGeneratedTotal ,
folder . Name ,
)
ch <- prometheus . MustNewConstMetric (
2020-12-03 06:59:15 +00:00
c . FolderFileInstallsRetriedTotal ,
2020-11-26 11:45:55 +00:00
prometheus . CounterValue ,
folder . FileInstallsRetriedTotal ,
folder . Name ,
)
ch <- prometheus . MustNewConstMetric (
2020-12-03 06:59:15 +00:00
c . FolderFileInstallsSucceededTotal ,
2020-11-26 11:45:55 +00:00
prometheus . CounterValue ,
folder . FileInstallsSucceededTotal ,
folder . Name ,
)
ch <- prometheus . MustNewConstMetric (
2020-12-03 06:59:15 +00:00
c . FolderFilesReceivedTotal ,
2020-11-26 11:45:55 +00:00
prometheus . CounterValue ,
folder . FilesReceivedTotal ,
folder . Name ,
)
ch <- prometheus . MustNewConstMetric (
2020-12-03 06:59:15 +00:00
c . FolderRDCBytesReceivedTotal ,
2020-11-26 11:45:55 +00:00
prometheus . CounterValue ,
folder . RDCBytesReceivedTotal ,
folder . Name ,
)
ch <- prometheus . MustNewConstMetric (
2020-12-03 06:59:15 +00:00
c . FolderRDCCompressedSizeOfFilesReceivedTotal ,
2020-11-26 11:45:55 +00:00
prometheus . CounterValue ,
folder . RDCCompressedSizeOfFilesReceivedTotal ,
folder . Name ,
)
ch <- prometheus . MustNewConstMetric (
2020-12-03 06:59:15 +00:00
c . FolderRDCNumberofFilesReceivedTotal ,
2020-11-26 11:45:55 +00:00
prometheus . CounterValue ,
folder . RDCNumberofFilesReceivedTotal ,
folder . Name ,
)
ch <- prometheus . MustNewConstMetric (
2020-12-03 06:59:15 +00:00
c . FolderRDCSizeOfFilesReceivedTotal ,
2020-11-26 11:45:55 +00:00
prometheus . CounterValue ,
folder . RDCSizeOfFilesReceivedTotal ,
folder . Name ,
)
ch <- prometheus . MustNewConstMetric (
2020-12-03 06:59:15 +00:00
c . FolderSizeOfFilesReceivedTotal ,
2020-11-26 11:45:55 +00:00
prometheus . CounterValue ,
folder . SizeOfFilesReceivedTotal ,
folder . Name ,
)
ch <- prometheus . MustNewConstMetric (
2020-12-03 06:59:15 +00:00
c . FolderStagingSpaceInUse ,
2020-11-26 11:45:55 +00:00
prometheus . GaugeValue ,
folder . StagingSpaceInUse ,
folder . Name ,
)
ch <- prometheus . MustNewConstMetric (
2020-12-03 06:59:15 +00:00
c . FolderStagingBytesCleanedUpTotal ,
2020-11-26 11:45:55 +00:00
prometheus . CounterValue ,
folder . StagingBytesCleanedUpTotal ,
folder . Name ,
)
ch <- prometheus . MustNewConstMetric (
2020-12-03 06:59:15 +00:00
c . FolderStagingBytesGeneratedTotal ,
2020-11-26 11:45:55 +00:00
prometheus . CounterValue ,
folder . StagingBytesGeneratedTotal ,
folder . Name ,
)
ch <- prometheus . MustNewConstMetric (
2020-12-03 06:59:15 +00:00
c . FolderStagingFilesCleanedUpTotal ,
2020-11-26 11:45:55 +00:00
prometheus . CounterValue ,
folder . StagingFilesCleanedUpTotal ,
folder . Name ,
)
ch <- prometheus . MustNewConstMetric (
2020-12-03 06:59:15 +00:00
c . FolderStagingFilesGeneratedTotal ,
2020-11-26 11:45:55 +00:00
prometheus . CounterValue ,
folder . StagingFilesGeneratedTotal ,
folder . Name ,
)
ch <- prometheus . MustNewConstMetric (
2020-12-03 06:59:15 +00:00
c . FolderUpdatesDroppedTotal ,
2020-11-26 11:45:55 +00:00
prometheus . CounterValue ,
folder . UpdatesDroppedTotal ,
folder . Name ,
)
}
2020-12-09 04:45:26 +00:00
return nil
2020-11-26 11:45:55 +00:00
}
2020-12-03 06:59:15 +00:00
// Perflib: "DFS Replication Service Volumes"
type PerflibDFSRVolume struct {
Name string
DatabaseCommitsTotal float64 ` perflib:"Database Commits" `
DatabaseLookupsTotal float64 ` perflib:"Database Lookups" `
USNJournalRecordsReadTotal float64 ` perflib:"USN Journal Records Read" `
USNJournalRecordsAcceptedTotal float64 ` perflib:"USN Journal Records Accepted" `
USNJournalUnreadPercentage float64 ` perflib:"USN Journal Records Unread Percentage" `
}
2020-12-09 04:45:26 +00:00
func ( c * DFSRCollector ) collectVolume ( ctx * ScrapeContext , ch chan <- prometheus . Metric ) error {
2020-12-03 06:59:15 +00:00
var dst [ ] PerflibDFSRVolume
if err := unmarshalObject ( ctx . perfObjects [ "DFS Replication Service Volumes" ] , & dst ) ; err != nil {
2020-12-09 04:45:26 +00:00
return err
2020-12-03 06:59:15 +00:00
}
for _ , volume := range dst {
ch <- prometheus . MustNewConstMetric (
c . VolumeDatabaseLookupsTotal ,
prometheus . CounterValue ,
volume . DatabaseLookupsTotal ,
volume . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . VolumeDatabaseCommitsTotal ,
prometheus . CounterValue ,
volume . DatabaseCommitsTotal ,
volume . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . VolumeUSNJournalRecordsAcceptedTotal ,
prometheus . CounterValue ,
volume . USNJournalRecordsAcceptedTotal ,
volume . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . VolumeUSNJournalRecordsReadTotal ,
prometheus . CounterValue ,
volume . USNJournalRecordsReadTotal ,
volume . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . VolumeUSNJournalUnreadPercentage ,
prometheus . GaugeValue ,
volume . USNJournalUnreadPercentage ,
volume . Name ,
)
}
2020-12-09 04:45:26 +00:00
return nil
2020-12-03 06:59:15 +00:00
}