如何让OpenTelemetry指标在OpenSearch Dashboard Metrics模块显示
解决OpenSearch Metrics模块无法显示自定义索引指标的问题
核心问题分析
你遇到的情况是:指标能写入自定义索引、Discover能看到,但Metrics模块识别不了,主要原因有三个:OTel采集管道漏加了K8s相关接收器、Dataprepper输出的指标结构不匹配Metrics模块要求、OpenSearch没配置对应的数据视图。
1. 补全OpenTelemetry Collector的指标采集配置
你的OTel配置里,metrics pipeline只配置了hostmetrics接收器,但你定义的kubeletstats和k8s_cluster接收器根本没加入到采集管道里——这意味着你配置的K8s节点、容器、Pod指标根本没被采集发送!
修改OTel的service.pipelines.metrics部分:
service: # 其他配置保留不动 pipelines: # logs管道保留原配置 metrics: receivers: [hostmetrics, kubeletstats, k8s_cluster] # 把kubeletstats和k8s_cluster加进来 processors: [memory_limiter, batch] # 加上内存限制和批处理,避免丢数据或性能问题 exporters: [otlp/data-prepper]
2. 调整Dataprepper输出格式适配Metrics模块
当前你用index_type: custom写入自定义索引,虽然能存数据,但输出的结构不符合OpenSearch Metrics模块的解析规则。推荐直接改用otel_metrics类型,Dataprepper会自动处理指标的映射和结构:
修改Dataprepper的sink配置:
sink: - opensearch: hosts: ["https://opensearch-cluster-master.default.svc.cluster.local:9200"] username: "admin" password: "TadhakDev01" insecure: true index_type: otel_metrics # 从custom改成otel_metrics index: ss4o_metrics-otel-%{yyyy.MM.dd} # 自定义索引名保留不变 bulk_size: 4
如果一定要保留custom类型,就得把otel_metrics处理器的flatten_attributes设为true,让指标属性扁平化,方便Metrics模块识别:
processor: - otel_metrics: calculate_histogram_buckets: true calculate_exponential_histogram_buckets: true exponential_histogram_max_allowed_scale: 10 flatten_attributes: true # 从false改成true
3. 在OpenSearch Dashboard配置索引模式和数据视图
Metrics模块需要对应的数据视图才能识别索引,手动配置一下:
- 登录Dashboard,进入Stack Management > Index Patterns
- 新建索引模式,匹配规则填
ss4o_metrics-otel-* - 选择
@timestamp作为时间字段,完成创建 - 再进入Stack Management > Data Views,创建对应上述索引模式的数据视图,注意Data View Type要选
Metrics - 最后进入Metrics模块,选择刚创建的数据视图,就能看到指标了
验证操作
重新部署修改后的组件:
helm upgrade my-data-prepper-release dataprepper/dataprepper -f dataprepper-values.yaml helm upgrade my-otel-release open-telemetry/opentelemetry-collector -f otel-values.yaml
等个几分钟,再去Metrics模块确认指标是否正常显示。
内容的提问来源于stack exchange,提问作者Om Makwana
相关产品推荐
相关产品推荐

