func diskMetrics()

in internal/hostmetrics/osmetricreader/osmetricreader.go [104:193]


func diskMetrics(diskStats *statspb.DiskStatsCollection, instanceProperties *iipb.InstanceProperties, startTime int64, refreshTime int64) []*mpb.Metric {
	var diskMetrics []*mpb.Metric

	for _, disk := range instanceProperties.GetDisks() {
		deviceID := disk.GetDeviceName()
		if disk.GetDiskName() != "" {
			deviceID = disk.GetDiskName()
		}
		localDiskMapping := localDiskForMapping(diskStats, disk.GetMapping())
		volumeQueueLength := fmt.Sprintf("%g", metricsformatter.Unavailable)
		volumeReadResponseTime := fmt.Sprintf("%g", metricsformatter.Unavailable)
		volumeWriteResponseTime := fmt.Sprintf("%g", metricsformatter.Unavailable)

		if localDiskMapping != nil {
			volumeQueueLength = strconv.FormatInt(localDiskMapping.GetQueueLength(), 10)
			volumeReadResponseTime = strconv.FormatInt(localDiskMapping.GetAverageReadResponseTimeMillis(), 10)
			volumeWriteResponseTime = strconv.FormatInt(localDiskMapping.GetAverageWriteResponseTimeMillis(), 10)
		}

		diskMetrics = append(diskMetrics,
			&mpb.Metric{
				Name:            "Volume ID",
				Context:         mpb.Context_CONTEXT_VM,
				Category:        mpb.Category_CATEGORY_DISK,
				Type:            mpb.Type_TYPE_STRING,
				Unit:            mpb.Unit_UNIT_NONE,
				RefreshInterval: mpb.RefreshInterval_REFRESHINTERVAL_RESTART,
				LastRefresh:     startTime,
				DeviceId:        deviceID,
				Value:           deviceID,
			},
			&mpb.Metric{
				Name:            "Volume Type",
				Context:         mpb.Context_CONTEXT_VM,
				Category:        mpb.Category_CATEGORY_DISK,
				Type:            mpb.Type_TYPE_STRING,
				Unit:            mpb.Unit_UNIT_NONE,
				RefreshInterval: mpb.RefreshInterval_REFRESHINTERVAL_RESTART,
				LastRefresh:     startTime,
				DeviceId:        deviceID,
				Value:           formattedDeviceType(disk.GetDeviceType()),
			},
			&mpb.Metric{
				Name:            "Mapping",
				Context:         mpb.Context_CONTEXT_VM,
				Category:        mpb.Category_CATEGORY_DISK,
				Type:            mpb.Type_TYPE_STRING,
				Unit:            mpb.Unit_UNIT_NONE,
				RefreshInterval: mpb.RefreshInterval_REFRESHINTERVAL_RESTART,
				LastRefresh:     startTime,
				DeviceId:        deviceID,
				Value:           disk.GetMapping(),
			},
			&mpb.Metric{
				Name:            "Volume Queue Length",
				Context:         mpb.Context_CONTEXT_VM,
				Category:        mpb.Category_CATEGORY_DISK,
				Type:            mpb.Type_TYPE_INT64,
				Unit:            mpb.Unit_UNIT_NONE,
				RefreshInterval: mpb.RefreshInterval_REFRESHINTERVAL_PER_MINUTE,
				LastRefresh:     refreshTime,
				DeviceId:        deviceID,
				Value:           volumeQueueLength,
			},
			&mpb.Metric{
				Name:            "Volume Read Response Time",
				Context:         mpb.Context_CONTEXT_VM,
				Category:        mpb.Category_CATEGORY_DISK,
				Type:            mpb.Type_TYPE_INT64,
				Unit:            mpb.Unit_UNIT_MSEC,
				RefreshInterval: mpb.RefreshInterval_REFRESHINTERVAL_PER_MINUTE,
				LastRefresh:     refreshTime,
				DeviceId:        deviceID,
				Value:           volumeReadResponseTime,
			},
			&mpb.Metric{
				Name:            "Volume Write Response Time",
				Context:         mpb.Context_CONTEXT_VM,
				Category:        mpb.Category_CATEGORY_DISK,
				Type:            mpb.Type_TYPE_INT64,
				Unit:            mpb.Unit_UNIT_MSEC,
				RefreshInterval: mpb.RefreshInterval_REFRESHINTERVAL_PER_MINUTE,
				LastRefresh:     refreshTime,
				DeviceId:        deviceID,
				Value:           volumeWriteResponseTime,
			})
	}

	return diskMetrics
}