func addDiskMetric()

in remappers/hostmetrics/disk.go [61:99]


func addDiskMetric(
	metric pmetric.Metric,
	out pmetric.MetricSlice,
	mutator func(pmetric.NumberDataPoint),
	multiplier int64,
) error {
	metricDiskES, ok := metricsToAdd[metric.Name()]
	if !ok {
		return fmt.Errorf("unexpected metric name: %s", metric.Name())
	}

	dps := metric.Sum().DataPoints()
	for i := 0; i < dps.Len(); i++ {
		dp := dps.At(i)
		if device, ok := dp.Attributes().Get("device"); ok {
			direction, _ := dp.Attributes().Get("direction")
			newM := remappedmetric.Metric{
				DataType:  pmetric.MetricTypeSum,
				Name:      fmt.Sprintf(metricDiskES, direction.Str()),
				Timestamp: dp.Timestamp(),
			}
			switch dp.ValueType() {
			case pmetric.NumberDataPointValueTypeInt:
				v := dp.IntValue() * multiplier
				newM.IntValue = &v
			case pmetric.NumberDataPointValueTypeDouble:
				v := dp.DoubleValue() * float64(multiplier)
				newM.DoubleValue = &v
			}
			remappedmetric.Add(out, remappedmetric.ChainedMutator(
				mutator,
				func(dp pmetric.NumberDataPoint) {
					dp.Attributes().PutStr("system.diskio.name", device.Str())
				},
			), newM)
		}
	}
	return nil
}