自己动手玩访问日志(1):API网关访问日志

访问日志(Acccess Log)是由web服务生成的日志,每一次api请求都对应一条访问记录,内容包括调用者IP、请求的URL、响应延迟、返回状态码、请求和响应字节数等重要信息。

阿里云API网关提供API托管服务,在微服务聚合、前后端分离、系统集成上为用户便利的产品。

访问日志对于API网关的意义尤为重要,它可以帮助使用者打破黑盒,了解其web服务的运行状况。但实际上,云服务厂商为其用户提供访问日志确实不小的挑战:

  • 日志分发到用户空间的实时性:从用户访问服务产生日志到日志对用户可见,业界不少的方案是“T+1”时效的;做到秒级延迟对于用户有非常的意义,使得异常告警、快速问题修复成为可能。
  • 日志的ad-hoc查询能力:对于trouble shooting场景,工程师在个人经验和业务知识的基础上,不断缩小问题范围以致最终定位解决,对于日志的分析和查询需求是不断变化的,即时查询能力价值因此得到体现。
  • 海量日志的快速分析能力:访问日志和请求PV是对应的,拥有百万级用户的服务每天甚至可以达到TB级别的访问日志规模,秒级延迟下满足常见的日志分析场景是一个重要能力。

在今天,API网关新支持了日志功能,基于日志服务为用户提供实时、自助分析访问日志的能力。

访问日志可以搞些什么事情

开通API网关日志功能后,你可以在日志服务上实时获取所有访问日志记录。日志服务对于访问日志的常见使用场景都提供了支持:

  • 报表分析:通过ad-hoc分析语法实时计算结果,并对结果提供丰富的可视化展示
  • 实时查询:业界有竞争力的访问日志查询体验,用户API被调用后可以秒级(1分钟,90%情况下15秒内)延迟获取对应的请求日志,查询语法支持全文关键词、Key-Value、Range查询,可以在1秒内处理千万级别日志
  • 异常告警:借助分析语法对日志内容做个性化统计,对于统计结果支持阈值报警,对接阿里云通知中心、短信、钉钉进行告警
  • 日志投递:一键配置数据投递OSS(低成本归档、数仓计算)、MaxCompute(数仓计算)等云产品,全托管运行
  • 其它:更多个性化需求,可以通过函数计算、消费组、EMR等方式处理访问日志

阿里云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网关访问日志

本节为大家介绍在日志服务控制台上如何对API网关访问日志做分析。

1. 报表分析

基于灵活的分析语法,你可以按照自己的思路写出分析语句,通过ad-hoc查询完成业务需求。日志服务对计算结果提供多种可视化展示方式,dashboard内每个图表的统计指标支持即时修改生效。

日志服务默认提供了一些API网关的分析报表如下:

  • api请求成功率、后端服务失败占比

  • 请求PV最高的app、请求出现错误的api统计

  • 访问来源app数、top请求次数的appGroup

  • api请求PV、服务延迟统计

  • top延时的api统计、top请求次数的api统计

除了官方提供的报表以外,你还可以自己写分析语句生成报表,10分钟精通Nginx访问日志分析统计提供了一些有趣的访问日志分析语法样例可供参考。

2. 实时查询

快速问题诊断是一项非常重要的能力,可以帮助线上服务减少异常带来的损失。区别于业界常见的“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(1)  as non_200_ratio

按照报警设置指南将查询语句保存为告警,查询区间为最近10分钟,当非200 statusCode的请求比率超过千分之一时,通过钉钉发出告警:

4. 数据投递

日志服务支持1~365天的数据存储,假如你的日志规模很大,对于冷数据希望有更经济、更长时间的存储,可以通过配置OSS投递规则将数据投递到OSS存储。

怎样开通日志功能

你可以在日志服务、API网关两个产品的控制台上任选其一开通日志功能。

1. 日志服务控制台上开通步骤

a. 创建Logstore

若Logstore已存在请跳过本步骤。

b. 进入向导

若Logstore是第一步新建出来的:

如果Logsotore是之前已存在的:

c. 选择日志源

d. 授权

e. 确认索引配置

在后的dashboard中将使用到这里列出的索引配置,请谨慎修改。

f. 保存

投递与ETL配置可暂不设置,在将来需要时再创建。

至此wizard初始化工作完成,你可以选择刚才设置的Logstore:api-gateway-access-log进行日志查询、分析,或者进入仪表盘查看报表。

2. API网关控制台上开通步骤

在上图步骤之后,你的API网关访问日志可以分发到指定Logstore。如果需要对Logstore做dashboard或查询、分析,请参考“日志服务控制台上开通步骤”中b~f完成初始化工作。

时间: 2024-10-04 23:02:36

自己动手玩访问日志(1):API网关访问日志的相关文章

API网关对全连路日志的支持

说明         API调用中经常需要对一些错误请求进行问题定位与排查,良好的日志记录会大大提高我们排查问题的效率与准确性.         API网关对全连路日志有着良好的支持,API提供者充分利用此功能后在问题排查中可以起到事半功倍的效果. API网关         API网关会为每个请求生成一个RequestId,一般是UUID,并在日志中记录这个请求是否被正常处理. API提供者         API提供者需要在定义API入参时选择系统参数CaRequestId,并映射射到后端期

