OpenTelemetry实践系列-3 Metrics2Trace和Trace2Metrics

33 阅读1分钟

一. 配置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 部署服务篇环境准备 - 掘金

OpenTelemetry实践系列-2 Log2Trace和Trace2Log - 掘金

OpenTelemetry实践系列-3 Metrics2Trace和Trace2Metrics - 掘金