AKS自托管APIM场景下,如何将Dapr日志通过OTLP发至Azure Monitor?
当前配置与问题现状
我们在AKS上自托管APIM,因部分容器日志仅输出至stdout未发送至Application Insights,已在values.yaml中启用Dapr采集stdout日志,配置如下:
dapr: enabled: true app: id: apim-test-scus config: tracing logging: useJsonOutput: true level: debug
同时尝试通过Open Telemetry Collector将日志发送至Azure Monitor,但仅能采集追踪数据,无法采集日志。OTel Collector的ConfigMap配置如下:
receivers: otlp: protocols: grpc: http: zipkin: endpoint: 0.0.0.0:9411 processors: batch: exporters: azuremonitor: instrumentation_key: ***************** logging: loglevel: info extensions: health_check: pprof: endpoint: :1888 zpages: endpoint: :55679 service: extensions: [pprof, zpages, health_check] pipelines: traces: receivers: [zipkin] processors: [batch] exporters: [logging, azuremonitor] logs: receivers: [otlp] processors: [] exporters: [logging, azuremonitor]
目前Dapr日志可在Dapr Dashboard中查看,但OTel Collector未收到Dapr通过OTLP发送的日志数据,需解决如何通过OTLP或其他协议将Dapr日志发送至OTel Collector的问题。
解决步骤
1. 配置Dapr日志输出至OTLP
需要修改Dapr的Configuration CRD(即配置中指定的tracing配置),添加OTLP日志导出器,将Dapr采集的日志发送到OTel Collector:
apiVersion: dapr.io/v1alpha1 kind: Configuration metadata: name: tracing spec: tracing: samplingRate: "1" zipkin: endpointAddress: "http://otel-collector.default.svc.cluster.local:9411/api/v2/spans" logging: exporters: - name: otlp type: otlp metadata: endpoint: "http://otel-collector.default.svc.cluster.local:4317" # 对应OTel Collector的OTLP gRPC端口
注意替换为你的OTel Collector服务的实际地址和端口。
2. 优化OTel Collector日志Pipeline
当前日志Pipeline未使用batch处理器,建议添加以提升日志发送效率,同时确保OTLP接收器的端口与Dapr配置一致:
service: pipelines: logs: receivers: [otlp] processors: [batch] exporters: [logging, azuremonitor]
3. 验证配置与连通性
- 检查Dapr Sidecar日志,确认是否存在日志发送失败的报错信息
- 在OTel Collector容器内查看日志,确认是否有OTLP日志请求接入
- 验证Dapr Sidecar能否解析OTel Collector的服务地址,可通过Sidecar容器内执行
nslookup otel-collector.default.svc.cluster.local测试
备选方案:直接采集Dapr Sidecar日志
若OTLP方案存在兼容性问题,可直接采集Dapr Sidecar的stdout日志(Dapr会将采集到的APIM日志输出至自身stdout),通过Filebeat或Fluentd等工具转发至OTel Collector或直接发送到Azure Monitor。例如使用Fluentd配置过滤Dapr日志中的APIM相关条目,再转发至OTel Collector的HTTP端点。
内容的提问来源于stack exchange,提问作者Andree

