in exporter/collector/monitoredresource.go [58:85]
func filterAttributes(
attributes pcommon.Map,
serviceResourceLabels bool,
resourceFilters []ResourceFilter,
) pcommon.Map {
attrs := pcommon.NewMap()
attributes.Range(func(k string, v pcommon.Value) bool {
// Is a service attribute and should be included
if serviceResourceLabels &&
(k == semconv.AttributeServiceName ||
k == semconv.AttributeServiceNamespace ||
k == semconv.AttributeServiceInstanceID) {
if len(v.AsString()) > 0 {
v.CopyTo(attrs.PutEmpty(k))
}
return true
}
// Matches one of the resource filters
for _, resourceFilter := range resourceFilters {
if match, _ := regexp.Match(resourceFilter.Regex, []byte(k)); strings.HasPrefix(k, resourceFilter.Prefix) && match {
v.CopyTo(attrs.PutEmpty(k))
return true
}
}
return true
})
return attrs
}