做代收水果是什么网站/湖南企业seo优化首选
本文介绍了 API 网关日志的价值,并以知名网关 Apache APISIX 为例,展示如何集成 API 网关日志。
作者钱勇,API7.ai 技术工程师,Apache APISIX Committer。
原文链接
网关日志的价值
在数字化时代,软件架构随着业务成长而变得越来越复杂,这给故障的发现和排查都带来了非常大的挑战,进一步倒逼软件重视自身的可观测性能力。 而日志被称为可观测性的三大支柱之一,它可以帮助系统管理员和开发人员了解系统的运行状态,以便能够及时发现并解决问题。 此外,日志还可以用于数据挖掘、审计和安全监控等方向,以确保系统的合规性和安全性。
而 API 网关是在应用程序与外部世界之间构建的一道关口,它可以帮助组织更好地管理和监控 API 调用,其中之一重要的功能就是对于 API 调用日志的记录。
下面将会从两个角度来分析 API 网关日志的价值。
运维价值
无论是传统系统运维,还是现代网站可靠性工程师(SRE),对于保障系统稳定性这个大目标而言,如何发现故障永远是排在最高优先级的任务,因为对于任何一个大型的在线业务,每一秒的故障时间都可能会带来巨大的业务损失和用户体验伤害。
而 API 网关处于整个系统的最前端,它可以扮演一个“哨兵”的角色,让我们从它的访问日志中提取非常多对于运维体系至关重要的指标数据:
- 通过上、下游状态码分析,监控网站整体可用性和具体上游服务的可用性;
- 通过访问日志整体统计,监控网站流量,及时发现 DDoS 一类的攻击;
- 流量的趋势分析可以作为业务系统扩缩容的参考依据;
- 请求耗时统计,为业务系统提供接口级别的性能报告,作为业务系统性能优化的数据参考。
以上都是一些在业界被广泛采用的 API 网关日志的最佳实践,在很多企业的运维体系中落地。
业务价值
与运维价值被广泛认可相比,网关日志的业务价值往往是被人们所忽视的。 例如在用户行为分析领域,在程序中使用编码的方式进行埋点上报是最常见的数据收集方式,而对于一套设计良好的 API 来说,网关日志是可以天然支持此类需求的。我们可以:
- 通过分析客户端 IP,统计流量的地理位置分布;
- 通过分析 HTTP Referer,了解用户进入各个页面的来源;
- 对于重点 API 的聚合统计,可以直接得到关键业务指标。例:统计用户注册、商品下单等 API 的成功调用,可以直接得到指定时间段内的新用户、新订单的数量指标。
当然网关日志显然不如程序埋点灵活,无法实现自定义数据收集需求,但其中蕴藏的业务价值足以满足简单的数据挖掘需求。
Apache APISIX 是一个动态、实时、高性能的云原生 API 网关,提供了负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。 它的很多能力是通过可插拔的插件形式提供,这其中就包括十数个日志插件。下面将会以 APISIX 中典型的日志插件为例,介绍如何将网关日志与日志分析系统打通,挖掘出更多的价值。
APISIX 典型日志插件介绍
elasticsearch-logger
ElasticSearch 是一个分布式开源搜索和分析引擎,旨在处理大量数据,在日志分析领域享有极高知名度。 它提供的配套数据面板 Kibana,可以非常轻松的定制出各种统计图表,满足组织对于可视化查询分析的需求。
实际应用时,由于大多数传统软件的日志都是保存到本地文件,所以 ElasticSearch 生态中有一个项目叫 Filebeat,用于监控本地机器上的日志文件,并将增量的日志发送给 ElasticSearch 服务器。而 APISIX 提供的 elasticsearch-logger
插件,可以将 APISIX 的访问日志直接发送 ElasticSearch 服务器,这有几点好处:
- 无需部署 Filebeat 组件,处理链路更短,减少计算资源消耗;
- 日志不落盘,不用考虑日志文件的磁盘占用,因为访问日志的量级可能非常大,如果没有处理好文件的轮转,很容易将机器的磁盘打满,导致故障。此外,与磁盘进行交互也会一定程度上降低网关的性能。
kafka-logger
网关访问日志有一个很明显的特点:日志的数据量与业务的请求量成正比,请求越多,日志越多。对于大多数在线业务,请求量会存在明显的周期性,比如外卖平台的流量高峰期会出现在餐点附近,而视频网站的高峰期则会出现在下班时间段。 这对于日志存储系统的挑战是巨大的,如何保证系统在流量高峰期依然可以正常工作,是每一个 ElasticSearch 管理员的必修课。
消息队列是处理“削峰填谷”场景的不二法器,在网关与存储系统之间引入消息队列,提供日志缓冲区,将会极大的降低存储系统在流量高峰期的压力。 为此 APISIX 提供了 kafka-logger
,它可以将访问日志投递到 Kafka 服务器,避免对日志存储产生直接的冲击。
loggly
近几年 SaaS 的概念逐渐深入人心,它凭借极低的接入门槛和按需付费的计价模型被众多中小型企业所青睐,在日志分析领域也涌现了诸多 SaaS 产品,Loggly 凭借着丰富的日志来源和分析手段成为其中的佼佼者。 在此背景下,活跃的 APISIX 社区开发了开箱即用的 loggly
插件,只需要配置好凭证信息,就可以将 APISIX 访问日志直接发送给 Loggly 服务,十分方便。
类似 loggly
插件,APISIX 还提供了 google-cloud-logging
、sls-logger
、tencent-cloud-cls
插件,可以轻松集成主流云厂商的日志服务。
error-log-logger
上面介绍的插件都是用于收集访问日志,在 APISIX 中还存在另外一类日志:错误日志(error.log),它对于排查网关自身故障非常关键,所以 APISIX 提供了 error-log-logger
插件 ,用于将错误日志发送到远端服务器进行存储分析。实际使用时,可以结合 APISIX 的日志等级配置,让网关打印出更多 debug 或者 info 级别的日志,这两个级别会包含更加详细的网关运行状态日志,利用这些日志通常可以定位出绝大多数问题。
总结
网关日志蕴藏着巨大的价值,从 Apache APISIX 项目丰富的日志插件中我们也可以看出,社区中的企业用户对于网关日志价值的肯定,而这些插件也进一步降低了新用户搭建日志系统的成本。 此外,APISIX 还有另外两类可观测性插件:metrics
、tracing
,它们配合上日志插件将会进一步提升网关的可观测性,助力系统稳定性建设。
关于 API7.ai 与 APISIX
API7.ai 是一家提供 API 处理和分析的开源基础软件公司,于 2019 年开源了新一代云原生 API 网关 -- APISIX 并捐赠给 Apache 软件基金会。此后,API7.ai 一直积极投入支持 Apache APISIX 的开发、维护和社区运营。与千万贡献者、使用者、支持者一起做出世界级的开源项目,是 API7.ai 努力的目标。
相关文章:

