跳到主要内容

API Logging and Gateway Monitoring

API 日志

当“stdout-log”策略应用并部署到 APIM 控制台中的每个 API 时,API 日志将存储在 ZCP 日志库中。

如何查看 API 日志

  • 登录到 Cloud ZCP 控制台 > 转到 [系统管理员] 屏幕 > 点击 [日志] 菜单
  • 在 Kibana 中,点击右上角的用户图标,点击下拉 > 切换租户 > 从自定义中选择 > apim_tenant
  • [发现] 菜单:搜索 API 日志数据(选择 xxxx.apim* 索引)并使用 + 添加过滤器:
    • kubernetes.container_name: proxy
    • api_id: exists
    • 过滤以区分集群:kubernetes.namespace_labels.cluster: xxxxxx-prd(可选)

  • [发现] 菜单:检查 API 日志详细信息
{
"_index": "xxxx.apim.xxxxx-prd.apim-xxxx.xx.xx",
"_id": "xxxxxxxxxxxxxx",
"_score": 1,
"_source": {
"@timestamp": "dd mm yyyy hh:mm:ss.sssZ",
"log": "{\"space_name\":\"xxxxxxx\",\"request_uri\":\"/path/to/api\",\"request_method\":\"POST\",\"duration\":xx,\"api_id\":\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\"response_status\":200,\"api_name\":\"xxxxxx\",\"response_size\":xxx,\"request_size\":xxx,\"start_at\":xxxxxxxxxxxxxxx,\"duration_kong\":0,\"duration_proxy\":xx,\"space_id\":\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"}",
"logtag": "F",
"stream": "stdout",
"time": "dd mm yyyy hh:mm:ss.sss+hh:mm",
"topic": "kube.var.log.containers.xxxxx-apim.xxxx-xxxx-yyyyy.log",
"space_name": "xxxxxxx",
"request_uri": "/path/to/api",
"request_method": "POST",
"duration": xx,
"api_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"response_status": 200,
"api_name": "xxxxxx",
"response_size": xxx,
"request_size": xxx,
```json
"start_at": xxxxxxxxxxxxxxx,
"duration_kong": 0,
"duration_proxy": xx,
"space_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"kubernetes": {
"container_name": "xxxx",
"namespace_name": "xxxx",
"pod_name": "xxxx-xxxx-xxxx-xxxx",
"container_image": "xxxxxx",
"container_image_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"pod_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"pod_ip": "xxx.xxx.xxx.xxx",
"host": "xxxxxx",
"labels": {
"app": "xxxxxx",
"app_kubernetes_io/component": "xxxx",
"app_kubernetes_io/instance": "xxxxxx",
"app_kubernetes_io/managed-by": "Helm",
"app_kubernetes_io/name": "xxxx",
"app_kubernetes_io/version": "x.x",
"helm_sh/chart": "xxxx-x.x.x",
"pod-template-hash": "xxxxxxxx",
"security_istio_io/tlsMode": "istio",
"service_istio_io/canonical-name": "xxxx",
"service_istio_io/canonical-revision": "x.x",
"version": "x.x"
},
"master_url": "https://xxx.xxx.xxx.xxx:xxx/api",
"namespace_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"namespace_labels": {
"cloudzcp_io/deploygroup": "xxxxxx",
"cloudzcp_io/deploygroup-cluster": "xxxxxx-prd",
"cloudzcp_io/managed-by": "xxxx",
"cloudzcp_io/project": "xxxx",
"cloudzcp_io/realm": "xxxxxx",
"cloudzdb_io/zdb-system": "true",
"cluster": "xxxxxx-prd",
"istio-injection": "enabled",
"kubernetes_io/metadata_name": "xxxx",
"project": "xxxx",
"realm": "xxxxxx"
}
},
"docker": {
"container_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"tag": "projectPlain.project.kube.var.log.containers.xxxxx-apim.xxxx-xxxx-yyyyy.log"
},
"fields": {
"@timestamp": [
"dd mm yyyy hh:mm:ss.sssZ"
],
"time": [
"dd mm yyyy hh:mm:ss.sssZ"
]
- [仪表板] 菜单:检查按环境(DEV、STG、PRD)分类的 APIM 仪表板。

![](/img/apim/advanced-guide/1cbb7135-d33b-8021-a810-e4099c408329.png)


### 仪表板描述 \{#dashboard-description}

- 总 API 调用,总成功调用,总失败调用,以及成功/失败状态:

失败的数量可能包括非关键错误,例如 401、499,这些并不一定是实际应用程序的致命错误。因此,检查状态代码(成功/失败状态)也很重要。


![](/img/apim/advanced-guide/1cbb7135-d33b-80cd-9034-dccc46b720f8.png)


- 前 5 个 API 调用 - 条形图、表格:

您可以查看在性能测试期间主要调用的 API 状态。


![](/img/apim/advanced-guide/1cbb7135-d33b-8065-9c47-e3ddf71afa1c.png)


- 前 5 个 API 响应延迟:
- 显示调用时响应延迟较慢的 API。
- 网关响应延迟:在网关处造成的延迟。
- 后端响应延迟:来自后端应用程序的响应延迟。
- API 响应延迟:总延迟,结合网关和后端响应延迟。
- 由于所有响应延迟值以毫秒(ms)为单位测量,100ms 的延迟仅为 0.1 秒,这并不算特别慢。通常,响应时间在 1000ms(1 秒)或更长时间被视为较慢。

![](/img/apim/advanced-guide/1cbb7135-d33b-80e0-bed1-cb2247e03184.png)


- 检查失败日志:

用户可以检查状态代码不是 200 的 API 调用日志。


![](/img/apim/advanced-guide/1cbb7135-d33b-8005-adf7-db2cee6acb9f.png)


- Kong 网关错误日志:

您可以检查在 Kong 网关中发生的错误日志。使用错误、redis 作为日志过滤器。


![](/img/apim/advanced-guide/1cbb7135-d33b-80f1-98a6-e704f940d617.png)



[可视化] 菜单:可以管理 APIM 自定义图表


![](/img/apim/advanced-guide/1c9b7135-d33b-80de-bd1f-f8e4776f846f.png)


## API 网关监控 \{#api-gateway-monitoring}
  • 登录到 Cloud ZCP 控制台 > 转到 [系统管理员] 屏幕 > 点击 [监控] 菜单 > 点击 [高级监控] 按钮
  • Grafana > 左上角的用户 ID > 选择 admin@localhost

  • 仪表板 > 浏览 > APIM 仪表板

API 网关资源指标

  • 首页 > 仪表板 > APIM 仪表板 > APIM 网关
  • 集群, Kong-名称, Kong-服务, Kong-路由

API 网关资源指标. v2

具有更详细的网关指标的版本。

  • 首页 > 仪表板 > APIM 仪表板 > APIM > 网关 V2
  • 集群, Kong-名称, Kong-服务, Kong-路由, 部署, Pod

APIM 日志/监控数据累积方程示例指南

APIM 日志数据量

APIM API 日志:

  • 频率:随时。
  • 单次数据量:2KB + HTTP 主体大小。
  • 每月数据收集规模:
    • 带主体的日志:当设置为 True 时
      • 假设:平均主体大小 Assuming 10KB,每分钟 3000 次调用(每秒 50 次调用)
      • (2 KB + 10 KB) * 3000 次调用 * 60 分钟 * 24 小时 * 30 天 = 1555 GB
    • 带主体的日志:当设置为 False 时
      • 假设:平均主体大小为 0 KB,每分钟 3000 次调用(每秒 50 次调用)
      • (2 KB + 0 KB) * 3000 次调用 * 60 分钟 * 24 小时 * 30 天 = 259 GB

APIM 监控数据量

Kong GW 指标(延迟、连接等)

  • 周期:15秒(默认)
  • 单次数据量:20KB
  • 每月数据收集规模:20KB * 4(每分钟4次) * 60分钟 * 24小时 * 30天 = 3.5 GB