in agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/exporter/Exporter.java [1025:1085]
private static void setExtraAttributes(
TelemetryItem telemetry, MonitorDomain data, Attributes attributes) {
attributes.forEach(
(key, value) -> {
String stringKey = key.getKey();
if (stringKey.startsWith("applicationinsights.internal.")) {
return;
}
if (stringKey.equals(AZURE_NAMESPACE.getKey())
|| stringKey.equals(AZURE_SDK_MESSAGE_BUS_DESTINATION.getKey())
|| stringKey.equals(AZURE_SDK_ENQUEUED_TIME.getKey())) {
// these are from azure SDK (AZURE_SDK_PEER_ADDRESS gets filtered out automatically
// since it uses the otel "peer." prefix)
return;
}
if (stringKey.equals(KAFKA_RECORD_QUEUE_TIME_MS.getKey())
|| stringKey.equals(KAFKA_OFFSET.getKey())) {
return;
}
if (stringKey.equals(AI_REQUEST_CONTEXT_KEY.getKey())) {
return;
}
// special case mappings
if (stringKey.equals(SemanticAttributes.ENDUSER_ID.getKey()) && value instanceof String) {
telemetry.getTags().put(ContextTagKeys.AI_USER_ID.toString(), (String) value);
return;
}
if (stringKey.equals(SemanticAttributes.HTTP_USER_AGENT.getKey())
&& value instanceof String) {
telemetry.getTags().put("ai.user.userAgent", (String) value);
return;
}
if (stringKey.equals("ai.preview.instrumentation_key") && value instanceof String) {
telemetry.setInstrumentationKey((String) value);
return;
}
if (stringKey.equals("ai.preview.service_name") && value instanceof String) {
telemetry.getTags().put(ContextTagKeys.AI_CLOUD_ROLE.toString(), (String) value);
return;
}
if (stringKey.equals("ai.preview.service_instance_id") && value instanceof String) {
telemetry
.getTags()
.put(ContextTagKeys.AI_CLOUD_ROLE_INSTANCE.toString(), (String) value);
return;
}
if (stringKey.equals("ai.preview.service_version") && value instanceof String) {
telemetry.getTags().put(ContextTagKeys.AI_APPLICATION_VER.toString(), (String) value);
return;
}
if (STANDARD_ATTRIBUTE_PREFIX_TRIE.getOrDefault(stringKey, false)
&& !stringKey.startsWith("http.request.header.")
&& !stringKey.startsWith("http.response.header.")) {
return;
}
String val = convertToString(value, key.getType());
if (value != null) {
TelemetryUtil.getProperties(data).put(key.getKey(), val);
}
});
}