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 仪表板。

### 仪表板描述 \{#dashboard-description}
- 总 API 调用,总成功调用,总失败调用,以及成功/失败状态:
失败的数量可能包括非关键错误,例如 401、499,这些并不一定是实际应用程序的致命错误。因此,检查状态代码(成功/失败状态)也很重要。

- 前 5 个 API 调用 - 条形图、表格:
您可以查看在性能测试期间主要调用的 API 状态。

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

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

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

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

## 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
- 带主体的日志:当设置为 True 时
APIM 监控数据量
Kong GW 指标(延迟、连接等)
- 周期:15秒(默认)
- 单次数据量:20KB
- 每月数据收集规模:20KB * 4(每分钟4次) * 60分钟 * 24小时 * 30天 = 3.5 GB