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

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

系统监控的重要性

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

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

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

在实际操作中,系统监控可以分为三个方面,分别是监控组件、监控指标、监控处理,在这一课时呢,我先和大家一起梳理下监控指标相关的知识,在接下来的第 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.mzph.cn/news/578932.shtml

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

相关文章

Vue和React的运行时,校验引入包的上下文差异

背景 系统使用 webpack 5 模块联邦实现微前端,有关如何实现跨应用的代码共享,可参考 如何优雅的实现跨应用的代码共享 里的第三大点。 总之,这里是其他应用使用了某个应用共享出来的reg文件,引入方式为: import REG …

Dbeaver如何连接Oceanbase?

Dbeaver & Oceanbase 一、新增驱动二、连接数据库 一、新增驱动 1、新建驱动 点击数据库 -> 驱动管理器 -> 新建 2、设置驱动 驱动名称可随意填写注意驱动类型要是Generichost:port填写实际的host和port 库中新增下载的oceanbase驱动jar包 二、连接数据库 1、找…

ECMAScript 6 - 通过Promise输出题理解Promise

1 题目(1) 题目背景:分享洛千陨 珍藏题 const p1 () > (new Promise((resolve, reject) > {console.log(1);let p2 new Promise((resolve, reject) > {console.log(2);const timeOut1 setTimeout(() > {console.log(3);resolve(4);}, 0)resolve(5)…

【前端框架React】原理

React设计思想 1.原生JS React相比于vue来说更接近原生JS,因为在react内部,jsx模板经babel转化后是一个对象,所有的操作都是基于这个对象和其对应的fiber结构来操作的,而vue.js通过编译将templete模板转换成渲染函数(render),执…

工具系列:TensorFlow决策森林_(3)使用dtreeviz可视化

文章目录 介绍设置安装 TF-DF 和 dtreeviz导入库 可视化分类树加载、清洗和准备数据分割训练/测试集并训练模型训练一个随机森林分类器显示决策树检查叶节点统计信息决策树如何对实例进行分类特征空间划分 可视化回归树加载、清洗和准备数据分割训练/测试集并训练模型训练一个随…

漏洞处理-未设置X-Frame-Options

漏洞名称&#xff1a;iFrame注入 风险描述&#xff1a;系统未设置x-frame-options头 风险等级&#xff1a;低 整改建议&#xff1a;为系统添加x-frame-options头 知识 X-Frame-Options 响应头 X-Frame-Options HTTP 响应头是用来给浏览器指示允许一个页面可否在 <fram…

一体式读卡器:引领数据读取新潮流

一体式读卡器&#xff1a;引领数据读取新潮流 随着科技的发展&#xff0c;读卡器在各个领域的应用越来越广泛&#xff0c;如工业自动化生产、身份认证、门禁控制、数据采集等。读卡器主要有两种类型&#xff1a;一体式读卡器和分体式读卡器。这两种类型的读卡器各有其优缺点&a…

带你读懂SoBit 跨链桥教程

从BTC网络到Solana网络桥接BRC20 1.打开SoBit平台&#xff1a;在您的网络浏览器中启动SoBit Bridge应用程序。 2.连接您的钱包&#xff1a; 选择SoBit界面右上角的比特币网络来连接您的数字钱包。 3.选择源链、目标链和您想桥接的代币&#xff1a; 从下拉菜单中选择’BTC’作为…

通过 conda 安装 的 detectron2

从 detectron2官网 发现预编译的版本最高支持 pytorch1.10、cuda11.3。&#xff08;2023-12-26&#xff09; 1、安装 conda 环境。 conda create --name detectron2 python3.8 2、安装 pytorch1.10 和 cuda11.3。 pip3 install torch1.10.0cu113 torchvision0.11.1cu113 torc…

有哪些备份策略?具体该如何实施这些备份方案?

在目前的时代背景下&#xff0c;个人和企业都需要重视数据备份这项措施&#xff0c;因为它是一个能够有效保护重要数据安全不丢失的方法。随着社会的发展&#xff0c;数据备份情况日益复制&#xff0c;我们逐渐开始采用不同的备份策略来对不同的数据进行备份&#xff0c;从而更…

Mysql(5日志备份恢复)

一.日志管理 MySQL 的日志默认保存位置为 /usr/local/mysql/data 先看下mysql的日志文件有无&#xff1a; 修改配置文件添加&#xff1a;错误日志&#xff0c;用来记录当MySQL启动、停止或运行时发生的错误信息&#xff0c;默认已开启 修改配置文件添加&#xff1a;通用查…

如何查看NX UI对话框内的控件(使用UIFW侦查)

一、概述 在NX二次开发中有很多命令从界面上看起开相似&#xff0c;但实质确不同&#xff0c;个人人为一是出于对软件产权的保护&#xff0c;增加二次开发的难度&#xff0c;二是由于NX在不断地发展和版本交替中为了保留老用户的操作习惯&#xff0c;故意用新控件做成老控件的…

SANSAN新鲜事|工业物联网最热门的应用方向,你都了解吗

引言 在现代工业&#xff0c;随着新基建、智慧、数字化转型等一系列国家倡议和政策的推动&#xff0c;一场无声的数字革命正在持续展开。 在本文中&#xff0c;我们将讨论工业物联网(IIoT)的应用&#xff0c;从制造工厂到能源电网&#xff0c;从物流到农业&#xff0c;IIoT正在…

blackbox黑盒监控部署(k8s内)

一、前言 部署在k8s中需要用到deployment、configmap、service服务 二、部署 创建存放yaml的目录 mkdir /opt/blackbox-exporter && cd /opt/blackbox-exporter 编辑blackbox配置文件&#xff0c;使用configmap挂在这 vi configmap.yaml apiVersion: v1 kind: Confi…

vue虚拟列表展示

效果图 <template><!-- 总体高度区域 --><divref"listWrap"class"m-container"scroll"scrollListener"><div:style"handleContainerHeight()"><!-- 可视区域 --><divclass"m-area":style&…

MySQL——运维篇

三、运维篇&#x1f6a9; 1. 日志&#x1f37b; 1.1 错误日志 错误日志记录了当mysql启动和停止时&#xff0c;以及服务器在运行过程中发生任何严重错误时的相关信息。——数据库无法正常使用时&#xff0c;使用该日志 # 可以查看错误日志存放的位置 show variables like %…

虚拟机VMware安装openWrt作为旁路由

虚拟机VMware安装openWrt作为旁路由 前言&#xff1a;前提是已经成功安装了VMware Workstation Pro 一、下载openWrt系统固件 固件有很多&#xff0c;我选择的是下面这个&#xff1a; https://fw0.koolcenter.com/iStoreOS/x86_64/istoreos-22.03.5-2023121510-x86-64-squas…

SAP 配额维护 ME_UPDATE_QUOTA 解读

竟然直接insert 表 FUNCTION ME_UPDATE_QUOTA. *"---------------------------------------------------------------------- *"*"Verbuchungsfunktionsbaustein: *" *"*"Lokale Schnittstelle: *" TABLES *" XEQ…

Codeforces Pinely Round 3 (Div. 1 + Div. 2)

A.Distinct Buttons(思维) 题意&#xff1a; 你在开始时站在点 ( 0 , 0 ) (0,0) (0,0)&#xff0c;同时&#xff0c;手上有一个遥控器&#xff0c;上面有四个按钮&#xff1a; U:移动到 ( x , y 1 ) (x, y 1) (x,y1)的位置 R:移动到 ( x 1 , y ) (x 1, y) (x1,y)的位置 …

代码随想录算法训练营Day10 | 239.滑动窗口的最大值、347.前K个高频元素

LeetCode 239 滑动窗口的最大值 本题思路: 采用单调队列来完成&#xff0c;单调队列就是队列里的元素顺序&#xff0c;是单调递减/递增的情况。 那么我们应该如何维护这个单调队列呢&#xff0c;此处既然是最大值&#xff0c;那么采用的是单调递减的队列。让队列的出口处是当前…