操作系统需要重点关注指标

机器层面的监控分为两部分,带内监控和带外监控。带内监控就是通过带内网络来监控,主要是以在 OS 里部署 Agent 的方式,来获取 OS 的 CPU、内存、磁盘、IO、网络、进程等相关监控指标。

外监控走的是带外网络,通常和业务网络不互通,通过 IPMI、SNMP 等协议获取硬件健康状况。

IPMI 可用于监控硬件的物理参数,如系统温度、风扇速度、电源电压等,可以有效地利用 IPMI 监控硬件温度、功耗、启动或关闭服务器和系统,以及进行日志记录。IPMI 的一个主要亮点是,它的功能独立于服务器的 CPU 和操作系统。因为固件是直接在服务器主板上运行的,所以不管安装的操作系统是什么,它都可以用于管理各种远程位置的服务器。BMC(服务器基板管理控制器)也可以开启 SNMP 的支持,通过 SNMP Trap 做硬件监控是一个很好的思路。

带内监控,常见的 Agent 有 Categraf、Telegraf、Grafana-agent、Datadog-agent、Node-exporter 等。

Categraf 作为一款 Agent 需要部署到所有目标机器上,因为采集 CPU、内存、进程等指标,是需要读取 OS 里的一些信息的,远程读取不了。采集到数据之后,转换格式,传输给监控服务端。

Categraf 推送监控数据到服务端,走的是 Prometheus 的 RemoteWrite 协议,是基于 Protobuf 的 HTTP 协议,所以所有支持 RemoteWrite 的后端,都可以和 Categraf 对接,比如 Prometheus、Nightingale、TDEngine 等。

Categraf 是插件架构,采集 CPU 指标的是 cpu 插件,采集内存指标的是 mem 插件,采集进程指标的是 procstat 插件,每个插件都有一个配置目录,在 conf 目录下,以 input. 打头。OS 的各类指标采集,大都是读取的 /proc 目录。

1、cpu

cpu 插件的配置文件在 input.cpu 目录,只有两个配置项,interval 和 collect_per_cpu,其中 interval 表示采集频率,所有的插件都有这个配置。而和 CPU 采集相关的配置实际只有一个,就是 collect_per_cpu,它用于控制是否采集每个单核的指标。默认值是 false,表示不采集单核的指标,只采集整机的指标。

CPU 相关的指标,最核心的就是使用率。大型互联网公司,为了应对突发流量,CPU 的平均利用率一般就是 30% 左右。如果平时 CPU 利用率总是超过 60%,就比较危险了。

2、mem

mem 插件的配置文件在 input.mem 目录,核心配置只有一个 collect_platform_fields,它表示是否采集各个平台特有的指标。内存相关的指标,Linux、Windows、BSD、Darwin 都不是完全一样的,内存总量、使用量这类指标所有平台都有,但是其余很多指标都是和平台相关的,比如 Linux 下特有的 swap、huge_page 相关的指标,其他平台就是没有的。

内存相关的指标,最核心的是可用率,即 mem_available_percent。这个值如果小于 30% 就可以发个低级别告警出来了,然后着手扩容。

3、disk

disk 插件的配置文件在 input.disk 目录,默认不用调整,如果某个挂载点不想采集,可以配置到 ignore_mount_points 中,这样就会自动忽略掉对应的挂载点。

硬盘相关的指标,主要关注空间使用率和 inode 使用率。对于空间使用率,85% 一刀切的告警规则不合适,建议考虑大空间的盘和小空间的盘分别对应不同的告警规则。

4、diskio

diskio 插件的配置文件在 input.diskio 目录,默认不用调整,如果只想采集某几个盘的 IO 数据,可以使用 devices 配置进行限制。硬盘 IO 相关的指标,主要关注读写延迟,所谓的 IO.UTIL 这种指标基本不用太关注。

5、net

net 插件的配置文件在 input.net 目录,默认不用调整,如果只想采集某个特定网卡的数据,可以修改 interfaces 配置。不过网卡丢包是需要关注的,比如长期每秒几十个丢包,就有理由怀疑是硬件的问题了。

6、netstat

netstat 插件的配置文件在 input.netstat 目录,默认不用调整,tcp_time_wait 指标就是靠这个插件采集的。

7、processes

processes 插件的配置文件在 input.processes 目录,默认不用调整。最常见的指标是进程总量,如果某个机器进程总量超过 600,大概率是有问题的,常见的原因比如某个 cron 写“挫”了,每分钟 fork 一个进程,但就是不退出,时间长了就把机器压垮了。

8、conntrack

这个插件就是用来监控 conntrack 的情况的。我们可以配置一条这样的告警规则及时发现问题:conntrack_ip_conntrack_count / ip_conntrack_max > 0.8 就可以告警。

9、kernel_vmstat

kernel_vmstat 插件的配置文件在 input.kernel_vmstat,采集的是 /proc/vmstat 的指标数据。这个文件内容比较多,所以配置文件中给了一个白名单,你可以按需启用,默认启用了 oom_kill。

10、ntp

ntp 插件的配置文件在 input.ntp 目录,需要在配置文件中给出 ntp server 的地址。每个公司都应该有对时机制,很多分布式程序都是重度依赖时间的。监控指标是 ntp_offset_ms,顾名思义,单位是毫秒,一般这个值不能超过 1000,也不能小于 -1000,需要配置告警规则。

11、procstat

