线上服务有哪些稳定性指标?

news2024/9/28 11:14:05

在分布式高可用设计中,系统监控非常重要,系统监控做好了,可以提前对异常情况进行报警,避免很多线上故障的产生。系统监控做得好不好,也是评价一家互联网公司基础建设水平的重要标准,今天一起来讨论一下,线上服务都有哪些监控指标,又应该如何展开呢?

系统监控的重要性

我的一个朋友是做底层开发工作的,包括内部数据库和微服务的中间件,前不久入职了一家互联网创业公司,这家公司虽然成立不久,但是业务发展很快。最近这几天他和我吐槽,公司的系统监控做得很差,线上经常有各种故障,不得不经常救火,工作非常疲惫。

听了这位朋友的感受,不知道你是否也有过类似的经历,系统监控等稳定性工作,看似离业务开发有点远,但其实是非常重要的,系统监控做得不好,开发人员需要花很多的时间去定位问题,而且很容易出现比较大的系统故障,所以越是在大公司里,对监控的重视程度就越高。

各种监控指标可以帮助我们了解服务运行水平,提前发现线上问题,避免小故障因为处理不及时,变成大故障,从而解放工程师的人力,我在之前的工作中,曾经专门做过一段时间的稳定性工作,现在把自己的一些经验分享给你。

在实际操作中,系统监控可以分为三个方面,分别是监控组件、监控指标、监控处理,在这一课时呢,我先和大家一起梳理下监控指标相关的知识,在接下来的第 44 课时,我将分享常用的监控组件,以及监控报警处理制度。

111.png

稳定性指标有哪些

稳定性指标,这里我按照自己的习惯,把它分为服务器指标、系统运行指标、基础组件指标和业务运行时指标。

每个分类下面我选择了部分比较有代表性的监控项,如果你还希望了解更多的监控指标,可以参考 Open-Falcon 的监控采集,地址为 Linux 运维基础采集项。

服务器监控指标

服务器指标主要关注的是虚拟机或者 Docker 环境的运行时状态,包括 CPU 繁忙程度、磁盘挂载、内存利用率等指标。

服务器是服务运行的宿主环境,如果宿主环境出问题,我们的服务很难保持稳定性,所以服务器监控是非常重要的。常见的服务器报警包括 CPU 利用率飙升、磁盘空间容量不足、内存打满等。

监控项指标描述
CPU 空闲时间除硬盘 IO 等待时间以外其他等待时间,这个值越大,表示 CPU 越空闲
CPU 繁忙程度和 CPU 空闲时间相反
CPU 负载CPU 负载(如果是 Docker,此指标收集物理机的 load)和 CPU 利用率监控
CPU 的 iowait在一个采样周期内有百分之几的时间属于以下情况:CPU 空闲且有仍未完成的 I/O 请求
CPU 的 systemCPU 用于运行内核态进程的时间比例
CPU 的 userCPU 用于运行用户态进程的时间比例
load1表示最近 1 分钟内运行队列中的平均进程数量
load3表示最近 5 分钟内运行队列中的平均进程数量
load15表示最近 15 分钟内运行队列中的平均进程数量(在 falcon 系统里)
磁盘使用情况磁盘使用情况,磁盘已用,未使用容量

服务器的指标,在实际配置中,需要根据服务器核心数不同,以及不同的业务特点配置不同的指标策略。比如,如果是一个日志型应用,需要大量的磁盘资源,就要把磁盘报警的阈值调低。

系统运行指标

系统指标主要监控服务运行时状态、JVM 指标等,这些监控项都可以在 Open-Falcon 等组件中找到,比如 JVM 的 block 线程数,具体在 Falcon 中指标是 jvm.thread.blocked.count。下面我只是列举了部分监控指标,具体的你可以根据自己工作中应用的监控组件来进行取舍。

监控项指标描述说明
JVM 线程数线程总数量关注整体线程运行情况
JVM 阶段线程增长累计启动线程数量线程应该尽量复用,因此不宜持续创建新线程
JVM 死锁死锁个数线程死锁,一般都不能忍受
JVM 的 block 线程数blocked 状态的线程数blocked 状态的线程过多,说明程序遭遇剧烈的锁竞争
GC 的次数GC 的次数垃圾回收的这几个指标,通常会综合来看,在进行调优时非常重要
GC 时间GC 的时间
年轻代 GC年轻代 GC 的次数
老年代 GC 次数年老代 GC 的次数
老年代 GC 时间年老代 GC 的时间
基础组件指标

