in apps/dcgm.go [39:206]
func (r MetricsReceiverDcgm) Pipelines(_ context.Context) ([]otel.ReceiverPipeline, error) {
if r.Endpoint == "" {
r.Endpoint = defaultDcgmEndpoint
}
if r.ReceiverVersion == "2" {
return []otel.ReceiverPipeline{{
Receiver: otel.Component{
Type: "dcgm",
Config: map[string]interface{}{
"collection_interval": r.CollectionIntervalString(),
"endpoint": r.Endpoint,
},
},
Processors: map[string][]otel.Component{"metrics": {
otel.MetricsTransform(
otel.UpdateMetric(
"gpu.dcgm.pipe.utilization",
otel.RenameLabel("gpu.pipe", "pipe"),
),
otel.UpdateMetric(
"gpu.dcgm.memory.bytes_used",
otel.RenameLabel("gpu.memory.state", "state"),
),
otel.UpdateMetric(
"gpu.dcgm.nvlink.io",
otel.RenameLabel("network.io.direction", "direction"),
),
otel.UpdateMetric(
"gpu.dcgm.pcie.io",
otel.RenameLabel("network.io.direction", "direction"),
),
otel.UpdateMetric(
"gpu.dcgm.clock.throttle_duration.time",
otel.RenameLabel("gpu.clock.violation", "violation"),
),
otel.UpdateMetric(
"gpu.dcgm.ecc_errors",
otel.RenameLabel("gpu.error.type", "error_type"),
),
otel.UpdateMetric(
"gpu.dcgm.xid_errors",
otel.RenameLabel("gpu.error.xid", "xid"),
),
),
otel.MetricsTransform(
otel.AddPrefix("workload.googleapis.com"),
),
otel.TransformationMetrics(
otel.FlattenResourceAttribute("gpu.model", "model"),
otel.FlattenResourceAttribute("gpu.number", "gpu_number"),
otel.FlattenResourceAttribute("gpu.uuid", "uuid"),
),
otel.ModifyInstrumentationScope(r.Type(), "2.0"),
}},
}}, nil
}
disabledV1Metrics := []string{
"gpu.dcgm.utilization",
"gpu.dcgm.codec.encoder.utilization",
"gpu.dcgm.codec.decoder.utilization",
"gpu.dcgm.memory.bytes_used",
"gpu.dcgm.energy_consumption",
"gpu.dcgm.temperature",
"gpu.dcgm.clock.frequency",
"gpu.dcgm.clock.throttle_duration.time",
"gpu.dcgm.ecc_errors",
"gpu.dcgm.xid_errors",
}
enabledV1Metrics := []string{
"gpu.dcgm.sm.utilization",
"gpu.dcgm.sm.occupancy",
"gpu.dcgm.pipe.utilization",
"gpu.dcgm.memory.bandwidth_utilization",
"gpu.dcgm.pcie.io",
"gpu.dcgm.nvlink.io",
}
metricsConfig := make(map[string]interface{})
for _, m := range disabledV1Metrics {
metricsConfig[m] = map[string]bool{
"enabled": false,
}
}
for _, m := range enabledV1Metrics {
metricsConfig[m] = map[string]bool{
"enabled": true,
}
}
return []otel.ReceiverPipeline{{
Receiver: otel.Component{
Type: "dcgm",
Config: map[string]interface{}{
"collection_interval": r.CollectionIntervalString(),
"endpoint": r.Endpoint,
"metrics": metricsConfig,
},
},
Processors: map[string][]otel.Component{"metrics": {
otel.MetricsTransform(
otel.RenameMetric(
"gpu.dcgm.memory.bandwidth_utilization",
"dcgm.gpu.profiling.dram_utilization",
),
otel.RenameMetric(
"gpu.dcgm.nvlink.io",
"dcgm.gpu.profiling.nvlink_traffic_rate",
otel.RenameLabel("network.io.direction", "direction"),
otel.RenameLabelValues("direction", map[string]string{
"receive": "rx",
"transmit": "tx",
}),
),
otel.RenameMetric(
"gpu.dcgm.pcie.io",
"dcgm.gpu.profiling.pcie_traffic_rate",
otel.RenameLabel("network.io.direction", "direction"),
otel.RenameLabelValues("direction", map[string]string{
"receive": "rx",
"transmit": "tx",
}),
),
otel.RenameMetric(
"gpu.dcgm.pipe.utilization",
"dcgm.gpu.profiling.pipe_utilization",
otel.RenameLabel("gpu.pipe", "pipe"),
),
otel.RenameMetric(
"gpu.dcgm.sm.occupancy",
"dcgm.gpu.profiling.sm_occupancy",
),
otel.RenameMetric(
"gpu.dcgm.sm.utilization",
"dcgm.gpu.profiling.sm_utilization",
),
),
otel.CumulativeToDelta(
"dcgm.gpu.profiling.nvlink_traffic_rate",
"dcgm.gpu.profiling.pcie_traffic_rate",
),
otel.DeltaToRate(
"dcgm.gpu.profiling.nvlink_traffic_rate",
"dcgm.gpu.profiling.pcie_traffic_rate",
),
otel.MetricsTransform(
otel.UpdateMetric(
"dcgm.gpu.profiling.nvlink_traffic_rate",
otel.ToggleScalarDataType,
),
otel.UpdateMetric(
"dcgm.gpu.profiling.pcie_traffic_rate",
otel.ToggleScalarDataType,
),
),
otel.MetricsTransform(
otel.AddPrefix("workload.googleapis.com"),
),
otel.TransformationMetrics(
otel.FlattenResourceAttribute("gpu.model", "model"),
otel.FlattenResourceAttribute("gpu.number", "gpu_number"),
otel.FlattenResourceAttribute("gpu.uuid", "uuid"),
),
otel.ModifyInstrumentationScope(r.Type(), "1.0"),
}},
}}, nil
}