概述

Jaeger 本身就是一个分布式、微服务化的系统。
如果你在生产环境中使用它,那么就需要为它的各个组件都添加足够的监控,保存Jaeger系统不会由于过多的trace数据而压垮。

监控指标

默认情况下,Jaeger 的各个服务是以 Prometheus 的格式来提供其指标的。
它是由如下一些命令行参数来控制的:

  • —admin.http.host-port 表示运行 HTTP admin服务器的端口号
  • —metrics-backend 表示输出哪种格式的监控指标数据,默认为Prometheus,可选项还包括expvar,它是Go用来暴露进程级别统计数据的标准格式。
  • —metrics-http-route 指定用于抓取指标的 HTTP URL(默认为 /metrics)。

每个 Jaeger 组件在admin端口上提供了查询监控指标的url:

组件 端口
jaeger-agent 14271
jaeger-collector 14269
jaeger-query 16687
jaeger-ingester 14270
all-in-one 14269

Jaeger 的 Prometheus 监控模板

Jaeger 的 Prometheus 监控 mixin 为想要使用 Prometheus、Alertmanager 和 Grafana 监控 Jaeger 的人们提供了一个起点。
它包括了一个预置的仪表盘,更多的信息可以参考相关文档

日志

Jaeger 组件使用结构化日志库 go.uber.org/zap 配置为将日志为 JSON 编码字符串并打印到标准输出中,例如:

  1. {"level":"info","ts":1615914981.7914007,"caller":"flags/admin.go:111","msg":"Starting admin HTTP server","http-addr":":14269"}
  2. {"level":"info","ts":1615914981.7914548,"caller":"flags/admin.go:97","msg":"Admin server started","http.host-port":"[::]:14269","health-status":"unavailable"}

可以通过 —log-level 命令行开关调整日志级别; 默认级别是 info 。

Traces

Jaeger 能够 trace 它自己的一些组件,即对 Query Service的请求。
例如,如果您按照入门文档中启动 all-in-one 服务,并刷新 WEB 页面屏幕几次,您将看到 jaeger-query 出现在服务下拉列表中。
如果您不想在 Jaeger UI 中看到这些信息,您可以通过使用 JAEGER_DISABLED=true 环境变量运行 Jaeger 后端组件来禁用它们,例如:

  1. docker run -e JAEGER_DISABLED=true -p 16686:16686 jaegertracing/all-in-one:1.25