in confgenerator/agentmetrics.go [35:108]
func (r AgentSelfMetrics) MetricsSubmodulePipeline() otel.ReceiverPipeline {
return otel.ReceiverPipeline{
Receiver: otel.Component{
Type: "prometheus",
Config: map[string]interface{}{
"config": map[string]interface{}{
"scrape_configs": []map[string]interface{}{{
"job_name": "otel-collector",
"scrape_interval": "1m",
"static_configs": []map[string]interface{}{{
// TODO(b/196990135): Customization for the port number
"targets": []string{fmt.Sprintf("0.0.0.0:%d", r.Port)},
}},
}},
},
},
},
ExporterTypes: map[string]otel.ExporterType{
"metrics": otel.System,
},
Processors: map[string][]otel.Component{"metrics": {
otel.MetricsFilter(
"include",
"strict",
"otelcol_process_uptime",
"otelcol_process_memory_rss",
"grpc.client.attempt.duration",
"googlecloudmonitoring/point_count",
),
otel.Transform("metric", "metric",
// create new count metric from histogram metric
ottl.ExtractCountMetric(true, "grpc.client.attempt.duration"),
),
otel.MetricsFilter(
"include",
"strict",
"otelcol_process_uptime",
"otelcol_process_memory_rss",
"grpc.client.attempt.duration_count",
"googlecloudmonitoring/point_count",
),
otel.MetricsTransform(
otel.RenameMetric("otelcol_process_uptime", "agent/uptime",
// change data type from double -> int64
otel.ToggleScalarDataType,
otel.AddLabel("version", r.Version),
// remove service.version label
otel.AggregateLabels("sum", "version"),
),
otel.RenameMetric("otelcol_process_memory_rss", "agent/memory_usage",
// remove service.version label
otel.AggregateLabels("sum"),
),
otel.RenameMetric("grpc.client.attempt.duration_count", "agent/api_request_count",
// TODO: below is proposed new configuration for the metrics transform processor
// ignore any non "google.monitoring" RPCs (note there won't be any other RPCs for now)
// - action: select_label_values
// label: grpc_client_method
// value_regexp: ^google\.monitoring
otel.RenameLabel("grpc.status", "state"),
// delete grpc_client_method dimension & service.version label, retaining only state
otel.AggregateLabels("sum", "state"),
),
otel.RenameMetric("googlecloudmonitoring/point_count", "agent/monitoring/point_count",
// change data type from double -> int64
otel.ToggleScalarDataType,
// Remove service.version label
otel.AggregateLabels("sum", "status"),
),
otel.AddPrefix("agent.googleapis.com"),
),
}},
}
}