跳到主要内容
版本:3.10.x

控制面错误日志

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 处理该请求的耗时
客户端 IPCP 识别到的请求来源 IP
User-Agent请求中的客户端标识
用户 ID已识别的登录用户;没有对应值时为 -
请求体长度、响应体长度请求声明的内容长度和框架记录的响应体大小;未知长度等情况下可能为 -1
错误信息请求处理中附加到框架的错误信息,可能为空;不是 HTTP 响应体

访问日志记录请求摘要,不默认保存完整请求体或响应体。

默认日志级别​

Dashboard 和 DP Manager 的官方 Docker Compose、Helm 和 RPM 部署配置,默认将错误日志级别设置为 warn。

日志默认级别或记录规则
Dashboard 错误日志warn,输出警告、错误及更严重的日志
DP Manager 错误日志warn,输出警告、错误及更严重的日志

访问日志不受 log.level 过滤。因此,错误日志级别为 warn 时仍会记录正常请求;将其改为 error 也不会停止这些访问日志。

日志存储位置​

默认输出位置​

部署方式组件错误日志访问日志
Docker / KubernetesDashboard对应容器的标准错误 stderr对应容器的标准输出 stdout
Docker / KubernetesDP Manager对应容器的标准错误 stderr对应容器的标准输出 stdout
RPMDashboard/var/log/api7/dashboard.log/var/log/api7/dashboard-access.log
RPMDP Manager/var/log/api7/dp-manager.log/var/log/api7/dp-manager-access.log

容器部署中的 stdout 和 stderr 是进程输出流。容器运行时负责收集和保存这些输出,实际落盘位置与保留时间由运行时和日志系统配置决定;默认配置不会为这两类输出在容器内创建固定的普通日志文件。

调整日志配置​

Dashboard 和 DP Manager 使用独立的配置文件。在对应文件的 log 配置块中,统一设置错误日志的级别、错误日志的输出位置和访问日志的输出位置。

Dashboard:

dashboard_conf/conf.yaml
log:
level: warn
output: stderr
access_log: stdout

DP Manager:

dp_manager_conf/conf.yaml
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:

values.yaml
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 企业版。