【API生命周期看护】API监控与运维

news2024/11/19 13:20:25

一、基本概念

当接口完成发布、上线后,就进入了正常的运行与维护状态。此时,对于API本身的监控与运维则变得尤为重要,这是保障服务功能可用、SLA达成的重要手段。

监控与运维本身是一个非常大的概念,从DevOps这一词汇中也能看出:Ops也即Operation(运维),各类方法也层出不穷。这里我们仅针对接口层面的需求,简单阐述一下笔者所了解的API监控与运维

二、关于API监控与运维

首先需要说明的是,监控运维本质上是一体的,或者说监控属于运维的一个环节,二者确切的说并不是一个并列的关系。不过为了方便记录与理解,笔者这里就直接将一些常见的概念进行罗列阐述。

1、接口可用性

所谓接口可用性概念,其实就是字面意思:服务对外提供的接口是否可访问、是否能满足功能需求、是否能达成SLA(服务等级协议)。而这其中,我们又可以通过接口快速探测、调用成功率、TP99等手段来进行可用性检查与度量。

(1)快速探测

快速探测是一种简单直接但较为有效的判断,在各个云服务厂商中也都有提供这种类型的服务。通过配置相关访问地址的方法,快速、高频、定时地发起HTTP请求,并根据状态码的返回值来判断接口是否可用。

在这里插入图片描述
在这里插入图片描述

(2)调用成功率

接口调用成功率也是一个经常会使用到的指标概念。一般而言,我们会将接口访问返回状态码为5xx(500、502、504等)的情况认为失败的访问情况,并且这类失败是由服务端所引起的,而调用成功率指的就是调用成功的次数占总调用次数的比例。这部分调用失败的数据既可以从调用链来统计,也可以从网关调用日志来收集。
根据SLA的要求,我们一般会有所谓的“三个9、四个9”的说法,也即调用成功率需要达到99.99%的水平,具体要求则是根据SLA来判断的。

(3)TP99达标率

TP=Top Percentile,指在一个时间段内,统计该方法每次调用所消耗的时间,并将这些时间按从小到大的顺序进行排序,并取出结果为 : 总次数 * 指标数 = 对应TP指标的值, 再取出排序好的对应位置时间。
TP99就是满足99%的网络请求所需要的最低耗时,假如TP99=3s,那么就意味着99%的请求耗时都在3s以内,服务达成该TP99要求的接口占比也即TP99达标率,用来衡量服务接口的性能水准。
同理,TP后面可以按照SLA标准带有各种数字:TP50、TP90、TP999等。

2、日志监控

在监控手段中,还可以使用日志记录与统计搜索的方法来实现接口的监控。
当前云服务厂商都有相关的云日志服务,以及基于类似ElasticSearch之类的海量数据快速查询手段。对于服务而言,可以利用一些规范化日志输出的方法,将服务对外访问请求,以及接收到的相关请求都输出、存储在日志流中。
而后,利用日志流服务的日志查询与关键字告警能相关能力,我们便能够实现基于特定关键字异常的接口监控与告警。

3、调用链监控

APM(Application Performance Management)监控,同样是各大云服务厂商对外提供的监控运维工具之一,服务通过安装Agent,自动完成服务间调用情况数据采集与分析。基于这些采集数据,我们可以有针对性的进行接口维度的监控告警。

(1)调用状态码监控

基于调用接口状态码的统计,我们能够针对5xx类型的类型进行有针对性地采集、监控,由于5xx类型的状态码反应了服务本身的不可用的问题状况,因此即时的状态码检查与告警能够快速发现现网故障。

(2)接口访问性能恶化监控

接口的访问性能恶化是一个较为复杂的问题:一方面,这种问题并不能用简单的接口响应时长阈值来判断,另一方面,接口的恶化速度是非常明显且快速的,很多时候很难快速去发现问题。

因此,针对这一问题,我们通过对接口响应时长的变化情况来判断:

  • 当服务接口的响应时长持续增长并超过该接口平均响应时长某个百分比、或者接口响应时长增长速度超过某个限度时,我们会认定服务接口存在性能恶化问题,并进行相关告警;
  • 同时,我们还会根据历史与周期性情况来做具体问题、具体分析,很多情况下服务接口由于业务需求(例如批量查询、定期更新等)接口会有一定程度的响应恶化,但这种情况下我们认为是正常的。只有未在预期情况下的接口响应时间突然变慢才会实际影响服务本身。

