1分钟构建API网关日志解决方案

简介: 访问日志(Acccess Log)是由web服务生成的日志,每一次api请求都对应一条访问记录,内容包括调用者IP、请求的URL、响应延迟、返回状态码、请求和响应字节数等重要信息。 阿里云API网关提供API托管服务,在微服务聚合、前后端分离、系统集成上为用户便利的产品。

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

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

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

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

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

提到功能你可能会关心日志分析的费用,在这一点上,日志服务本身的价格对比业界方案(例如ELK)优势非常明显,且提供每月500MB额度的Free Tier,大部分用户只需要花很少的钱就可以用起来。

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

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

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

apigateway_accesslog_usage

阿里云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请求成功率、后端服务失败占比

error_success_ratio

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

topappid_errordetail

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

appcount_topgroup

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

pv_latency

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

toplatency_topapi

除了官方提供的报表以外,你还可以自己写分析语句生成报表,例如,统计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

保存查询结果并添加到仪表盘:

clientip_distbute_ip_search

在仪表盘中看到效果如下:

client_ip_distribute

推荐10分钟精通Nginx访问日志分析统计给大家,这篇文章提供了一些有趣的访问日志分析样例可供参考。

2. 实时查询

快速问题诊断是一项非常重要的能力,可以帮助线上服务减少异常带来的损失。区别于业界常见的“T+1”日志投送能力,我们可以在日志服务上准实时获取到最新访问日志,为短时间内定位问题根源提供可能。

在收到告警或看到异常指标后,日志服务的大数据查询能力可以帮助你快速找到到值得关注的日志记录。例如,我们排查非getName api,GET请求且状态码为500、501、503的访问日志记录:

search_500

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的请求比率超过千分之一时,通过钉钉发出告警:

dingding_alarm

4. 数据投递

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

oss_shipper

怎样开通日志功能

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

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

a. 创建Logstore

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

log_config_1

b. 进入向导

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

log_config_2

如果Logstore是之前已存在的:

log_config_1_2

c. 选择日志源

log_config_3

d. 授权

log_config_4

e. 确认索引配置

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

log_config_5

f. 保存

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

log_config_6

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

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

logging_on_api_gateway_console

在上图步骤之后,你的API网关访问日志可以分发到指定Logstore。

如果需要对Logstore做进一步分析,请参考“日志服务控制台上开通步骤”中b~f完成后续配置工作。

目录
相关文章
|
4月前
|
运维 NoSQL Serverless
|
4月前
|
存储 运维 监控
金蝶云•星辰基于 SLS 构建稳定高效可观测系统
金蝶云•星辰通过阿里云日志服务 SLS 替换自建 ELK 系统,构建统一可观测平台,有效应对业务高速增长带来的稳定性挑战,提升运维效率与系统稳定性,助力企业数字化转型。
|
3月前
|
SQL 人工智能 监控
SLS Copilot 实践:基于 SLS 灵活构建 LLM 应用的数据基础设施
本文将分享我们在构建 SLS SQL Copilot 过程中的工程实践,展示如何基于阿里云 SLS 打造一套完整的 LLM 应用数据基础设施。
742 57
|
8月前
|
人工智能 算法 网络安全
基于PAI+专属网关+私网连接:构建全链路Deepseek云上私有化部署与模型调用架构
本文介绍了阿里云通过PAI+专属网关+私网连接方案,帮助企业实现DeepSeek-R1模型的私有化部署。方案解决了算力成本高、资源紧张、部署复杂和数据安全等问题,支持全链路零公网暴露及全球低延迟算力网络,最终实现技术可控、成本优化与安全可靠的AI部署路径,满足企业全球化业务需求。
|
4月前
|
运维 NoSQL Serverless
《第四纪元》玩得轻松,构建也轻松 | 阿里云云原生 API 网关、函数计算助力 IGame 快速构建轻休闲游戏
在轻休闲游戏流量波动大、生命周期短的背景下,传统架构难以应对成本与扩展挑战。本文介绍了基于阿里云函数计算 FC 和 Redis 构建的新一代服务器架构,实现弹性伸缩、成本优化与高效运维,助力轻休闲游戏快速迭代与稳定运营,提升开发效率并降低运维复杂度。
《第四纪元》玩得轻松,构建也轻松 | 阿里云云原生 API 网关、函数计算助力 IGame 快速构建轻休闲游戏
|
3月前
|
运维 监控 安全
EventLog Analyzer:高效的Web服务器日志监控与审计解决方案
ManageEngine EventLog Analyzer是一款企业级Web服务器日志监控与审计工具,支持Apache、IIS、Nginx等主流服务器,实现日志集中管理、实时威胁检测、合规报表生成及可视化分析,助力企业应对安全攻击与合规挑战,提升运维效率。
219 0
|
8月前
|
消息中间件 运维 监控
智能运维,由你定义:SAE自定义日志与监控解决方案
通过引入 Sidecar 容器的技术,SAE 为用户提供了更强大的自定义日志与监控解决方案,帮助用户轻松实现日志采集、监控指标收集等功能。未来,SAE 将会支持 istio 多租场景,帮助用户更高效地部署和管理服务网格。
565 52
|
存储 运维 监控
超越传统模型:从零开始构建高效的日志分析平台——基于Elasticsearch的实战指南
【10月更文挑战第8天】随着互联网应用和微服务架构的普及,系统产生的日志数据量日益增长。有效地收集、存储、检索和分析这些日志对于监控系统健康状态、快速定位问题以及优化性能至关重要。Elasticsearch 作为一种分布式的搜索和分析引擎,以其强大的全文检索能力和实时数据分析能力成为日志处理的理想选择。
843 6
|
存储 运维 监控
API明细日志及运维统计日志全面提升API可运维性
在数字化转型的大潮中,数据已成为企业最宝贵的资产之一。而数据服务API可快速为数据应用提供数据接口。面对越来越多的API以及越来越多的应用调用,如何快速查看API的服务情况、异常情况及影响范围,以及查看API的调用详情,进行API的性能优化、错误排查变得越来越重要,本文将介绍如何配置和开通API运维统计及明细日志,以及如何查看日志进行介绍。
621 0
|
9月前
|
存储 消息中间件 缓存
MiniMax GenAI 可观测性分析 :基于阿里云 SelectDB 构建 PB 级别日志系统
基于阿里云SelectDB,MiniMax构建了覆盖国内及海外业务的日志可观测中台,总体数据规模超过数PB,日均新增日志写入量达数百TB。系统在P95分位查询场景下的响应时间小于3秒,峰值时刻实现了超过10GB/s的读写吞吐。通过存算分离、高压缩比算法和单副本热缓存等技术手段,MiniMax在优化性能的同时显著降低了建设成本,计算资源用量降低40%,热数据存储用量降低50%,为未来业务的高速发展和技术演进奠定了坚实基础。
388 1
MiniMax GenAI 可观测性分析 :基于阿里云 SelectDB 构建 PB 级别日志系统

相关产品

  • 日志服务