机器硬件监控,最简单的方案,没有之一

这篇具有很好参考价值的文章主要介绍了机器硬件监控,最简单的方案,没有之一。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

之前新东方的老师分享了他们通过 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::serverSystemHealthTable
INSPUR-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::serverSystemHealthTable
INSPUR-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 timeout
timeout = "10s"
# check rule name
check = "Check system health state"

# support glob
filter_include = ["*WARNING*", "*CRITICAL*"]
filter_exclude = []

# # gather interval
interval = "30s"

[instances.alerting]
## Enable alerting or not
enabled = true
## Same functionality as Prometheus keyword 'for'
for_duration = 0
## Minimum interval duration between notifications
repeat_interval = "5m"
## Maximum number of notifications
repeat_number = 3
## Whether notify recovery event
recovery_notification = true
## Choice: Critical, Warning, Info
default_severity = "Warning"

3. 编写脚本

system-health.sh 脚本是需要我们准备的,比如就简单的探测一下 192.168.3.4 机器的系统健康状态(以浪潮机器举例),脚本内容如下:

#!/bin/sh
snmpwalk -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 :)文章来源地址https://www.toymoban.com/news/detail-482381.html

到了这里,关于机器硬件监控,最简单的方案,没有之一的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 全网最全ADB命令,没有之一

    和优秀的人在一起,会被他的趣味、热情所感染、喜欢探索世间的一切事物,并从中得到感悟与成长。 注意:本篇文章中所展示的案例是在Mac book 运行。 ADB,全名Android Debug Bridge,是Android提供的一个通用的调试工具,是一个C/S架构的命令行工具,通过这个工具,使得我们的

    2023年04月09日
    浏览(33)
  • 监控商品库存方法之一——Selenium

    日常遇到一些商品比较抢手的情况,经常无库存。所以总希望能够监控它的库存,并在有库存的时候进行提醒。那以某伊份为例,尝试基于Python的Selenium模块的监控方法。 01 什么是Selenium Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用

    2024年02月12日
    浏览(35)
  • React Native环境配置搭建(全网最全 没有之一)

    小编在配置RN环境的时候,遇到了各种 坎儿,在发布这篇之前终于是搞好了,特此在这把详细过程记录下,以便造福各位。(一键三连点关注,关注小夏不迷路) 准备工作:必须安装的依赖有:Node、JDK 和 Android Studio。 1)node必须在14以上,可以去 node官网下载。 2)个人我推

    2024年02月02日
    浏览(48)
  • git commit之前,没有pull最新代码,导致无法push代码如何解决?——git三板斧

    如果在 git commit 之前没有 pull 最新代码,再进行 push 操作可能会出现冲突,导致无法 push 代码。此时, git 会提示类似以下的错误信息: 这个错误提示说明了更新被拒绝,因为远程仓库包含了本地仓库没有的工作。这通常是由于其他人已经推送了代码,或者你在另一个地方进

    2024年02月13日
    浏览(114)
  • 这可是全网网工基础知识最详细的整理,没有之一

    网络工程师是指从事计算机网络系统的规划、设计,网络设备的软硬件安装调试,网络系统的运行、维护和管理的中级技术人员。根据中国IT行业协会公布的调查数据显示,网络工程师目前一年工作经验的月薪一般能够达到6000-8000元,一些高级网络工程师年薪普遍高达10万。

    2024年02月02日
    浏览(45)
  • 可能是迄今为止最好用的WPF加载动画功能(没有之一)

    前言 当我们在开发应用程序时,用户体验往往是至关重要的一环。在应用程序加载大量数据或执行复杂操作时,为用户提供一个良好的加载体验变得至关重要。加载动画是其中一个有效的方式,它不仅能够告知用户应用程序正在进行工作,还能够缓解用户在等待过程中的焦虑

    2024年03月28日
    浏览(46)
  • 机器学习之前向传播(Forward Propagation)和反向传播(Back propagation)

    前向传播(Forward Propagation)和反向传播(Back propagation)是深度学习中神经网络训练的两个关键步骤。 前向传播(Forward Propagation) : 定义 :前向传播是指从神经网络的输入层到输出层的过程,通过输入数据和当前的模型参数,计算网络的输出。 步骤 :在前向传播中,数据

    2024年02月10日
    浏览(50)
  • 【机器学习】十大算法之一 “PCA”

      作者主页: 爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主 爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域. https://blog.csdn.net/Code_and516?type=blog 个人简介:打工人。 持续分

    2024年02月11日
    浏览(33)
  • 【机器学习】十大算法之一 “线性回归”

      作者主页: 爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主 爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域. https://blog.csdn.net/Code_and516?type=blog 个人简介:打工人。 持续分

    2024年02月09日
    浏览(39)
  • 【机器学习】十大算法之一 “逻辑回归”

      作者主页: 爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主 爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域. https://blog.csdn.net/Code_and516?type=blog 个人简介:打工人。 持续分

    2024年02月10日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包