guide请求日志

为了更深入地了解协作服务器的性能,我们构建了可用于监控的日志。 要启用这些日志,只需添加 ENABLE_METRIC_LOGS=true 环境变量。

有关更多变量详细信息,请参见 配置

这些日志(指标)始终以 level = 30 记录(即使请求返回错误)。 它们针对所有同步请求(HTTP 和 WebSockets)打印。 在这些日志的情况下,您必须依赖于 statusstatusCode 属性来检测任何异常。

状态的含义

  • success – 请求响应的 状态码 <399
  • warning – 请求响应的 状态码 ≥400<499
  • fail – 请求响应的 状态码 ≥500

# 日志结构

日志结构包含以下信息

  • handler – 操作的统一标识符。 使用此字段来标识调用。
  • traceId – 唯一的 RPC 调用 ID。
  • tags – 用分号分隔的标签列表。 使用此字段筛选指标日志。
  • data – 包含附加信息的 对象。 它可能因不同的传输而异。
  • data.duration – 以毫秒为单位的请求持续时间。
  • data.transport – 请求传输的类型。 它可以是 httpws(websocket)。
  • data.status – 请求状态。 它可以等于 successfailwarning
  • data.statusCode – HTTP 状态码标准中的响应状态。

此外,对于 HTTP 传输,还会包含以下信息

  • data.url – URL 路径。
  • data.method – 请求方法。

在发生错误的情况下,data.status 将等于 faileddata.message 将包含错误消息。

HTTP 传输的示例日志

{
  "level": 30,
  "time": "2021-03-09T11:15:09.154Z",
  "msg": "Request summary",
  "handler": "v5:GET:collaborations:id:exists",
  "traceId": "bd77768c-4f49-44da-b658-f765340ea643",
  "data": {
    "duration": 32,
    "transport": "http",
    "statusCode": 200,
    "status": "success",
    "url": "/api/v5/e2e-58a48a5ba8521b6f/collaborations/e2e-eff1945d39894534/exists",
    "method": "GET"
  },
  "tags": "metrics"
}

WS 传输的示例日志

{
  "level": 30,
  "time": "2021-03-09T13:11:52.068Z",
  "msg": "Request summary",
  "handler": "addComment",
  "traceId": "db09ba44-cb96-4db6-84f0-59eb3691b193",
  "data": {
    "duration": 12,
    "transport": "ws",
    "status": "success",
    "statusCode": 200
  },
  "tags": "metrics"
}

# 示例图表

# 显示每种传输类型的请求速率

此信息将为您提供协作服务器处理的请求总数,按传输类型(WebSockets 和 HTTP)划分。

Metrics chart - requests rate.

使用 data.transport 字段区分不同的请求类型。

# 显示每个操作的请求延迟

此图表将显示每个特定操作的请求速度,这对于衡量用户体验以及调试非常有用。

Metrics chart - requests latency.

使用 data.durationhandler 字段来衡量操作的请求延迟。

# 每个操作的错误计数

显示每个操作类型的失败次数(5xx 代码)。

Errors count per operation.

使用 handlerdata.status 字段来计算操作的失败次数。

# 每个操作的警告计数

显示每个操作类型的警告次数(4xx 代码)。 此信息对于调试系统性能问题特别有用。

Warnings count per operation.

使用 data.statusdata.statusCode 字段来计算不正确请求及其类型。