访问日志(Acccess Log)是由 web 服务生成的日志,每一次 api 请求都对应一条访问记录,内容包括调用者 IP、请求的 URL、响应延迟、返回状态码、请求和响应字节数等重要信息。
阿里云 API 网关 提供 API 托管服务,在微服务聚合、前后端分离、系统集成上为用户提供诸多便利。
访问日志对于 API 网关的意义尤为重要,它可以帮助使用者打破黑盒,了解其 web 服务的运行状况。但实际上,云服务厂商为其用户提供访问日志确实存在不小的挑战:
在今天,API 网关新支持了日志功能,基于 日志服务 为用户提供实时、自助分析访问日志的能力。
提到功能你可能会关心日志分析的费用,在这一点上,日志服务本身的价格对比业界方案(例如 ELK) 优势 非常明显,且提供 每月 500MB 额度的 Free Tier ,大部分用户只需要花很少的钱就可以用起来。
开通 API 网关日志功能后,你可以在日志服务上实时获取所有访问日志记录。日志服务对于访问日志的常见使用场景都提供了支持:
阿里云 API 网关的访问日志格式如下:
字段名 | 字段含义 |
---|---|
requestId | 每次请求的唯一 ID |
apiGroupUid | 分组 ID |
apiGroupName | 分组名称 |
apiStageUid | 环境 ID |
apiStageName | 环境名称 |
apiUid | API 的唯一 ID |
apiName | API 名称 |
clientIp | 调用者 IP |
appId | 调用者的应用 ID |
appName | 调用者应用名称 |
domain | 请求的域名 |
httpMethod | 请求方法 |
path | 请求 path |
statusCode | HTTP 状态码 |
errorMessage | 错误信息 |
exception | 异常信息 |
providerAliUid | API 提供者阿里云 ID |
region | regionId |
requestHandleTime | 请求处理时间 |
requestSize | 请求大小 |
responseSize | 响应大小 |
serviceLatancy | 服务端延时(单位毫秒) |
本节为大家介绍在 日志服务控制台 上如何对 API 网关访问日志做分析。
基于灵活的分析语法,你可以按照自己的思路写出分析语句,通过 ad-hoc 查询完成业务需求。日志服务对计算结果提供多种可视化展示方式,dashboard 内每个图表的统计指标支持即时修改生效。
日志服务默认提供了一些 API 网关的分析报表如下:
除了官方提供的报表以外,你还可以自己写分析语句生成报表, 10 分钟精通 Nginx 访问日志分析统计 提供了一些有趣的访问日志分析语法样例可供参考。
快速问题诊断是一项非常重要的能力,可以帮助线上服务减少异常带来的损失。区别于业界常见的 "T+1" 日志投送能力,我们可以在日志服务上准实时获取到最新访问日志,为短时间内定位问题根源提供可能。
在收到告警或看到异常指标后,日志服务的大数据查询能力可以帮助你快速找到到值得关注的日志记录。例如,我们排查非 getName api,GET 请求且状态码为 500、501、503 的访问日志记录:
我们在日志服务上保存一个查询语句,计算 api 请求中非 200 pv 在总体请求 pv 的占比:
- * | select sum(case when statusCode > 200 then 1 else 0 end) *1.0 / count(1) as non_200_ratio
按照 报警设置指南 将查询语句保存为告警,查询区间为最近 10 分钟,当非 200 statusCode 的请求比率超过千分之一时,通过钉钉发出告警:
日志服务支持 1~365 天的数据存储,假如你的日志规模很大,对于冷数据希望有更经济、更长时间的存储,可以通过 配置 OSS 投递规则 将数据投递到 OSS 存储。
你可以在日志服务、API 网关两个产品的控制台上任选其一开通日志功能。
若 Logstore 已存在请跳过本步骤。
若 Logstore 是第一步新建出来的:
如果 Logstore 是之前已存在的:
在后的 dashboard 中将使用到这里列出的索引配置,请谨慎修改。
投递与 ETL 配置可暂不设置,在将来需要时再创建。
至此,wizard 初始化工作完成,你可以选择刚才设置的 Logstore:api-gateway-access-log 进行日志查询、分析,或者进入仪表盘查看报表。
在上图步骤之后,你的 API 网关访问日志可以分发到指定 Logstore。
如果需要对 Logstore 做进一步分析,请参考 "日志服务控制台上开通步骤" 中 b~f 完成后续配置工作。
来源: https://yq.aliyun.com/articles/326155