路由日志
在路由器中配置日志
GraphOS 路由器 和 Apollo 路由器内核 提供内置日志记录来捕捉它们的活动记录。
该 路由器 支持 可配置日志级别 以及 标准输出输出日志消息(可以配置输出格式)。
日志级别
路由器接收命令行 参数 以设置其日志级别:
名称 | 描述 |
---|---|
| 日志级别,指示要包含的最严重日志消息类型。递增排序的详细程度,可以是以下之一: 默认值为 |
路由器还接受与命令行参数相同值的 RUST_LOG
和 APOLLO_ROUTER_LOG
环境变量。
RUST_LOG
- 命令行参数
APOLLO_ROUTER_LOG
对于高级用户(他们可能有特定的过滤需求,并希望看到路由器所消耗的 Crates 的日志消息),支持 RUST_LOG
。 大多数用户应使用命令行参数或 APOLLO_ROUTER_LOG
。 这两种选项都将日志输出限制在路由器上。
例如,以下每个环境变量和命令行参数都将日志级别设置为 debug
:
RUST_LOG=apollo_router::debugAPOLLO_ROUTER_LOG=debug--log=debug
另一个例子,以下每一行都设置相同的日志级别
RUST_LOG=hyper=debug,apollo_router::info,h2=traceAPOLLO_ROUTER_LOG=hyper=debug,info,h2=trace--log=hyper=debug,info,h2=trace
在两个例子中,路由器实际使用的筛选器值由 RUST_LOG
定义。
更多有关指定过滤器以进行更精细的路由器日志控制的信息,请参阅环境日志器文档。
日志配置常见选项
路由器支持适用于所有日志输出器的配置选项:
服务名称
为您的路由器's日志设置一个服务名称,以便您可以在仪表盘上轻松查找并搜索。
可以通过环境变量或在router.yaml
中设置服务名称。有多种方法可以设置服务名称,路由器会按照以下顺序检查它们,并使用第一个已设置的服务名称:
OTEL_SERVICE_NAME
环境变量OTEL_RESOURCE_ATTRIBUTES
环境变量telemetry.exporters.logging.common.service_name
在router.yaml
中
telemetry.exporters.logging.common.resource
在router.yaml
中
如果未明确设置服务名称,则默认设置为unknown_service:apollo_router
(如果无法确定可执行文件名称,则为unknown_service
)。
资源属性
资源属性是一组键值对,为输出器提供附加信息。应用性能监视器(APM)可能会解释并显示资源信息。
在router.yaml
中,资源属性在telemetry.exporters.logging.common.resource
中设置。例如:
telemetry:exporters:logging:common:resource:"environment.name": "production""environment.namespace": "{env.MY_K8_NAMESPACE_ENV_VARIABLE}"
关于 OpenTelemetry 资源约定,请参阅资源语义约定.
请求/响应日志
此功能是 实验性的。您的疑问和反馈将受到高度重视—请随时与您的 Apollo 联系人取得联系. 如果您想提供反馈或参与此功能,请随意加入GitHub 上的讨论.
默认情况下,router不会记录以下可能包含敏感数据的值,即使设置了足够的日志级别:
- 请求数据
- 响应数据
- 头部
您可以通过experimental_when_header
选项启用对以下值的选择性日志记录:
telemetry:exporters:logging:# If one of these headers matches we will log supergraph and subgraphs requests/responsesexperimental_when_header:- name: apollo-router-log-requestvalue: my_clientheaders: true # default: falsebody: true # default: false# log request for all requests coming from Iphones- name: user-agentmatch: ^Mozilla/5.0 (iPhone*headers: true
日志记录常见参考
属性 | 默认 | 描述 |
---|---|---|
service_name | unknown_service:router | OpenTelemetry 服务名称。 |
service_namespace | OpenTelemetry 命名空间。 | |
resource | 要将附生成的日志事件 OpenTelemetry 资源附加到。 |
实验性日志记录破坏管道错误
您可以在客户端提前关闭连接时,每次发出一条日志消息,这可以帮助您调试客户端在服务器响应之前关闭连接的问题。
此功能默认情况下是禁用的,但可以通过将experimental_log_broken_pipe
选项设置为true
来启用:
supergraph:experimental_log_on_broken_pipe: true
属性 | 默认 | 描述 |
---|---|---|
experimental_log_on_broken_pipe | false | 如果检测到破坏管道,则发出一条日志消息。 |