(3)慢SQL监控

慢SQL对应的是对数据库操作时耗费大量时间与性能开销的SQL语句,其在一定程度上也代表接口在接受访问进行数据库交互时的相关性能问题。

我们都明白,每当服务与数据库通过SQL进行交互时,都会与RDS建立连接,而连接池提供的连接数量本身也是有限的,因此慢SQL不经会在很大程度上耗费服务本身与RDS的相关性能,同时也会由于连接池占满而导致挤占其他正常业务的SQL交互。

而在识别这类问题时,虽然APM能够记录所有的SQL语句交互操作、以及对应的响应时间,但我们不能仅仅通过响应时长的阈值来做问题拦截,因为服务确实存在一些由于实际业务需要而响应较慢的SQL,这里我们需要结合连接池的具体情况来判断:

  • 如果服务存在响应时长错过某个限定阈值的SQL、同时连接池出现占满异常,那么我们就可以认为此时服务出现了慢SQL并影响了服务,需要尽快关注该问题。

三、评估方法

在评估方面,各类监控项是非常多的,这里我们简单提及一些使用频率较高的:

1、拨测成功率

针对服务的对外暴露接口,以及基于接口进行撰写的相关测试用例,我们会通过定时任务的方法来进行相关测试,并计算具体某段时间内的拨测成功率,同时拨测的成功率在一定程度上也可以代表当前服务的SLI水平。

2、调用成功率

接口调用成功率正如前文说说,我们通过对5xx状态码的统计与占比计算,来衡量具体服务的接口调用成功率。
这里的接口调用我们一般使用现网用户实际使用的日志信息,用以衡量服务对外提供接口的质量水平。

3、TP99

同样的,如TP99是从性能的维度来衡量服务对外提供接口的水准。

4、Apdex

Apdex全称是Application Performance Index,是由Apdex联盟开发的用于评估应用性能的工业标准。Apdex标准从用户的角度出发,将对应用响应时间的表现,转为用户对于应用性能的可量化范围为0-1的满意度评价。

根据应用性能评估确定应用响应时间的最优门槛为Apdex阈值,然后根据应用实际响应时间结合Apdex阈值定义了三种不同的性能表现:

  • Satisfied(满意):应用响应时间低于或等于Apdex阈值。比如Apdex阈值为1.5s,则一个耗时1s的响应结果则可以认为是满意的。
  • Tolerating(可容忍):应用响应时间大于Apdex阈值,但同时小于或等于4倍的Apdex阈值。假设应用设定的Apdex阈值为1s,则4*1=4s为应用响应时间的容忍上限。
  • Frustrated(烦躁期):应用响应时间大于4倍的Apdex阈值。

APM中,Apdex阈值即自定义阈值中设置的阈值,应用响应时延即服务时延,Apdex取值范围为0~1,计算公式如下:

Apdex=(满意样本 * 1 + 可容忍样本 * 0.5 + 令人沮丧样本 * 0)/ 样本总数

其计算结果表示应用的不同性能状态,即用户对应用的体验结果,采用不同的颜色表示:

Apdex值颜色说明
0.75 ≤ Apdex ≤ 1绿色表示应用、实例或事务被调用时响应很快,用户体验较满意。
0.3 ≤ Apdex < 0.75黄色表示应用、实例或事务被调用时响应较慢,用户体验一般。
0 ≤ Apdex < 0.3红色表示应用、实例或事务被调用时响应极慢,用户体验较差。
黑色表示没有调用应用、实例或者事务。

5、慢SQL个数

如上文说提到的满SQL监控,我们同样会对服务接口在被调用时、执行响应时长超过某个时间阈值的相关SQL进行检查、知会。

一般而言,我们不希望服务存在慢SQL。

四、小结