API 网关日志的价值,你了解多少?
本文介绍了 API 网关日志的价值,并以知名网关 Apache APISIX 为例,展示如何集成 API 网关日志。 作者钱勇,API7.ai 技术工程师,Apache APISIX Committer。 原文链接 网关日志的价值 在数字化时代,软件架构随着业务成…...

华大单片机、STM32单片机如何做printf串口打印格式化输出
第一种方法:使用标准C库,但使用标准C库你必须关闭半主机模式(1)添加下面代码就是关闭半主机模式/* 告知连接器不从C库链接使用半主机的函数 */ #pragma import(__use_no_semihosting)/* 定义 _sys_exit() 以避免使用半主机模式 */…...

unity 面试汇总
1、什么是协同程序?答:在主线程运行时同时开启另一段逻辑处理,来协助当前程序的执行。换句话说,开启协程就是开启一个可以与程序并行的逻辑。可以用来控制运动、序列以及对象的行为。2、Unity3D中的碰撞器和触发器的区别ÿ…...

Spring SpringBoot中使用Mybatis-plusDemo1
官网:https://baomidou.com GitHub:GitHub - baomidou/mybatis-plus: An powerful enhanced toolkit of MyBatis for simplify development Gitee:mybatis-plus: mybatis 增强工具包,简化 CRUD 操作。 文档 http://baomidou.com低代码组件库 http://aizuda.com My…...

【18.04Ubuntu中解决无法识别显示屏】
【18.04Ubuntu中解决无法识别外接显示屏】1. 问题来源2. 检查Ubuntu是否识别出外接显示器3. 解决没有识别出外接显示器问题4. 显示器扩展屏幕设置1. 问题来源 实验室的一个dell显示器,通过HDMI连接电脑后,在Windows上连接上就直接可以使用了。由于我电脑…...

