一. 配置servicemonitor,使得prometheus能够采集到指标
vim servicemonitor.yaml
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: demo
namespace: demo
labels:
release: kube-prometheus-stack
spec:
selector:
matchLabels:
app: opentelemetry-demo # ← 改成和 Service 的 label 一致
endpoints:
- port: http # ← 改成和 Service 的端口名一致
interval: 10s
path: /demo/metrics # ← Spring Boot 的 metrics 路径是 /actuator/prometheus,不是 /metrics
~
浏览器请求demo服务的接口
http://192.168.10.129:30081/demo/cpu_task
http://192.168.10.129:30081/demo/io_task
二. Grafana配置 Prometheus和Tempo
Metrics2Trace
打开Prometheus数据源进行配置
添加Exemplars,注意修改traceId为TraceId
Trace2Metrics
配置P95,其中query表达式复制以下内容:
histogram_quantile(0.95,sum(rate(fastapi_requests_duration_seconds_bucket{$__tags}[$__rate_interval])) by (le))
然后在Additional settings配置node graph
三. 验证
通过文件验证Metrics2Trace
浏览器访问接口
http://192.168.10.129:30081/demo/io_task
然后浏览器访问metrics地址得到metrics文件
http://192.168.10.129:30081/demo/metrics
编辑器打开文件可查看到指标的后面会打印traceid,复制这个id
0d2fd57d972701ec900e23151adc6ae5
查看tempo验证Trace2Metrics
查看tempo看到在tempo查询这个traceid,进一步可以点击链接看到对应的metrics,验证成功
OpenTelemetry实践系列-1 部署服务篇环境准备 - 掘金