监控 Jaeger
Jaeger 本身是一个基于微服务的分布式系统。如果您在生产环境中运行它,您可能需要为不同的组件设置适当的监控,例如,以确保后端不会被过多的跟踪数据饱和。
指标
默认情况下,Jaeger 微服务以 Prometheus 格式公开指标。它由以下命令行选项控制
--admin.http.host-port
HTTP 管理服务器运行的端口号--metrics-backend
控制测量结果的公开方式。默认值为prometheus
,另一个选项是expvar
,它是 Go 标准的用于公开进程级别统计信息的机制。--metrics-http-route
指定用于抓取指标的 HTTP 端点名称(默认为/metrics
)。
每个 Jaeger 组件都在管理端口上公开指标抓取端点
组件 | 端口 |
---|---|
jaeger-collector | 14269 |
jaeger-query | 16687 |
jaeger-ingester | 14270 |
all-in-one | 14269 |
Jaeger 的 Prometheus 监控混入
Jaeger 的 Prometheus 监控混入为希望使用 Prometheus、Alertmanager 和 Grafana 监控 Jaeger 的用户提供了起点。这包括一个预构建的仪表盘 。更多信息请参见文档 。
日志
Jaeger 组件仅将日志输出到标准输出,使用结构化日志库 go.uber.org/zap ,配置为将日志行写入为 JSON 编码的字符串,例如
{"level":"info","ts":1615914981.7914007,"caller":"flags/admin.go:111","msg":"Starting admin HTTP server","http-addr":":14269"}
{"level":"info","ts":1615914981.7914548,"caller":"flags/admin.go:97","msg":"Admin server started","http.host-port":"[::]:14269","health-status":"unavailable"}
日志级别可以通过 --log-level
命令行开关进行调整;默认级别是 info
。
跟踪
Jaeger 能够跟踪自身的一些组件,即对 Query 服务的请求。例如,如果您按照入门中的描述启动 all-in-one
,并刷新 UI 屏幕几次,您将在 Services 下拉菜单中看到 jaeger-all-in-one
。如果您不想在 Jaeger UI 中看到这些跟踪,可以通过使用 OTEL_TRACES_SAMPLER=always_off
环境变量运行 Jaeger 后端组件来禁用它们,例如
docker run -e OTEL_TRACES_SAMPLER=always_off -p 16686:16686 jaegertracing/all-in-one:1.69.0