Python 协程详解,都在这里了
什么是协程 协程(co-routine,又称微线程、纤程) 是一种多方协同的工作方式。 协程不是进程或线程, 其执行过程类似于 Python 函数调用, Python 的 asyncio 模块实现的异步IO编程框架中, 协程是对使用 asy…...

百家号如何写文章赚钱,百家号写文章真的赚钱?
随着互联网的快速发展,越来越多的人开始关注到写文章赚钱这个领域。而在众多写作平台中,头条号无疑是最受欢迎的一个。那么,百家号写文章赚钱是真的吗?如何写文章赚钱呢?下面我们就来一一解答。 首先,百家号…...

【HDFS】datanodeReport RPC优化
cat datanodeReport.txt | awk ‘{print $8}’ | sort | uniq | wc -l 结果15,说明我们有15个router。 每15秒一个router8次调用这个rpc。15秒是我们的监控采集间隔。 看下router为什么要调用这个rpc。 顺着这个配置项去寻找:dfs.federation.router.dn-report.time-out 一…...

【数据结构】研究链表带环问题
💯💯💯💯 本篇主要研究的是链表带环问题,快慢指针的应用,分析不同解法对带环链表的处理,梳理完本篇你将对链表的理解更加透彻Ⅰ.研究链表带环问题Ⅱ.扩展带环问题1.为什么慢指针和快指针一定会相…...

数据仓库的设计思想
数据仓库设计 知识点01:设计大纲与学习目标 #内容大纲1、数据仓库基础知识(回顾)什么是数仓为什么有数仓数仓的特点是什么OLTP和OLAP系统区别(数据库和数仓的区别)2、数仓系统的架构与核心流程核心1:ETL核…...

【JavaSE】数组的定义与使用详解
目录 1.数组的基本概念 1.1数组的好处 1.2什么是数组 1.3数组的定义及初始化 1.3.1数组的创建 1.3.2数组的初始化 1.4数组的使用 1.4.1访问数组中的元素 1.4.2遍历数组 2.数组的类型 2.1认识JVM的内存分布 2.2基本类型变量与引用类型变量 2.3认识null 3.数组的应…...

Kubernetes14:Helm为了部署像微服务这种的大型项目
Kubernetes14:Helm介绍(为了部署像微服务这种的大型项目) 1、Helm的引入 (1)之前方式部署应用基本过程 编写yaml文件 1、deployment kubectl create deployment nginx --imagenginx --dryrun -o yaml > nginx.yaml2、Service kubect…...

2.3操作系统-存储管理:页式存储、逻辑地址、物理地址、物理地址逻辑地址之间的地址关系、页面大小与页内地址长度的关系、缺页中断、内存淘汰规则
2.3操作系统-存储管理:页式存储、逻辑地址、物理地址、物理地址逻辑地址之间的地址关系、页面大小与页内地址长度的关系、缺页中断、内存淘汰规则页式存储逻辑地址、物理地址如何判断物理地址和逻辑地址它们之间的地址关系?页面大小与页内地址长度的关系…...

设计模式3——结构型模式
结构型模式描述如何将类或对象按某种布局组成更大的结构,它分为类结构型和对象结构型模式,前者采用继承机制来组织接口和类,后者采用组合或聚合来组合对象。 由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”&…...

css——图片缩放,拉伸,变形的解决办法
你的图片即将变得超级丝滑图片为什么会拉伸变形?怎么解决?css的object-fit属性object-fit属性有什么用介绍一下object-position举个小栗子图片为什么会拉伸变形? 前端布局时,图片会出现拉伸、缩放和变形的原因可能有多种: 1.例如图…...

【工具使用】STM32CubeMX-基础使用篇
一、概述 无论是新手还是大佬,基于STM32单片机的开发,使用STM32CubeMX都是可以极大提升开发效率的,并且其界面化的开发,也大大降低了新手对STM32单片机的开发门槛。 本文主要面向初次接触STM32CubeMX的同学,大…...

面试题解-理解cookie、session和token
项目vuespringboot 1、token 用户填写密码账号发送至后端,由后端生成token,返回给前端,前端把它存放起来,如放在cookie或者localStorage里面 前端向服务器发起请求时在请求头携带token,判断用户身份给与反应。 //后…...

Buuctf [GUET-CTF2019]number_game 题解
目录 一.主函数逻辑 二.level_stor()函数 三.mid_stor函数 四.operate函数 五.judge2函数 六.求解flag 一.主函数逻辑 ①先输入一个字符串,然后judge1()函数遍历它,判断字符是否在[0,4]区间范围内 ②将输入的字符串用层次遍历的方式存储为一个二叉树root ③再将二叉树r…...

