控制面错误日志
API7 控制面(CP)的控制台(Dashboard)和 DP Manager 分别产生错误日志和访问日志。这些日志用于排查控制台及管理 API 的运行异常、控制面与数据面的通信问题,以及具体请求的处理结果。
本文介绍两类日志的内容、默认级别、存储位置和调整方法。业务请求在数据面产生的访问日志和错误日志,请参阅配置集中式日志记录。
日志类型
| 日志类型 | 产生组件 | 内容 |
|---|---|---|
| 错误日志 | Dashboard、DP Manager | 记录组件运行过程中的事件、警告和错误,帮助定位配置处理、数据库访问、配置同步等问题 |
| 访 问日志 | Dashboard、DP Manager | 记录到达 CP HTTP 接口的请求摘要,帮助确认请求路径、处理结果、耗时和来源 |
日志记录内容
错误日志
Dashboard 和 DP Manager 的错误日志通常包含以下信息:
| 字段 | 说明 |
|---|---|
| 时间 | 日志产生的时间 |
| 级别 | 事件的日志级别,例如 info、warn 或 error |
| 代码位置 | 产生日志的源文件位置,便于定位处理逻辑 |
| 消息 | 对当前事件或异常的描述 |
| 附加字段 | 与事件相关的错误原因、资源 ID、网关实例信息等,具体字段随事件变化 |
| 请求 ID | 部分具有请求上下文的日志包含 request_id,可用于关联同一次请求的访问日志 |
主应用日志输出到 stdout 或 stderr 时采用文本格式,输出到文件时采用 JSON 格式。
访问日志
访问日志以 [HTTP] 开头,字段按以下顺序排列:
[HTTP] 时间 请求ID 方法 路径及查询参数 状态码 耗时 客户端IP User-Agent 用户ID 请求体长度 响应体长度 错误信息
| 字段 | 说明 |
|---|---|
| 时间 | 请求处理完成时记录的时间 |
| 请求 ID | 用于关联同一次请求;没有对应值时为 - |
| 方法 | HTTP 请求方法,例如 GET、POST、PUT 或 DELETE |
| 路径及查询参数 | 请求访问的路径和查询参数。3.10.9 会屏蔽查询参数中的 key_value 值 |
| 状态码 | CP 返回的 HTTP 响应状态码 |
| 耗时 | CP 处理该请求的耗时 |
| 客户端 IP | CP 识别到的请求来源 IP |
| User-Agent | 请求中的客户端标识 |
| 用户 ID | 已识别的登录用户;没有对应值时为 - |
| 请求体长度、响应体长度 | 请求声明的内容长度和框架记录的响应体大小;未知长度等情况下可能为 -1 |
| 错误信息 | 请求处理中附加到框架的错误信息,可能为空;不是 HTTP 响应体 |
访问日志记录请求摘要,不默认保存完整请求体或响应体。
默认日志级别
Dashboard 和 DP Manager 的官方 Docker Compose、Helm 和 RPM 部 署配置,默认将错误日志级别设置为 warn。
| 日志 | 默认级别或记录规则 |
|---|---|
| Dashboard 错误日志 | warn,输出警告、错误及更严重的日志 |
| DP Manager 错误日志 | warn,输出警告、错误及更严重的日志 |
访问日志不受 log.level 过滤。因此,错误日志级别为 warn 时仍会记录正常请求;将其改为 error 也不会停止这些访问日志。
日志存储位置
默认输出位置
| 部署方式 | 组件 | 错误日志 | 访问日志 |
|---|---|---|---|
| Docker / Kubernetes | Dashboard | 对应容器的标准错误 stderr | 对应容器的标准输出 stdout |
| Docker / Kubernetes | DP Manager | 对应容器的标准错误 stderr | 对应容器的标准输出 stdout |
| RPM | Dashboard | /var/log/api7/dashboard.log | /var/log/api7/dashboard-access.log |
| RPM | DP Manager | /var/log/api7/dp-manager.log | /var/log/api7/dp-manager-access.log |
容器部署中的 stdout 和 stderr 是进程输出流。容器运行时负责收集和保存这些输出,实际落盘位置与保留时间由运行时和日志系统配置决定;默认配置不会为这两类输出在容器内创建固定的普通日志文件。
调整日志配置
Dashboard 和 DP Manager 使用独立的配置文件。在对应文件的 log 配置块中,统一设置错误日志的级别、错误日志的输出位置和访问日志的输出位置。
Dashboard:
log:
level: warn
output: stderr
access_log: stdout
DP Manager:
log:
level: warn
output: stderr
access_log: stdout
配置项说明
log.level:错误日志的最低输出级别,记录所选级别及更严重的日志。可选值为debug、info、warn、error、panic和fatal。log.output:错误日志的输出位置。可设置为stderr、stdout或文件路径。log.access_log:访问日志的输出位置,可设置为stdout、stderr或文件路径。
访问日志没有独立的日志级别,也不受 log.level 过滤。调整此字段不会关闭访问日志,也不会增加其记录字段。
文件路径所在目录需要预先创建,运行用户需要具备写权限。容器部署还需要为该目录挂载持久化存储,并配置日志采集、轮转和保留策略。文件采用追加写入。
修改日志级别或输出位置后,需要重启对应组件。
在 Helm Chart 中调整
在现有 Helm values 中修改相应组件的日志配置,并保留其他设置。以下示例将错误日志级别设置为 info,错误日志输出到 stderr,访问日志输出到 stdout:
dashboard_configuration:
log:
level: info
output: stderr
access_log: stdout
dp_manager_configuration:
log:
level: info
output: stderr
access_log: stdout
使用当前安装的 Chart 版本,以及包含现有完整配置的 values 文件更新部署:
helm upgrade <release-name> api7/api7ee3 \
--namespace <namespace> \
--version <installed-chart-version> \
-f <values-file>
Chart 会根据配置变化触发对应 Pod 的滚动更新。如果直接修改 ConfigMap,则还需要滚动重启对应 Deployment。等待更新完成后,检查新 Pod 的日志。更多部署配置说明请参阅在 Kubernetes 上部署 API7 企业版。