1、访问日志(Acccess Log)是由 web 服务生成的日志,每一次 api 请求都对应一条访问记录,内容包括调用者 IP、请求的 URL、响应延迟、返回状态码、请求和响应字节数等重要信息。阿里云 API 网关提供 API 托管服务,在微服务聚合、前后端分离、系 统集成上为用户提供诸多便利。访问日志对于 API 网关的意 义尤为重要,它可以帮助使用者打破黑盒,了解其web 服 务的运行状况。但实际上,云服务厂商为其用户提供访问日志确实存在不小的挑战: 日志分发到用户空间的实时性:从用户访问服务产生日志到日志对用户可见,业界不少的方案是“T+1” 时效的;做到秒级 延迟对于用户有非常的意义,使
2、得异常告警、快速问题修复成为可能。 日志的 ad-hoc 查询能力:对于 trouble shooting 场景,工程师在个人经验和业务知识的基础上,不断缩小问题范围以致最终定位解决,这个过程中对于日志的分析和查询需求是不断变化的,即时查询的价值由此得到体现。 海量日志的快速分析能力:访问日志和请求 PV 是对应的,拥有百万级用户的服务每天甚至可以达到 TB 级别的访问日志规模,秒级延迟下满足常见的日志分析场景是一个重要能力。在今天,API 网关新支持了日志功能,基于 日志服务为用户提供实时、自助分析访问日志的能力。提到功能你可能会关心日志分析的费用,在这一点上,日志服务本身的价格对比业界方案
3、(例如 ELK) 优势非常明显,且提供 每月 500MB 额度的 Free Tier,大部分用 户只需要花很少的钱就可以用起来。访问日志可以搞些什么事情开通 API 网关日志功能后,你可以在日志服 务上实时获取所有访问日志记录。日志服务对于访问日志的常见使用场景都提供了支持: 报表分析:通过 ad-hoc 分析语法实时计算结果,并对结果提供丰富的可视化展示 实时查询:业界有竞争力的访问日志查询体验,用户 API 被调用后可以秒级(1 分钟,90%情况下 15 秒内)延迟获取对应的请求日志,查询语法支持全文关键词、Key-Value 、Range 查询,可以在 1 秒内处理千万级别日志 异常告警
4、:借助分析语法对日志内容做个性化统计,对于统计结果支持阈值报警,对接阿里云通知中心、短信、钉钉进行告警 日志投递:一键配置数据投递 OSS(低成本 归档、数仓计算)、MaxCompute(数仓计算)等云产品,全托管运行 其它:更多个性化需求,可以通过函数计算、消费组、EMR 等方式处理访问日志阿里云 API 网关的访问日志格式如下:字段名 字段含义requestId 每次请求的唯一 ID字段名 字段含义apiGroupUid 分组 IDapiGroupName 分组名称apiStageUid 环境 IDapiStageName 环境名称apiUid API 的唯一 IDapiName API
5、名称clientIp 调用者 IPappId 调用者的应用 IDappName 调用者应用名称domain 请求的域名httpMethod 请求方法path 请求 pathstatusCode HTTP 状态码errorMessage 错误信息exception 异常信息providerAliUid API 提供者阿里云 ID字段名 字段含义region regionIdrequestHandleTime 请求处理时间requestSize 请求大小responseSize 响应大小serviceLatancy 服务端延时(单位毫秒)玩转 API 网关访问日志本节为大家介绍在 日志服务控制台上
6、如何对 API 网关访问日志做分析。1. 报表分析基于灵活的分析语法,你可以按照自己的思路写出分析语句,通过 ad-hoc 查询完成业务需求。日志服务对计算结果提供多种可视化展示方式,dashboard内每个图表的统计指标支持即时修改生效。日志服务默认提供了一些 API 网关的分析报表如下: api 请求成功率、后端服 务失败占比 请求 PV 最高的 app、请求出现错误的 api 统计 访问来源 app 数、top 请求次数的 appGroup api 请求 PV、服务延迟统计 top 延时的 api 统计、top 请求次数的 api 统计除了官方提供的报表以外,你还可以自己写分析语句生成报
7、表,例如,统计clientIp 的访问 来源的城市分布。在日志 Logstore 查询框中填写分析语句:* | select ip_to_city(clientIp) as client_ip_city, count(*) as request_count group by client_ip_city order by request_count desc limit 20保存查询结果并添加到仪表盘:在仪表盘中看到效果如下:推荐 10 分钟精通 Nginx 访问日志分析统计给大家,这篇文章提供了一些有趣的访问日志分析样例可供参考。2. 实时查询快速问题诊断是一项非常重要的能力,可以帮助线上服
8、务减少异常带来的损失。区别于业界常见的“T+1” 日志投送能力,我们可以在日志服 务上准实时获取到最新访问日志,为短时间内定位问题根源提供可能。在收到告警或看到异常指标后,日志服务的大数据查询能力可以帮助你快速找到到值得关注的日志记录。例如,我们排查非 getName api,GET 请求且状态码为 500、501 、503 的访问日志记录:3. 监控报警我们在日志服务上保存一个查询语句,计算 api 请 求中非 200 pv 在总体请求pv 的占比:* | select sum(case when statusCode 200 then 1 else 0 end) *1.0 / count(
9、1) as non_200_ratio按照 报警设置指南将查询语句保存为告警,查询区间为最近 10 分钟,当非200 statusCode 的请求比率超过千分之一时,通过钉钉发出告警:4. 数据投递日志服务支持 1365 天的数据存储,假如你的日志规模很大,对于冷数据希望有更经济、更长时间的存储,可以通过 配置 OSS 投递规则将数据投递到OSS 存储。怎样开通日志功能你可以在日志服务、API 网关两个产品的控制台上任选其一开通日志功能。1. 日志服务控制台上开通步 骤a. 创建 Logstore若 Logstore 已存在请跳过本步骤。b. 进入向导若 Logstore 是第一步新建出来的:如果 Logstore 是之前已存在的:c. 选择 日志源d. 授权