github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/sub/scanner/metrics.go (about)

     1  package scanner
     2  
     3  import (
     4  	"github.com/Cloud-Foundations/tricorder/go/tricorder"
     5  	"github.com/Cloud-Foundations/tricorder/go/tricorder/units"
     6  )
     7  
     8  var latencyBucketer *tricorder.Bucketer
     9  var scanTimeDistribution *tricorder.CumulativeDistribution
    10  
    11  func init() {
    12  	latencyBucketer = tricorder.NewGeometricBucketer(1, 10e3)
    13  	scanTimeDistribution = latencyBucketer.NewCumulativeDistribution()
    14  	tricorder.RegisterMetric("/scan-time", scanTimeDistribution,
    15  		units.Second, "scan time")
    16  }
    17  
    18  func (configuration *Configuration) registerMetrics(
    19  	dir *tricorder.DirectorySpec) error {
    20  	scannerDir, err := dir.RegisterDirectory("scanner")
    21  	if err != nil {
    22  		return err
    23  	}
    24  	err = configuration.FsScanContext.RegisterMetrics(scannerDir)
    25  	if err != nil {
    26  		return err
    27  	}
    28  	netDir, err := dir.RegisterDirectory("network")
    29  	if err != nil {
    30  		return err
    31  	}
    32  	err = configuration.NetworkReaderContext.RegisterMetrics(netDir,
    33  		units.BytePerSecond, "network speed")
    34  	if err != nil {
    35  		return err
    36  	}
    37  	if configuration.ScanFilter != nil {
    38  		list := tricorder.NewList(configuration.ScanFilter.FilterLines, false)
    39  		err := scannerDir.RegisterMetric("scan-filter", list, units.None,
    40  			"scan filter lines")
    41  		if err != nil {
    42  			return err
    43  		}
    44  	}
    45  	return nil
    46  }