在基础组件这里,主要包括对数据库、缓存、消息队列的监控,下面我以数据库为例进行描述,虽然各个中间件对数据库监控的侧重点不同,但是基本都会包括以下的监控项。如果你对这部分指标感兴趣,我建议你咨询一下公司里的 DBA 了解更多的细节。

监控项指标描述
写入 QPS数据库写入 QPS
数据库查询 QPS查询 QPS
数据库的死锁死锁处理不及时可能导致业务大量超时
数据库慢查询 QPS慢查询 QPS
数据库的活跃连接数数据库的活跃连接数
数据库的总连接数数据库的总连接数
数据库 Buffer Pool 命中率可能引起数据库服务抖动,业务系统不稳定

在进行数据库优化时要综合这部分指标,根据具体业务进行配置。

业务运行时指标

业务运行时指标和上面其他分类的指标是不同的,需要根据不同的业务场景来配置。

举个例子,你现在开发的是一个用户评论系统,那么就需要关注每天用户评论的请求数量、成功率、评论耗时等。业务指标的配置,需要结合各类监控组件,在指标的选择上,通常需要结合上下游各个链路,和产品设计、运营同学一起对齐,明确哪些是核心链路,并且进行指标的分级。

总结

本文讨论了系统监控的重要性,以及系统监控指标的分类,常见的监控指标及其含义。

对稳定性指标的了解,看起来是系统运维负责的工作,但实际上对开发同学也同样重要,打个比方,系统监控指标好像就是医院里体检时的各项化验数据,只有全面了解这些数据,才能更好地明确身体健康情况。

在你的工作中,是如何对稳定性监控指标进行配置的,在配置告警阈值时考虑了哪些因素,应用了哪些监控组件呢?欢迎留言进行分享。

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

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

相关文章

线下终端门店调研包含哪些内容

品牌渠道一般分为线上和线下,线上的价格、促销信息、店铺优惠机制等都可以通过登录查看,但是线下门店的数据则需要进店巡查,否则无法得到真实的店铺销售数据,当然也有品牌是靠线下的业务团队报备机制获得这些信息,但是…

18.仿简道云公式函数实战-数学函数-AVERAGE

1. AVERAGE函数 AVERAGE 函数可用于计算一组数值的算术平均值。 2. 函数用法 AVERAGE(数字1,数字2,...) 3. 函数示例 AVERAGE(1,3,5),返回结果为 3 4. 代码实战 首先我们在function包下创建math包,在math包下创建AvgFunction类,代码如…

使用静态HTTP进行缓存:提高网站性能的关键

大家好,今天我们来聊聊如何通过使用静态HTTP进行缓存,来提高网站的“奔跑速度”。没错,就像给网站穿上了一双“风火轮”,让它飞得更快! 首先,我们来了解一下什么是缓存。简单来说,缓存就是把你…

浅谈Dubbo核心概念及架构流程

浅谈Dubbo核心概念及架构流程 前言重要概念1、SPI2、ServiceBean3、URL4、Invoker 整体流程1、架构图2、调用链路 笔者碎碎言,我们学习Dubbo应该学的是什么? 笔者是一名业务开发,认为一切目的都要为我们的目标服务,即日常工作有帮…

fragstats:景观指数的突变分析

作者:CSDN _养乐多_ 本文将介绍景观指数时间序列的突变分析,包括突变时间、突变频次等。以及景观指数突变分析所用的软件和 python 代码。 结果如下图所示, 图1 突变频次 图2 突变时间 文章目录 一、景观指数计算二、景观指数时间序列构建…

Python 数据分析 Matplotlib篇 plt.rcParams 字典(第5讲)

Python 数据分析 Matplotlib篇 plt.rcParams字典(第5讲)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ�…

传输损伤和传输质量解读

目录 传输损伤 传输质量 噪声和干扰 通信编码 传输损伤 数据信号在数据通信系统的端到端连接的每个环节都可能受到伤害,ITU称之为传输损伤。并推荐用误码、抖动、漂移、滑动和时延来表示。 误码(Error)。指信号在传输过程中码元发生的差错,即接…