API作为对外暴露的能力出口,是一个服务、乃至整体产品的“门面”,对于其质量的把控是至关重要的,而这其中,监控与运维是我们提前发现、拦截问题并持续改进的重要手段。这其中手段还有非常多,是DevOps中的Ops的关键组成部分,后续会单独再做详细探讨。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/756107.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux下做性能分析6:理解一些基础的CPU执行模型

[介绍] 前面介绍了两个典型的调度模型&#xff0c;如果调度没有问题&#xff0c;剩下的问题就是正面刚算法了。那个不是我这里要介绍的主题的。 但&#xff0c;Not Really。其实除了算法在消耗CPU&#xff0c;CPU还是有很多余力可以挖掘的&#xff0c;这一篇我们专门讨论一下…

MySQL “error: ‘fd’: 未知重写说明符”

文章目录 1、【问题】MySQL “error: ‘fd’: 未知重写说明符”2、【解决】增加引用头文件 1、【问题】MySQL “error: ‘fd’: 未知重写说明符” 有以下代码&#xff0c;mysql 的 include 和 lib 都已经加入附加目录&#xff0c;libmysql.lib 已经加入依赖库&#xff1a; #p…

IEEE ICME 2023论文|基于交互式注意力的语音情感识别联合网络

论文题目&#xff1a; A Joint Network Based on Interactive Attention for Speech Emotion Recognition 作者列表&#xff1a; 胡英&#xff0c;侯世静&#xff0c;杨华敏&#xff0c;黄浩&#xff0c;何亮 研究背景 语音情感识别&#xff08;Speech Emotion Recognitio…

4. MySQL 的增删查改(重点 9000字详解)

目录 准备工作 一、数据的插入 &#xff08;insert&#xff09; 注意 1. 整行插入 2. 指定列的插入&#xff08;常用&#xff09; 3. 一次插入多行数据 4. 清空数据库的数据&#xff08;truncate&#xff09; 5. 拓展练习&#xff1a;对于数据库中的数据进行统计&#…

多智能体强化学习(MARL)研究汇总:行为分析、通信学习、协作学习、智能体建模

