func NewDiskCollectorOrDie()

in pkg/systemstatsmonitor/disk_collector.go [58:165]


func NewDiskCollectorOrDie(diskConfig *ssmtypes.DiskStatsConfig) *diskCollector {
	dc := diskCollector{config: diskConfig}

	var err error

	// Use metrics.Sum aggregation method to ensure the metric is a counter/cumulative metric.
	dc.mIOTime, err = metrics.NewInt64Metric(
		metrics.DiskIOTimeID,
		diskConfig.MetricsConfigs[string(metrics.DiskIOTimeID)].DisplayName,
		"The IO time spent on the disk, in ms",
		"ms",
		metrics.Sum,
		[]string{deviceNameLabel})
	if err != nil {
		glog.Fatalf("Error initializing metric for disk/io_time: %v", err)
	}

	// Use metrics.Sum aggregation method to ensure the metric is a counter/cumulative metric.
	dc.mWeightedIO, err = metrics.NewInt64Metric(
		metrics.DiskWeightedIOID,
		diskConfig.MetricsConfigs[string(metrics.DiskWeightedIOID)].DisplayName,
		"The weighted IO on the disk, in ms",
		"ms",
		metrics.Sum,
		[]string{deviceNameLabel})
	if err != nil {
		glog.Fatalf("Error initializing metric for disk/weighted_io: %v", err)
	}

	dc.mAvgQueueLen, err = metrics.NewFloat64Metric(
		metrics.DiskAvgQueueLenID,
		diskConfig.MetricsConfigs[string(metrics.DiskAvgQueueLenID)].DisplayName,
		"The average queue length on the disk",
		"1",
		metrics.LastValue,
		[]string{deviceNameLabel})
	if err != nil {
		glog.Fatalf("Error initializing metric for disk/avg_queue_len: %v", err)
	}

	dc.mOpsCount, err = metrics.NewInt64Metric(
		metrics.DiskOpsCountID,
		diskConfig.MetricsConfigs[string(metrics.DiskOpsCountID)].DisplayName,
		"Disk operations count",
		"1",
		metrics.Sum,
		[]string{deviceNameLabel, directionLabel})
	if err != nil {
		glog.Fatalf("Error initializing metric for %q: %v", metrics.DiskOpsCountID, err)
	}

	dc.mMergedOpsCount, err = metrics.NewInt64Metric(
		metrics.DiskMergedOpsCountID,
		diskConfig.MetricsConfigs[string(metrics.DiskMergedOpsCountID)].DisplayName,
		"Disk merged operations count",
		"1",
		metrics.Sum,
		[]string{deviceNameLabel, directionLabel})
	if err != nil {
		glog.Fatalf("Error initializing metric for %q: %v", metrics.DiskMergedOpsCountID, err)
	}

	dc.mOpsBytes, err = metrics.NewInt64Metric(
		metrics.DiskOpsBytesID,
		diskConfig.MetricsConfigs[string(metrics.DiskOpsBytesID)].DisplayName,
		"Bytes transferred in disk operations",
		"1",
		metrics.Sum,
		[]string{deviceNameLabel, directionLabel})
	if err != nil {
		glog.Fatalf("Error initializing metric for %q: %v", metrics.DiskOpsBytesID, err)
	}

	dc.mOpsTime, err = metrics.NewInt64Metric(
		metrics.DiskOpsTimeID,
		diskConfig.MetricsConfigs[string(metrics.DiskOpsTimeID)].DisplayName,
		"Time spent in disk operations, in ms",
		"ms",
		metrics.Sum,
		[]string{deviceNameLabel, directionLabel})
	if err != nil {
		glog.Fatalf("Error initializing metric for %q: %v", metrics.DiskOpsTimeID, err)
	}

	dc.mBytesUsed, err = metrics.NewInt64Metric(
		metrics.DiskBytesUsedID,
		diskConfig.MetricsConfigs[string(metrics.DiskBytesUsedID)].DisplayName,
		"Disk bytes used, in Bytes",
		"Byte",
		metrics.LastValue,
		[]string{deviceNameLabel, fsTypeLabel, mountOptionLabel, stateLabel})
	if err != nil {
		glog.Fatalf("Error initializing metric for %q: %v", metrics.DiskBytesUsedID, err)
	}

	dc.lastIOTime = make(map[string]uint64)
	dc.lastWeightedIO = make(map[string]uint64)
	dc.lastReadCount = make(map[string]uint64)
	dc.lastWriteCount = make(map[string]uint64)
	dc.lastMergedReadCount = make(map[string]uint64)
	dc.lastMergedWriteCount = make(map[string]uint64)
	dc.lastReadBytes = make(map[string]uint64)
	dc.lastWriteBytes = make(map[string]uint64)
	dc.lastReadTime = make(map[string]uint64)
	dc.lastWriteTime = make(map[string]uint64)

	return &dc
}