企业级API网关的设计

一.网关简介 1.1 API网关背景介绍 本文讲的是企业级API网关的设计,API Gateway(APIGW / API 网关),顾名思义,是出现在系统边界上的一个面向API的.串行集中式的强管控服务,这里的边界是企业IT系统的边界,主要起到隔离外部访问与内部系统的作用.在微服务概念的流行之前,API网关的实体就已经诞生了,例如银行.证券等领域常见的前置机系统,它也是解决访问认证.报文转换.访问统计等问题的. API网关的流行,源于近几年来,移动应用与企业间互联需求的兴起.移动应用.企业互联,

揭秘ZSearch2.0—基于OpenResty的API网关设计

背景 OpenResty 是一个支持lua的nginx,并且内置了一些常用的lua库.利用lua,我们就可以便捷得扩展nginx能力,甚至可以直接作为Web服务对外提供. 主页链接 由下图可以看出,我们可以在各个阶段进行干预. 设计 本文介绍的API网关设计很简单,主要有路由,过滤器,拦截器三个部分组成. 可以实现权限验证,日志记录,参数改写,限流限速等功能. 实现关键 这套方案实现并不复杂,主要是对nginx的干预要可控,对nginx主要的干预点有三个. init_worker_by_lua_

告别繁荣缛节,阿里云资源编排支持API网关

阿里云ROS的API 网关资源11月初正式上线,资源编排(ROS) 支持在模板中定义API 网关资源,助力用户快速.便捷管理发布自己的API.目前,阿里云ROS 产品免费提供给广大用户. 资源编排服务 (Resource Orchestration Service 简称 ROS) 是一款帮助阿里云用户简化云计算资源管理和自动化运维的服务.用户遵循 ROS 定义的模板规范,编写模板文件,在模板中定义所需云计算资源的集合及资源间的依赖关系.资源配置细节等,ROS 通过编排引擎自动完成所有资源的创建和

使用API网关建立多场景测试环境

        在软件/应用系统开发过程中,系统的好坏不仅取决于架构设计.可行性分析及功能实现,还需要一套完善的测试机制来保证质量,这往往需要变换场景进行多轮测试,以保证每个隐蔽的BUG都能够被发现.那就迫使在实际的开发中有多套测试环境,比如:一套稳定的测试环境,供系统内部系统调用:多套项目环境,并行开发:还需要有一个能模拟线上的测试环境,来模拟测试.         API网关作为系统内外的分水岭,当然也不会忽视对测试环境的支持.可以通过API网关的环境管理功能来实现测试环境的管理.目前每个A

API网关遇上容器服务

在API经济和微服务的背景下,如何对服务的API进行管理是大家都很感兴趣的话题.本文通过利用阿里云的容器服务和API网关,构建一个完整的基于Docker的具有API管理功能的服务. API管理 假定我们需要这么一个经典的后端服务,访问如下API接口的时候返回Hello World: $ curl http://apisvc.hostxx/api <p>Hello World</p> 这个服务推出后广受欢迎,但是烦恼总是伴随幸福不期而至: 对API进行计费怎么做? 外界访问API的流

基于API网关构建高可用、高安全性API

        今天我们来聊聊如何借助API网关构建高可用.高安全性的云API,充分利用API网关给我们带来的便利. 认证         从API定义上我们可以定义多种认证类型的API,除特殊API外建议定义APP认证方式或其有安全认证类型的API,这样一旦发生攻击或者大量非法调用时我们可以知道谁在调用,便于我们通过黑名单等措施及时进行限制 HTTPS 建议对数据传输安全性要求较高的API仅开放HTTPS调用方式,另外在证书选择上,强烈建议大家选购Verisign的安全证书,因为Verisig

Leo|20页PPT剖析唯品会API网关设计与实践

刘璟宇Leo 唯品会资深研发工程师,在大型高性能分布式系统设计和开发方面有丰富的经验.目前在唯品会平台与架构部负责唯品会API网关和服务安全方面的设计.开发.运营工作. 内容解析 1. 为什么引入网关 唯品会是一家专门做特卖的网站,唯品会网站是一个巨大型的网站,每张页面背后,都有多个服务提供静态资源和动态数据. 这是唯品会网站上一张商品详情页面,内容是一款女式针织衫.页面里,除去静态页面.图片之外,有些动态内容:商品价格.促销提示语.产品介绍.商品库存等.每个部分都会从后端的一个或几个服务拉取数

Mashape开源API网关——Kong

Mashape开源了他们的API层:Kong. Kong是在客户端和(微)服务间转发API通信的API网关,通过插件扩展功能.Kong有两个主要组件: Kong Server :基于nginx的服务器,用来接收API请求. Apache Cassandra :用来存储操作数据. 你可以通过增加更多Kong Server机器对Kong服务进行水平扩展,通过前置的负载均衡器向这些机器分发请求.根据文档描述,两个Cassandra节点就足以支撑绝大多数情况,但如果网络非常拥挤,可以考虑适当增加更多节点