【强化学习原理+项目专栏】必看系列:单智能体、多智能体算法原理+项目实战、相关技巧(调参、画图等、趣味项目实现、学术应用项目实现 专栏详细介绍:【强化学习原理+项目专栏】必看系列:单智能体、多智能体算法原理+项目实战、相关技巧(调参、画图等、趣味项目实现、学术应…

第一百零七天学习记录:C++核心:类和对象Ⅷ(五星重要)多态

多态 多态的基本概念 多态是C面向对象三大特性之一 多态分为两类 1、静态多态&#xff1a;函数重载 和 运算符重载属于静态多态&#xff0c;复用函数名 2、动态多态&#xff1a;派生类和虚函数实现运行时多态 静态多态和动态多态的区别&#xff1a; 1、静态多态的函数地址早绑…

Arthas的火焰图生成

之前说过用idea自带的工具生成火焰图&#xff0c;但是idea是在本地的&#xff0c;在机器上如何生成呢&#xff1f; 我觉得方法有很多&#xff0c;这里用arthas工具简单搞一搞 Arthas官网地址 下载Arthas 如果在机器上要下载整个包&#xff0c;arthas-boot.jar需要依赖其他的j…

上门按摩系统如何运营才能做大

预约上门按摩系统是一种在线平台或应用程序&#xff0c;用于帮助用户预约并安排专业按摩师上门提供按摩服务。这种系统通常为用户提供一个简便的方式来选择按摩服务类型、时间和地点&#xff0c;并与合适的按摩师进行预约。用户可以通过应用程序或网站浏览按摩师的资料和评论&a…

用googletest写cpp单测

框架概述 Google Test&#xff08;也称为 googletest&#xff09;是由 Google 开发的 C 单元测试框架。它的首个版本是在2004年发布的&#xff0c;作为 Google 内部的测试框架使用。随后&#xff0c;Google Test 在开源社区中得到广泛应用&#xff0c;并在许多项目和组织中成为…

总结927

今晚用了40分钟进行回顾&#xff0c;但这40分钟&#xff0c;能回顾一天所学&#xff1f;一共四门课&#xff0c;每门用10分钟回顾&#xff0c;光是书籍&#xff0c;资料的切换都需要30秒。10分钟回顾对于政治来说是足够的&#xff0c;但对于数学&#xff0c;能重做2~3道题就很不…

centos环境搭建nsq单点

简言 下载 启动nsq(单节点) 1. 启动nsqd 2. 启动nsqlookupd 3. 启动nsqadmin 查看状态 简言 1. nsq是go语言实现的分布式消息处理平台&#xff0c;类似我们常用的kafka&#xff0c;rocket mq等&#xff0c;目的是用来大规模地处理每天数以十亿计级别的消息。它具有分布式和…

前端:UI 交互式特效 —— Css、Js

&#x1f637;&#x1f60a;&#x1f93a;&#x1f93a;&#x1f93a;前期回顾 打造极简风格动效 —— 5 分钟轻松实现惊艳、震撼人心的视觉效果_彩色之外的博客-CSDN博客 &#x1f601; css动画 —— 把你喜欢css动画嵌入到浏览器中_css做的动画效果怎么嵌入网页_彩色之外的…

研0进阶式学习—-数据挖掘概念与技术

目录 【 写在前面】什么是数据挖掘为何进行模式评估如何进行模式评估数据挖掘的发展趋势 【 写在前面】 本科期间&#xff0c;数据挖掘算法学过一些&#xff0c;甚至本人的毕业设计也是围绕此展开的&#xff0c;但是显然学得太皮毛&#xff0c;今天偶然读到《数据挖掘•概念与…

基于tauri+vue3+pinia2客户端管理系统程序|tauri+vite4后台系统

TauriAdmin一款跨端通用后台系统模板解决方案 基于 tauri rust webview2 整合 vite4 搭建桌面端 vue3 管理后台模板TauriVue3Admin。支持多窗口切换管理、vue-i18n多语言、动态路由权限、常用业务功能模块及动态路由缓存等功能。 使用技术 编码工具&#xff1a;Vscode框架技术…

【chap4-链表】用Python3刷《代码随想录》

通过指针串联在一起的线性结构&#xff0c;每一个节点由两部分组成&#xff0c;一个是数据域data&#xff0c;另一个是指针域next&#xff08;存放指向下一个节点的指针&#xff09;&#xff0c;最后一个节点的指针域指向null&#xff08;空指针&#xff09; 链接的入口点称为…

耳夹式骨传导耳机有哪些比较好用?这三个款式不容错过!

骨传导耳机由于不入耳&#xff0c;不用担心耳道健康问题&#xff0c;越来越受到广大网友的喜欢&#xff0c;而传统的入耳式耳机&#xff0c;则因为长时间佩戴会耳朵痛&#xff0c;容易掉落等问题逐渐的被网友抛弃&#xff0c;那么在骨传导耳机市场种类这么多的情况下&#xff0…

Apache Kudu 在**医疗科技的生产实践

目录 说明 医疗场景下数据特点 KUDU 的介绍 kudu 架构 kudu 文件组织形式 kudu的生产实践 技术选型 整体的架构 项目遇到的问题 参考资料 说明 本文主要介绍APACHE KUDU 在**医疗科技数据实时分析场景下的实践&#xff0c;内容包括&#xff1a; 医疗场景下数据特点 …

mysql什么情况下行锁(表锁)(锁的概念)

1&#xff1a;数据表aa的设计结构 2&#xff1a; 使用navicat编写手动控制事务 3&#xff1a;先选择开启事务和执行更新操作&#xff0c;where b1&#xff08;表锁&#xff09;b不是索引&#xff0c;不提交事务&#xff0c;&#xff08;如果where b1&#xff0c;b是索引就行锁&…

本地Nginx部署React前端项目浅尝

目录 nginx [下载](http://nginx.org/en/download.html)nginx命令react打包文件放置nginx 配置 运行效果nginx踩坑根目录配置 nginx 下载 根据上面的版本找到适合自己的 nginx版本&#xff0c;我目前是环境是 windows&#xff0c;所以下载 稳定版本。 nginx命令 在下载的ngin…

数学建模-判断数据是否服从正态分布

大样本用qq图 >1000 皮尔逊相关系数需要正态性检验&#xff0c;利用上面三种方法其中一种 斯皮尔曼相关系数不用正态性检验