Observability
Traefik 的可观测性功能包括日志、访问日志、指标和链路追踪。可以全局配置这些选项,也可以在更具体的级别配置,例如按路由器或入口点配置。
默认情况下,路由器的可观测性配置继承自附加的入口点,可通过可观测性选项配置。 但是,路由器定义自己的可观测性配置后,就不再使用这些默认值。
提示
要启用路由器级别的可观测性,必须先启用 访问日志、 链路追踪 和指标。
如果没有通过 addEntryPointsLabels、addRoutersLabels 和/或 addServicesLabels 选项启用对应的指标层级,
为路由器启用指标也不会启用这些层级。
AddInternals 选项
默认情况下,对于所有类型的信号(访问日志、指标和链路追踪),
Traefik 都禁用内部资源的可观测性。
下述可观测性选项不能覆盖 AddInternals 选项,
会被忽略。
例如,如果路由器暴露 api@internal 服务,且 metrics.AddInternals 为 false,
即使路由器的可观测性配置启用了指标,它也不会产生指标。
配置示例¶
http:
routers:
my-router:
rule: "Path(`/foo`)"
service: service-foo
observability:
metrics: false
accessLogs: false
tracing: false
traceVerbosity: detailed[http.routers.my-router]
rule = "Path(`/foo`)"
service = "service-foo"
[http.routers.my-router.observability]
metrics = false
accessLogs = false
tracing = false
traceVerbosity = "detailed"labels:
- "traefik.http.routers.my-router.rule=Path(`/foo`)"
- "traefik.http.routers.my-router.service=service-foo"
- "traefik.http.routers.my-router.observability.metrics=false"
- "traefik.http.routers.my-router.observability.accessLogs=false"
- "traefik.http.routers.my-router.observability.tracing=false"
- "traefik.http.routers.my-router.observability.traceVerbosity=detailed"{
// ...
"Tags": [
"traefik.http.routers.my-router.rule=Path(`/foo`)",
"traefik.http.routers.my-router.service=service-foo",
"traefik.http.routers.my-router.observability.metrics=false",
"traefik.http.routers.my-router.observability.accessLogs=false",
"traefik.http.routers.my-router.observability.tracing=false",
"traefik.http.routers.my-router.observability.traceVerbosity=detailed"
]
}配置选项¶
| 字段 | 说明 | 默认值 | 必填 |
|---|---|---|---|
accessLogs |
accessLogs 选项控制路由器是否产生访问日志。 |
true |
否 |
metrics |
metrics 选项控制路由器是否产生指标。 |
true |
否 |
tracing |
tracing 选项控制路由器是否产生链路追踪。 |
true |
否 |
traceVerbosity |
traceVerbosity 选项控制路由器链路追踪的详细程度。可选值为 minimal(默认)和 detailed。如果未设置,则继承入口点的值。 |
minimal |
否 |
traceVerbosity(链路追踪详细程度)¶
observability.traceVerbosity 定义路由器链路追踪的详细程度。
可用值如下:
minimal:为路由器处理的每个请求生成一个服务器 span 和一个客户端 span。detailed:为路由器处理的每个请求所执行的每个中间件额外创建 span。