ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Jaeger 分布式追踪平台:一个容器跑通全链路追踪与 RED 指标监控

Jaeger 分布式追踪平台:一个容器跑通全链路追踪与 RED 指标监控 Jaeger 分布式追踪平台一个容器跑通全链路追踪与 RED 指标监控【免费下载链接】jaegerCNCF Jaeger, a Distributed Tracing Platform项目地址: https://gitcode.com/GitHub_Trending/ja/jaegerJaeger 是 CNCF 毕业项目一个分布式追踪平台它接收 OpenTelemetry SDK 上报的 span还原请求在多个服务间的完整路径。你跑通后会得到一个自带搜索、依赖图和 RED 指标监控页面的 Web 控制台用来定位跨服务调用的耗时与错误。快速上手一条命令启动 Jaeger All-in-oneJaeger 的 all-in-one 镜像内置 UI、collector、query 服务和内存存储适合先跑起来验证链路docker run --rm --name jaeger \ -p 16686:16686 \ -p 4317:4317 \ -p 4318:4318 \ jaegertracing/jaeger:latest16686 是 Web 控制台4317/4318 分别接收 OTLP 的 gRPC 和 HTTP 数据。没有现成的应用打点也没关系用官方的 tracegen 直接生成一批测试数据docker run --rm jaegertracing/jaeger-tracegen \ -trace-exporter otlp-http -traces 50浏览器打开 http://localhost:16686 就能进入下面两个页面。效果解读追踪列表与 Monitor 指标页你看到了什么Search 页按服务名上例为 tracegen列出 20 条 trace每条标注总耗时28μs、14μs…、span 数量和时间左侧可按 operation、tag如http.status_code500、耗时区间和回溯时间窗默认 Last Hour过滤。点开单条 trace每个 span 的耗时和父子调用关系一目了然。它意味着什么一个请求慢在哪里不再靠猜日志。耗时最长的 span 就是需要优先排查的服务或方法标签过滤则让你直接筛出失败请求。你看到了什么Monitor 标签页顶部三张图分别是 Latency含 P50/P95/P99 分位线、Error rate 和 Request rate下方是按 operation 分组的明细表P95 1.91ms、30.6 req/s。它意味着什么这些 RED 指标Rate、Errors、Duration直接从 span 数据推导出来不需要在应用里埋点也不需要额外部署 Prometheus就能回答这个服务最近是不是变慢、有没有报错。整个数据流可以参考项目内置的监控架构图模拟 span 先进 OpenTelemetry Collector再分发到 Jaeger 存储与 Prometheus 指标库完整的组件说明见 docker-compose/monitor/README.md。核心能力速览新手最相关的三件事跨服务链路排查场景是一次下单接口变慢怀疑在某个下游。用服务名或 trace id 检索后展开调用树最慢的 span 直接指到具体服务与 operationCompare 视图还能并排对比两条 trace 的差异。RED 指标监控SPM场景是想知道每个接口的 P95 延迟和错误率。Jaeger v2 把 span 聚合成按 service/operation 分组的指标Monitor 页和/api/metrics/*HTTP API 都能直接消费可选 Prometheus 做指标后端也可以让 Elasticsearch/OpenSearch 存储直接计算省掉一个组件。采样策略控制存储成本场景是生产 QPS 高全量记录存不下。策略用 JSON 文件下发可以按服务、按操作分别设采样率例如把/health这类高频探活设为 0业务接口保留 0.1示例文件 cmd/jaeger/sampling_strategies_example.json流量特别大的场景还能在 collector 侧启用基于规则的尾部采样见 cmd/jaeger/config-tail-sampling-service-name-policy.yaml。按场景选配置存储后端怎么选使用场景推荐配置为什么本地开发、演示验证All-in-one 镜像 内存存储单容器即启即用零依赖代价是重启后数据清空配置模板见 cmd/jaeger/config.yaml单机生产几个到几十个服务Badger 或 Elasticsearch 存储需要数据持久化和重启不丢Badger 嵌入式免运维ES 检索能力更强模板见 cmd/jaeger/config-badger.yaml、cmd/jaeger/config-elasticsearch.yaml大规模多副本生产ClickHouse 或 ElasticsearchCollector 独立部署多副本列式存储写入吞吐高能扛大流量查询与写入解耦后采集端可横向扩容模板见 cmd/jaeger/config-clickhouse.yaml高流量需要告警联动加 Prometheus 作为 SPM 指标后端把 span 聚合成 RED 时序指标可直接接 Grafana 看板和告警规则新手容易踩的坑现象tracegen 跑完没有任何报错UI 里却查不到任何 trace。原因OTLP exporter 默认发往localhost如果 tracegen 跑在容器里localhost 是它自己包根本没送到 Jaeger。处理显式设置OTEL_EXPORTER_OTLP_TRACES_ENDPOINThttp://jaeger:4318/v1/traces并用--network让 tracegen 容器和 Jaeger 容器加入同一 Docker 网络。现象应用明明在打点Search 页始终为空。原因两种可能——采样策略把该服务或/health、/metrics等操作的采样率设成了 0或 SDK 的端点/采样配置写错。处理先用-traces 5这类固定条数请求验证通路再回到采样文件检查param值确认 SDK 配置指向 4317/4318 端口且采样率大于 0。另外注意 all-in-one 默认用内存存储容器一重启历史数据就没了生产环境至少换 Badger 或 Elasticsearch。写在最后Jaeger 把分布式追踪、Web 检索和 RED 指标做进了一个容器你运行上面两条 docker 命令、生成 50 条 trace 后打开 16686 端口就能看到完整效果。核心关键词Jaeger 分布式追踪、OpenTelemetry、RED 指标监控、span 采样策略长尾关键词Jaeger 安装部署教程、Jaeger All-in-one Docker 启动、OTLP 4317 4318 端口配置、Jaeger tracegen 测试数据生成、Jaeger 采样策略配置、Jaeger Monitor 页 RED 指标、Jaeger 存储后端对比 ClickHouse Elasticsearch、跨服务调用耗时排查【免费下载链接】jaegerCNCF Jaeger, a Distributed Tracing Platform项目地址: https://gitcode.com/GitHub_Trending/ja/jaeger创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表