SpringBoot2.x+mybatis plus3.x集成Activit7版本

文/朱季谦 在Activiti6版本当中,若要集成到Springboot里,需要写一些额外的配置类,我曾经在Activiti工作流框架学习笔记(二)之springboot2.0整合工作流Activiti6.0一文当中总结过相关配置过程,感兴趣的同学…

SpringBoot集成RabbitMq消息队列【附源码】

1. 项目背景 要啥项目背景,就是干!!! SpringBoot版本:2.7.12 2. Rabbit MQ安装 这里讲解使用docker安装RabbitMQ,如果在windows下面安装RabbitMQ,参考下文 【笑小枫的按步照搬系列】Window…

数据结构:KMP算法

1.何为KMP算法 KMP算法是由Knuth、Morris和Pratt三位学者发明的,所以取了三位学者名字的首字母,叫作KMP算法。 2.KMP的用处 KMP主要用于字符串匹配的问题,主要思想是当出现字符串不匹配时,我们可以知道一部分之前已经匹配过的的文…

音视频技术开发周刊 | 325

每周一期,纵览音视频技术领域的干货。 新闻投稿:contributelivevideostack.com。 AI读心术震撼登顶会!模型翻译脑电波,人类思想被投屏|NeurIPS 2023 在最近举办的NeurIPS大会上,研究人员展示了当代AI更震撼…

服务器扩容未生效、不成功:解决方法

记一次解决服务器扩容未生效的解决办法 老板:失忆啊,我花钱给服务器扩容了10000000G,但是数据库和mq都还是用不了,到底是不是服务器磁盘满了,你到底有没有查一下什么原因导致服务用不了啊。 失忆:老板您确…

【并发编程篇】读锁readLock()和写锁writeLock()

文章目录 🛸情景引入⭐解决问题 readLock()和writeLock()都是ReadWriteLock接口中定义的方法,用于获取读锁和写锁。 readLock()方法返回一个读锁,允许多个线程同时获取该锁,以进行并发读取操作。如果当前已有一个写锁或其他线程正…

第三十六周:文献阅读+注意力/自注意力机制

目录 摘要 Abstract 文献阅读:锂离子电池RUL预测的SA-LSTM 现有问题 提出方法 提出方法的结构 SA-LSTM预测模型的结构 研究实验 研究贡献 注意力机制 Self-Attention(自注意力机制) 注意力与自注意力 代码实现attention、self-at…

uni-app pages.json之globalStyle全局页面样式配置

锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…

静态HTTP的常见问题和解决方法

大家好,欢迎来到今天的“静态HTTP大讲堂”!今天我们要聊聊静态HTTP的常见问题和解决方法。别小看这些问题哦,它们就像是那些顽皮的小妖精,时不时地给你的网站搞点恶作剧。不过别担心,有我在,这些小妖精都得…

超维空间S2无人机使用说明书——51、使用yolov8进行目标跟踪

引言:为了提高yolo识别的质量,提高了yolo的版本,改用yolov8进行物体识别,同时系统兼容了低版本的yolo,包括基于C的yolov3和yolov4,以及yolov7。 简介,为了提高识别速度,系统采用了G…

HTTP分数排行榜

HTTP分数排行榜 介绍一、创建数据库二、创建PHP脚本三、上传下载分数四、测试 介绍 Unity中向服务器发送用户名和得分,并存入数据库,再讲数据库中的得分按照降序的方式下载到Unity中。 一、创建数据库 首先,我们要在MySQL数据库中建立一个…

文本编辑器:Sublime Text (安装+汉化)

下载 Sublime Text - Text Editing, Done Righthttps://www.sublimetext.com/Sublime Text官网 支持mac,Linux,Windows 安装 选择安装路径 next install 选择安装位置安装就行了 汉化 进入了主界面按 CTRLshiftp 输入install 选择第一个 弹窗就按确…

(Matlab)基于CNN-LSTM的多输入分类(卷积神经网络-长短期记忆网络)

目录 一、程序及算法内容介绍: 基本内容: 亮点与优势: 二、代码实际运行结果展示: 三、部分代码展示: 四、本文完整代码数据下载: 一、程序及算法内容介绍: 基本内容: 本代码…