in plugins/forwarder/grpc/otlpmetricsv1/forwarder.go [137:174]
func (f *Forwarder) generateRoutingKey(data *metrics.ExportMetricsServiceRequest) (string, error) {
if len(data.GetResourceMetrics()) == 0 {
return "", fmt.Errorf("no resources")
}
var lastKVs []*common.KeyValue
for _, m := range data.GetResourceMetrics() {
if m.Resource == nil {
continue
}
if len(m.Resource.Attributes) == 0 {
continue
}
lastKVs = m.Resource.Attributes
result := ""
for _, kv := range m.Resource.Attributes {
for _, key := range f.metadataKeys {
if kv.GetKey() == key {
result += fmt.Sprintf(",%s", kv.GetValue().GetStringValue())
}
}
}
if result != "" {
return result, nil
}
}
if lastKVs == nil {
return "", fmt.Errorf("could not found any attributes")
}
var keys string
for i, k := range lastKVs {
if i > 0 {
keys += ","
}
keys += k.GetKey()
}
return "", fmt.Errorf("could not found anly routing key, existing keys sample: %s", keys)
}