概述
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 编码字符串并打印到标准输出中,例如:
{"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 。
Traces
Jaeger 能够 trace 它自己的一些组件,即对 Query Service的请求。
例如,如果您按照入门文档中启动 all-in-one 服务,并刷新 WEB 页面屏幕几次,您将看到 jaeger-query 出现在服务下拉列表中。
如果您不想在 Jaeger UI 中看到这些信息,您可以通过使用 JAEGER_DISABLED=true 环境变量运行 Jaeger 后端组件来禁用它们,例如:
docker run -e JAEGER_DISABLED=true -p 16686:16686 jaegertracing/all-in-one:1.25