func()

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)
}