rocstat 插件的配置文件在 input.procstat 目录,用于监控进程。进程监控主要是两个方面,一个是进程存活性,一个是进程占用的 CPU、内存、文件句柄等数据。

12、exec

exec 插件的配置文件在 input.exec 目录,用于自定义监控脚本。因为 Agent 虽然内置了很多插件,但有些长尾需求仍然是解决不了的,此时就需要通过自定义监控脚本来扩展监控采集能力。

监控脚本可以是 Shell 的,也可以是 Python、Perl、Ruby 的,只要机器上有对应的执行环境就可以。Agent 会 fork 一个进程来执行,截获进程的 stdout(标准输出),解析成监控数据然后上报。所以脚本采集到数据之后,要格式化成某个特定的格式,打印到 stdout。Categraf 支持三种格式:Prometheus、Influx、Falcon,默认是 Influx 格式。

此文章为8月Day4学习笔记,内容来源于极客时间《运维监控系统实战笔记》,推荐该课程。

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

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

相关文章

【图像去噪】基于原始对偶算法优化的TV-L1模型进行图像去噪研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

STM32基础回顾

文章目录 单片机编程的原理GPIO中断EXTI外部中断定时器中断、串口中断 定时器定时器中断配置过程通用定时器输出比较功能:PWM波的生成定时器的输入捕获功能主从触发模式PWMI模式 定时器的编码器接口 DMA简介通信接口USART软件配置流程:1、仅发数据的配置…

交互流程图设计软件都有哪些?

交互流程图是设计行业信息流、观点流或组件流的图形代表。但是市场上应该如何选择各种交互流程图软件呢?如何使用高质量的交互流程图软件来绘制高端氛围的高档流程图?今天,小边给您带来了十个超级实用的交互流程图软件,我希望能帮…

Java中的SPI机制与扫描class原理

文章目录 前言ClassLoaderJAVA SPI机制Spring SPI机制示例原理 如何加载jar包里的class 前言 Java的SPI机制与Spring中的SPI机制是如何实现的? ClassLoader 这里涉及到了class Loader的机制,有些复杂,jdk中提供默认3个class Loader&#x…

解决在mybatis中使用class属性绑定映射文件出现的异常问题~

如下所示&#xff0c;当我在XML文件中通过class属性配置其mapper文件时&#xff0c;出现下述错误 <mappers><mapper class"mappers.userMapper"/> </mappers>错误描述&#xff1a; 解决方法如下所示&#xff1a;在pom.xml文件中添加下述代码 <…

【广州华锐视点】葡萄种植VR虚拟仿真实训平台

随着虚拟现实(VR)技术的不断发展&#xff0c;越来越多的教育领域开始尝试将VR技术应用于教学中。在葡萄栽培这一专业领域&#xff0c;我们开发了一款创新的VR实训课件&#xff0c;旨在为学生提供沉浸式的互动学习体验。本篇文案将为您介绍葡萄种植VR虚拟仿真实训平台所提供的互…

Leetcode-每日一题【剑指 Offer 06. 从尾到头打印链表】

题目 输入一个链表的头节点&#xff0c;从尾到头反过来返回每个节点的值&#xff08;用数组返回&#xff09;。 示例 1&#xff1a; 输入&#xff1a;head [1,3,2]输出&#xff1a;[2,3,1] 限制&#xff1a; 0 < 链表长度 < 10000 解题思路 1.题目要求我们从尾到头反过…

AOP获取切点表达式中注解的属性

文章目录 1、获取Cacheable注解的属性2、获取自定义注解的属性 1、获取Cacheable注解的属性 有个小需求&#xff0c;要在日志中打印支持redis缓存的方法的相关信息&#xff0c;这里切点表达式动词用annotation&#xff0c;后面跟Cacheable注解 Component Aspect Slf4j public…

Curve深陷安全事件,OKLink如何破局

出品&#xff5c;欧科云链研究院 作者&#xff5c;Matthew Lee 7月31号&#xff0c;Curve 在平台表示 Vyper 0.2.15 的稳定币池由于编译器的漏洞所以遭到攻击。具体因为重入锁功能的失效&#xff0c;所以黑客可以轻易发动重入攻击&#xff0c;即允许攻击者在单次交易中执行某…

神策新一代分析引擎架构演进

近日&#xff0c;神策数据已经推出全新的神策分析 2.5 版本&#xff0c;该版本支持分析模型与外部数据的融合性接入&#xff0c;构建全域数据融合模型&#xff0c;实现从用户到经营的全链路、全场景分析。新版本的神策分析能够为企业提供更全面、更有效的市场信息和经营策略&am…

16-1_Qt 5.9 C++开发指南_多语言界面

文章目录 1. 多语言界面设计概述2. tr()函数的使用3. 生成语言翻译文件4. 使用Qt Linguist 翻译 ts 文件5. 调用翻译文件改变界面语言5.1 生成qm文件5.2 项目启动时设置界面语言5.3 动态切换语言 1. 多语言界面设计概述 有些软件需要开发多语言界面版本&#xff0c;如中文版和…

redis原理 4:雷厉风行 —— 管道

大多数同学一直以来对 Redis 管道有一个误解&#xff0c;他们以为这是 Redis 服务器提供的一种特别的技术&#xff0c;有了这种技术就可以加速 Redis 的存取效率。但是实际上 Redis 管道 (Pipeline) 本身并不是 Redis 服务器直接提供的技术&#xff0c;这个技术本质上是由客户端…