OsgEarth配置.earth文件支持wms服务
<!-- 参考 http://vmap0.tiles.osgeo.org/wms/vmap0?LAYERSbasic&SERVICEWMS&VERSION1.1.1&REQUESTGetMap&STYLES&FORMATimage%2Fjpeg&SRSEPSG%3A4326&BBOX-90,45,-45,90&WIDTH256&HEIGHT256 --> <!-- 可用 2023.03.09--> …...

【数据结构】详解空间复杂度
Yan英杰的博客 悟已往之不谏 知来者之可追 目录 空间复杂度 案例1:计算BubbleSort的空间复杂度? 案例2:计算斐波那契额数列的前N项的空间复杂度 案例3:计算阶乘递归Fac的空间复杂度? 案例4:F1和F2两函数是否使用的同一块空间 案例5:计算该…...

腾讯云GPU游戏服务器/云主机租用配置价格表
用于游戏业务的服务器和普通云服务器和主机空间是不同的,游戏服务器对于硬件的配置、网络带宽有更大的要求,一般游戏服务器根据不同的配置和适用场景会有十几元一小时到几十元一小时,而且可以根据不同的按量计费。而普通的云服务器可能需要几…...

配置临时SSL子域名泛化证书
配置临时SSL子域名泛化证书 三个月有效期第一步:访问SSL证书地址第二步:在华为云上/其他服务器上搜索DNS云解析服务类似的功能第三步:将SSL申请的信息添加到服务器的记录集中第四步:添加完信息进行保存获取key / crt第五步&#x…...

【Linux:环境变量的理解】
目录 1 Z(zombie)-僵尸进程 2 孤儿进程 3 环境变量 3.1 基本概念 3.2 测试HOME 3.3 和环境变量相关的命令 3.4 环境变量的组织方式 3.5 环境变量通常是具有全局属性的 在讲环境变量之前,我们先把上次遗留知识点给总结了(僵尸进程和孤儿进程&…...

python数据类型与数据结构
目录 一、数据类型 1.1变量与常量 1.1.1变量 1.1.2常量 1.2字符串类型 1.3整数与浮点数 1.4List列表 1.5 元组tuple 1.6字典dict 二、字符串格式化 三、数据输入和类型转换 四、简单列表习题练习 一、数据类型 变量类型: 整数int(4字节&#x…...

大数据自学学习技巧?
经常有人说:先别管大数据是什么,现在理解不了没关系,先开始学,等学着学着就明白了,这种学习路线基本是混合的,很难分清楚自己学了这段怎么用在以后项目中,所以会越学越迷茫,但是等你…...

Qt音视频开发22-音频播放QAudioOutput
一、前言 以前一直以为只有Qt5以后才有QAudioOutput播放音频,其实从Qt4.6开始就有,在Qt6中变成了QAudioSink,功能一样。用QAudioOutput播放音频pcm数据极其方便,只需要指定音频播放设备(可能电脑上有多个音频输出设备…...

JavaEE简单示例——Spring的入门程序
简单介绍: 在之前我们简单的介绍了有关于Spring的基础知识,那么现在我们就来一步步的把理论融入到实践中,开始使用这个框架,使用过程也是非常的简单,大致可以分为几个基础的步骤: 1.首先引入Spring的Mave…...

【嵌入式Bluetooth应用开发笔记】第一篇:DBUS概述与蓝牙开发小试牛刀
DBUS概述 DBus(D-Bus)是一个在不同程序之间传递消息的系统总线。DBus为不同的程序之间提供了一种通信机制,这种通信制可以在不需要知道对方程序的情况下进行通信。 DBus可以使用多种编程语言来开发,包括C、C、Python、Java等。在…...

如何在电脑更换新硬盘后迁移window11系统?2种迁移方法分享!
随着时间的流逝,数据量也在逐渐增多,就会导致您的硬盘空间也变得越来越小,因此系统运行速度可能会受到一些影响而越来越慢。为了摆脱这种情况,您可以选择升级到更大的硬盘来使计算机获取更大的磁盘空间,或者迁移系统到…...

6、Elasticsearch优化
一、Elasticsearch集群配置 1、硬件选择 Elasticsearch的基础是 Lucene ,所有的索引和文档数据是存储在本地的磁盘中, 具体的路径可在 ES 的配置文件 ../config/elasticsearch.yml 中配置,如下:磁盘在现代服务器上通常都是瓶颈。…...