OpenTelemetry Collector未记录/导出HTTP请求问题求助
OTLP Collector接收请求返回200但无日志输出问题排查
问题场景
使用otel/opentelemetry-collector-contrib:0.68.0镜像,配置OTLP HTTP接收器与logging输出器,调用/v1/metrics接口返回200状态码,但Collector控制台未显示任何日志。
配置文件(collector-config.yaml)
receivers: otlp: protocols: http: http://localhost:4318 exporters: logging: loglevel: debug service: pipelines: traces: exporters: [logging] receivers: [otlp] metrics: exporters: [logging] receivers: [otlp] logs: exporters: [logging] receivers: [otlp] telemetry: metrics: level: detailed
HTTP请求详情
- 请求方法:POST
- 请求地址:
http://localhost:4318/v1/metrics - 请求体:
{"resourceMetrics_": [{"resource_": {"attributes_": [{"key_": "loki.attribute.labels", "value_": {"valueCase_": 1, "value_": "http.status", "memoizedIsInitialized": -1, "unknownFields": {"fields": {}}, "memoizedSize": -1, "memoizedHashCode": 0}, "memoizedIsInitialized": -1, "unknownFields": {"fields": {}}, "memoizedSize": -1, "memoizedHashCode": 0}, {"key_": "loki.resource.labels", "value_": {"valueCase_": 1, "value_": "host.name, pod.name", "memoizedIsInitialized": -1, "unknownFields": {"fields": {}}, "memoizedSize": -1, "memoizedHashCode": 0}, "memoizedIsInitialized": -1, "unknownFields": {"fields": {}}, "memoizedSize": -1, "memoizedHashCode": 0}], "droppedAttributesCount_": 0, "memoizedIsInitialized": -1, "unknownFields": {"fields": {}}, "memoizedSize": -1, "memoizedHashCode": 0}, "scopeMetrics_": [{"scope_": {"name_": "otelcol/hostmetricsreceiver/load", "version_": "0.68.0", "attributes_": [], "droppedAttributesCount_": 0, "memoizedIsInitialized": -1, "unknownFields": {"fields": {}}, "memoizedSize": -1, "memoizedHashCode": 0}, "metrics_": [{"dataCase_": 5, "data_": {"dataPoints_": [{"valueCase_": 4, "value_": 0.94, "attributes_": [{"key_": "loki.attribute.labels", "value_": {"valueCase_": 1, "value_": "http.status_code", "memoizedIsInitialized": -1, "unknownFields": {"fields": {}}, "memoizedSize": -1, "memoizedHashCode": 0}, "memoizedIsInitialized": -1, "unknownFields": {"fields": {}}, "memoizedSize": -1, "memoizedHashCode": 0}], "startTimeUnixNano_": 1673933623000000000, "timeUnixNano_": 1673962743472355755, "exemplars_": [], "flags_": 0, "memoizedIsInitialized": -1, "unknownFields": {"fields": {}}, "memoizedSize": -1, "memoizedHashCode": 0}], "memoizedIsInitialized": -1, "unknownFields": {"fields": {}}, "memoizedSize": -1, "memoizedHashCode": 0}, "name_": "system.cpu.load_average.15m", "description_": "Average CPU Load over 15 minutes.", "unit_": "1", "memoizedIsInitialized": -1, "unknownFields": {"fields": {}}, "memoizedSize": -1, "memoizedHashCode": 0}, {"dataCase_": 5, "data_": {"dataPoints_": [{"valueCase_": 4, "value_": 0.99, "attributes_": [{"key_": "loki.attribute.labels", "value_": {"valueCase_": 1, "value_": "http.status_code", "memoizedIsInitialized": -1, "unknownFields": {"fields": {}}, "memoizedSize": -1, "memoizedHashCode": 0}, "memoizedIsInitialized": -1, "unknownFields": {"fields": {}}, "memoizedSize": -1, "memoizedHashCode": 0}], "startTimeUnixNano_": 1673933623000000000, "timeUnixNano_": 1673962743472355755, "exemplars_": [], "flags_": 0, "memoizedIsInitialized": -1, "unknownFields": {"fields": {}}, "memoizedSize": -1, "memoizedHashCode": 0}], "memoizedIsInitialized": -1, "unknownFields": {"fields": {}}, "memoizedSize": -1, "memoizedHashCode": 0}, "name_": "system.cpu.load_average.1m", "description_": "Average CPU Load over 1 minute.", "unit_": "1", "memoizedIsInitialized": -1, "unknownFields": {"fields": {}}, "memoizedSize": -1, "memoizedHashCode": 0}, {"dataCase_": 5, "data_": {"dataPoints_": [{"valueCase_": 4, "value_": 0.81, "attributes_": [{"key_": "loki.attribute.labels", "value_": {"valueCase_": 1, "value_": "http.status_code", "memoizedIsInitialized": -1, "unknownFields": {"fields": {}}, "memoizedSize": -1, "memoizedHashCode": 0}, "memoizedIsInitialized": -1, "unknownFields": {"fields": {}}, "memoizedSize": -1, "memoizedHashCode": 0}], "startTimeUnixNano_": 1673933623000000000, "timeUnixNano_": 1673962743472355755, "exemplars_": [], "flags_": 0, "memoizedIsInitialized": -1, "unknownFields": {"fields": {}}, "memoizedSize": -1, "memoizedHashCode": 0}], "memoizedIsInitialized": -1, "unknownFields": {"fields": {}}, "memoizedSize": -1, "memoizedHashCode": 0}, "name_": "system.cpu.load_average.5m", "description_": "Average CPU Load over 5 minutes.", "unit_": "1", "memoizedIsInitialized": -1, "unknownFields": {"fields": {}}, "memoizedSize": -1, "memoizedHashCode": 0}], "schemaUrl_": "", "memoizedIsInitialized": -1, "unknownFields": {"fields": {}}, "memoizedSize": -1, "memoizedHashCode": 0}], "schemaUrl_": "https://opentelemetry.io/schemas/1.9.0", "memoizedIsInitialized": -1, "unknownFields": {"fields": {}}, "memoizedSize": -1, "memoizedHashCode": 0}], "memoizedIsInitialized": 1, "unknownFields": {"fields": {}}, "memoizedSize": -1, "memoizedHashCode": 0}
相关截图
- 请求成功截图:

- Collector控制台日志:

问题原因及解决方案
1. OTLP HTTP接收器配置错误
原配置中http: http://localhost:4318的写法不符合规范,OTLP HTTP接收器应指定监听端点,且容器内需监听所有网卡以接收外部请求。修正后的配置:
receivers: otlp: protocols: http: endpoint: 0.0.0.0:4318
2. 请求体格式不符合标准OTLP JSON规范
请求体中所有字段名带_后缀(如resourceMetrics_、resource_),这是Protobuf生成的内部JSON格式,而非OTLP HTTP接收器要求的标准JSON格式。需将字段名末尾的_移除,例如:
resourceMetrics_→resourceMetricsresource_→resourceattributes_→attributes
或者直接使用官方OTLP客户端发送请求,避免手动构造错误格式的JSON数据。
3. 验证步骤
修正配置并重启Collector,使用正确格式的请求体重新发送请求,查看控制台是否输出metrics日志。
内容的提问来源于stack exchange,提问作者Pramendra Raghuwanshi
相关产品推荐
相关产品推荐

