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