OpenTelemetry实践
目录
简介
这篇文章会把关于 OpenTelemetry 的相关文章串联起来, 从 0 到 1 完成所有的实践.
其中会涉及到如下组件, 搭建顺序是从下往上:
- APP代码放着这里,是 csharp-aspnetcore Web 应用
- alloy 接收应用数据.
- 这里没有使用 OpenTelemetry-Collector, 是因为
alloy
会完全兼容它 - 可以 采集日志文件 等一些有用的拓展功能
- 如果你是 golang , python,
rust
等语言, 可以 无代码侵入采集指标
- 这里没有使用 OpenTelemetry-Collector, 是因为
- loki 处理日志
- mimir 处理指标
- tempo 处理链路追踪
- pyroscope 持续性能分析
- minio 存放着所有的数据
- grafana 做展示
- 官方的OTLP Receiver log 处于 beta 阶段, 但使用起来没问题. 变动可能性较小了
- 可以看到 pyroscope 有点奇葩, 但这不是最终方案. elastic 捐献了自己的 profiling-agent. 等正式上线后, 应该会切换
使用
搭建信息
按照教程搭建完成以后, 应该有如下端口:
服务 | 地址 |
---|---|
minio | api 请求 minio-api.kentxxq.com , ui 操作 minio-ui.kentxxq.com |
loki | 接收 oc 发送的日志数据 http_listen_port/3100 , grpc_listen_port/3101 |
mimir | 接收 oc 发送的指标数据 http_listen_port/9090 , grpc_listen_port/9091 |
pyroscope | 接收应用发送的 profile 数据 http_listen_port/4040 , grpc_listen_port/4041 |
tempo | 接收 oc 发送的追踪数据 http_listen_port/3200 , distributor.receivers.otlp.http/3201 , distributor.receivers.otlp.grpc/3202 |
grafana-alloy | 接收应用数据 grpc/4317 , http/4318 |
grafana-ui | ui 操作 ip:3000 |
配置好 OC_Endpoint
, 启动web程序 即可在 grafana-ui 查询到数据.
这里提供测试只读 grafana 账号 地址 https://grafana.kentxxq.com/ 用户名密码
testuser/bTcgfGvZVw56jL
查询流程
请求拿到 traceid
查询 trace 链路信息
关联的 log 日志数据
关联的 profiling 性能数据
关联的 metrics 指标数据
相关资料
- opentelemetry-collector 的配置文档
- Java 通过 agent 方式注入即可 opentelemetry-java-instrumentation