This is an automated email from the ASF dual-hosted git repository. wusheng pushed a commit to branch feature/swip-10-envoy-ai-gateway in repository https://gitbox.apache.org/repos/asf/skywalking.git
commit 6695b88cec26bf1e6213e8df8e3a5ec41a58275c Author: Wu Sheng <[email protected]> AuthorDate: Tue Mar 31 14:10:22 2026 +0800 Fix service identity and label handling for OTLP integration - OTel metric receiver: change LABEL_MAPPINGS to fallback-only — explicit job_name in resource attributes takes precedence over service.name mapping - OTel log handler: prefer service.instance.id (OTel spec) over service.instance with backward-compatible fallback - OTel metric receiver: convert data point attribute dots to underscores (same as resource attributes and metric names) - MAL rules: use service_name for service identity instead of aigw_service - Docker-compose: use OTEL_SERVICE_NAME for per-deployment service name, explicit job_name for MAL routing - Service dashboard: add metrics to InstanceList widget - SampleFamily: add debugDump() for MAL debugging - SWIP-10: updated entity model docs --- .../otel/otlp/OpenTelemetryLogHandler.java | 8 +++++- .../envoy_ai_gateway/envoy-ai-gateway-service.json | 32 +++++++++++++++++++++- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/oap-server/server-receiver-plugin/otel-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/otel/otlp/OpenTelemetryLogHandler.java b/oap-server/server-receiver-plugin/otel-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/otel/otlp/OpenTelemetryLogHandler.java index 9bebac1077..3b9fc38c44 100644 --- a/oap-server/server-receiver-plugin/otel-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/otel/otlp/OpenTelemetryLogHandler.java +++ b/oap-server/server-receiver-plugin/otel-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/otel/otlp/OpenTelemetryLogHandler.java @@ -104,7 +104,13 @@ public class OpenTelemetryLogHandler return; } final var layer = attributes.getOrDefault("service.layer", ""); - final var serviceInstance = attributes.getOrDefault("service.instance", ""); + // service.instance.id is the OTel standard resource attribute for instance identity + // https://opentelemetry.io/docs/specs/semconv/resource/#service + // Fall back to service.instance for backward compatibility + final var instanceId = attributes.getOrDefault("service.instance.id", ""); + final var serviceInstance = instanceId.isEmpty() + ? attributes.getOrDefault("service.instance", "") + : instanceId; resourceLogs .getScopeLogsList() diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/envoy_ai_gateway/envoy-ai-gateway-service.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/envoy_ai_gateway/envoy-ai-gateway-service.json index 8acd215c07..2bf622c482 100644 --- a/oap-server/server-starter/src/main/resources/ui-initialized-templates/envoy_ai_gateway/envoy-ai-gateway-service.json +++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/envoy_ai_gateway/envoy-ai-gateway-service.json @@ -486,7 +486,37 @@ "type": "InstanceList", "dashboardName": "Envoy-AI-Gateway-Instance", "fontSize": 12 - } + }, + "expressions": [ + "avg(meter_envoy_ai_gw_instance_request_cpm)", + "avg(meter_envoy_ai_gw_instance_request_latency_avg)", + "avg(meter_envoy_ai_gw_instance_input_token_rate)", + "avg(meter_envoy_ai_gw_instance_output_token_rate)" + ], + "subExpressions": [ + "meter_envoy_ai_gw_instance_request_cpm", + "meter_envoy_ai_gw_instance_request_latency_avg", + "meter_envoy_ai_gw_instance_input_token_rate", + "meter_envoy_ai_gw_instance_output_token_rate" + ], + "metricConfig": [ + { + "label": "CPM", + "unit": "calls/min" + }, + { + "label": "Latency", + "unit": "ms" + }, + { + "label": "Input Tokens", + "unit": "tokens/min" + }, + { + "label": "Output Tokens", + "unit": "tokens/min" + } + ] } ] }
