机器硬件监控,最简单的方案,没有之一
之前新东方的老师分享了他们通过 Telegraf、Loki、Nightingale 等工具来监控机器硬件状态的方案,具备很强的灵活性、平台性。本文会介绍一个相对轻量的方式,只需要一个二进制+一个脚本即可搞定,给各位朋友提供一种新的选择。
新东方的方案
物理机可以通过带外开启 SNMP,通过 SNMP 可以获取各个硬件模块的健康状态,Telegraf 提供了很多 input、output 插件,我们可以使用 Telegraf 的 snmp input 插件采集硬件状态信息,使用 loki output 插件写入 Loki,然后使用 Nightingale 做告警规则配置( Loki 兼容 Prometheus 的 Querying 接口),产出告警事件,之后可以发给钉钉、企微,或者发给FlashDuty做告警聚合降噪、排班、认领、升级等后续处理。
实操步骤
1. snmp 插件准备
snmp监控主要通过各种oid节点获取对应信息,分为get(单值)、walk(多值),telegraf的snmp插件默认是取单值,如果需要多值,可以找对应的table类型节点进行采集。
(资料图)
# 单值节点[[inputs.snmp.field]]name="uptime"oid=".1.3.6.1.2.1.1.3.0" # 多值节点,table类型[[inputs.snmp.table]]oid = ".1.3.6.1.2.1.31.1.1"name = "interface"
2. OID节点查找
不同型号的物理机,oid节点不同,可以通过对应型号的MIB文件进行查找。除了单独查找每个硬件的状态oid外,MIB文件中一般还能找到服务器整体状态的OID节点,可以直接取这个值,以下例子为浪潮服务器:
正常取值为"OK"、“Normal”,有报警的话取值为"WARNING"、“CRITICAL”。
采集OID=‘INSPUR-MIB::serverSystemHealthTable’(转换数字为’.1.3.6.1.4.1.37945.2.1.2.13.1’),可以先用snmpwalk命令看下取值:
#正常节点snmpwalk -v3 1.1.1.1 INSPUR-MIB::serverSystemHealthTableINSPUR-MIB::serverCurPowerState."" = STRING: "Power On"INSPUR-MIB::serverUIDState."" = STRING: "UID Off"INSPUR-MIB::serverCPUState."" = STRING: "OK"INSPUR-MIB::serverMemoryState."" = STRING: "OK"INSPUR-MIB::serverHDDState."" = STRING: "OK"INSPUR-MIB::serverFANState."" = STRING: "OK"INSPUR-MIB::serverPSUState."" = STRING: "OK"INSPUR-MIB::serverRAIDState."" = STRING: "OK"INSPUR-MIB::serverTempState."" = STRING: "OK"INSPUR-MIB::serverHealthState."" = STRING: "OK"#异常节点snmpwalk -v3 2.2.2.2 INSPUR-MIB::serverSystemHealthTableINSPUR-MIB::serverCurPowerState."" = STRING: "Power On"INSPUR-MIB::serverUIDState."" = STRING: "UID Off"INSPUR-MIB::serverCPUState."" = STRING: "OK"INSPUR-MIB::serverMemoryState."" = STRING: "WARNING"INSPUR-MIB::serverHDDState."" = STRING: "OK"INSPUR-MIB::serverFANState."" = STRING: "OK"INSPUR-MIB::serverPSUState."" = STRING: "OK"INSPUR-MIB::serverRAIDState."" = STRING: "OK"INSPUR-MIB::serverTempState."" = STRING: "OK"INSPUR-MIB::serverHealthState."" = STRING: "WARNING"INSPUR-MIB::serverCPUStandardStatus."" = STRING: "Normal"INSPUR-MIB::serverMemoryStandardStatus."" = STRING: "Warning"INSPUR-MIB::serverHDDStandardStatus."" = STRING: "Normal"INSPUR-MIB::serverFANStandardStatus."" = STRING: "Normal"INSPUR-MIB::serverPSUStandardStatus."" = STRING: "Normal"INSPUR-MIB::serverRAIDStandardStatus."" = STRING: "Normal"INSPUR-MIB::serverTempStandardStatus."" = STRING: "Normal"INSPUR-MIB::serverHealthStandardStatus."" = STRING: "Warning"
通过采集状态可以看出2.2.2.2这个机子memory为报警状态。具体如何配置 Telegraf,如何配置夜莺和 Loki 对接,请参看文章:新东方老师教你使用 Telegraf + Loki + Nightingale 实现硬件监控。
既然 snmpwalk 可以拿到具体内容了,也知道要告警的关键字是 WARNING、CRITICAL,实际不用这么复杂也可以告警。下面我们介绍使用 catpaw 的方案。
catpaw 的方案
catpaw 是一个事件监控工具,提供了多种插件,从 v0.4.0 版本开始,提供了 sfilter 插件,具体逻辑是:通过执行脚本或命令获取输出(stdout),然后对输出的内容做字符串匹配,如果匹配到了,就可以产生告警事件。把告警事件推给 FlashDuty 即可。
1. 安装 catpaw
catpaw 的安装非常简单,只需要下载二进制文件即可,下载地址:https://download.flashcat.cloud/catpaw-v0.4.0-linux-amd64.tar.gz,目前提供的是 linux-amd64 的安装包,如果有其他平台的安装包的需求,可以联系我。
2. 配置 sfilter 插件
sfilter 插件的配置在conf.d/p.sfilter/sfilter.toml
,样例如下:
[[instances]]command = "/path/to/sfilter-scripts/system-health.sh"# # script timeouttimeout = "10s"# check rule namecheck = "Check system health state"# support globfilter_include = ["*WARNING*", "*CRITICAL*"]filter_exclude = []# # gather intervalinterval = "30s"[instances.alerting]## Enable alerting or notenabled = true## Same functionality as Prometheus keyword "for"for_duration = 0## Minimum interval duration between notificationsrepeat_interval = "5m"## Maximum number of notificationsrepeat_number = 3## Whether notify recovery eventrecovery_notification = true## Choice: Critical, Warning, Infodefault_severity = "Warning"
3. 编写脚本
system-health.sh 脚本是需要我们准备的,比如就简单的探测一下 192.168.3.4 机器的系统健康状态(以浪潮机器举例),脚本内容如下:
#!/bin/shsnmpwalk -v2c -c public 192.168.3.4 INSPUR-MIB::serverSystemHealthTable
4. 配置事件推送地址
catpaw 只负责产生事件,不负责事件的后续处理(告警聚合降噪、认领升级、排班、多渠道触达等),这些功能交由FlashDuty,在 FlashDuty 的协作空间中创建一个自定义事件的集成,点击就可以看到推送地址了:
把截图中这个 URL 配置到 catpaw 的 config.toml 中。
5. 启动 catpaw
nohup ./catpaw --configs conf.d &> catpaw.log &
如果服务器有硬件故障,就会产生告警了,完活!enjoy…make a better world :)
关键词:
您可能也感兴趣:
为您推荐
机票里面包含保险吗?飞机保险有必要买吗?
辽宁扩大缓缴社保费政策实施范围 补缴期间免收滞纳金
近十年财险业务快速发展 财产保险业风险保障水平不提升
排行
最近更新
- 机器硬件监控,最简单的方案,没有之一
- “爸”气十足护肤礼:父亲节送他片仔癀牌男士净爽控油系列
- 2023中山市民众新平幼儿园招生报名公告_全球快消息
- 天圆地方面积在线计算 天圆地方面积计算公式-天天观察
- 焦点简讯:中煤能源:5月份商品煤销量2278万吨
- 【速看料】2023年西安市小升初摇号时间
- 中华联合财险肇庆中心支公司专注新型农业保险产品|全球观点
- 北京医保报销比例2023年最新(城镇职工+城乡居民) 世界新消息
- 深圳市鑫立凯科技有限公司宣布新战略布局,开拓新业务
- 虎牙发布2023年Q1财报:探求增长机遇创造可持续价值
- 环球关注:意见建议内容_意见建议的格式及范文
- 沙参养胃汤的功效有哪些?沙参配什么不伤脾胃?
- 熊猫的简介资料_熊猫的简介
- 今天,冲高回落!老人卖芹菜获利14元被罚10万?法院判了
- 【新视野】毕业作品是如何炼成的:长沙学院应用型视频文创人...
- 什么是坏死性龈口炎?坏死性牙龈炎的临床表现有哪些?
- 手机投屏到墙上不用投影仪_qq勋章墙手机版|天天短讯
- 频繁打嗝怎么办?打嗝好几天了有危险吗?
- 【世界热闻】天键股份跌4.1%创新低 超募6.2亿元华英证券保荐
- 超过预产期怎么办?哪些信号暗示快生了?
- 系统性红斑狼疮寿命是多少年?红斑狼疮有终生不复发的吗?
- 什么是镭射祛斑?激光祛斑能维持几年?
- 怀孕天数如何计算?怀孕几天能测出来?
- 墨尔本留学住宿选哪里?提前预定Iglu Melbourne Central,...
- 什么是多发性乳腺纤维瘤?纤维瘤一定要做手术切除吗?
- 每日看点!戒酒后失眠怎么办?
- 外面绿色里面橘色有籽的水果是什么?
- 天天热讯:圆白菜土豆粉条怎么炒好吃呢
- 孕中期什么睡姿比价好?怀孕睡觉的正确姿势有哪些?
- 什么黑色水果可以生吃?|全球速递
今日要闻
- 深圳市鑫立凯科技有限公司宣布新战略布局,开拓新业务
- 虎牙发布2023年Q1财报:探求增长机遇创造可持续价值
- 北京医保报销比例2023年最新(城镇职工+城乡居民) 世界新消息
- 墨尔本留学住宿选哪里?提前预定Iglu Melbourne Central,享墨尔本CBD、26F小高层绝佳体验
- 【世界热闻】天键股份跌4.1%创新低 超募6.2亿元华英证券保荐
- 焦点播报:丰台区数字经济迈上新台阶 去年实现增加值达658.9亿元
- 更高效率,更低成本,一文读懂景栗科技多触点随访模式
- 越秀地产召开2023年合作伙伴大会暨高质量发展大会,构建共生共荣合作新生态
- 家太太再获头部资本注资,家政行业大有可为!
- 莫言:人不能把自己看低了,这是爹晚年悟出的道理。_世界通讯