首页 > 其他分享 >Prometheus(普罗米修斯)监控系统 - 2、网络等硬件设备监控(SNMP)

Prometheus(普罗米修斯)监控系统 - 2、网络等硬件设备监控(SNMP)

时间:2024-09-08 17:49:37浏览次数:4  
标签:SNMP 4.1 监控 1.3 snmp 6574.2 Prometheus 6.1

文章目录


前言

下列就以群晖 NAS、QNAS、华为防火墙设备为例子,开启 SNMP 服务并部署 Exporter 进行监控,其中包括 MIB 文档解读、Exporter 镜像制作 + 部署、数据抓取测试等。


一、群晖 NAS

1、开启 SNMP 服务

浏览器登录 群晖管理后台,点击 “控制面板” → “终端机和 SNMP” → “SNMP” → 勾选“启用 SNMP 服务” + 勾选 “SNMPv1、SNMPv2c 服务” )+ 填写 “社群” 信息(可理解为密码)→ 点击“应用”生效

2、测试

在另一台设备(Linux)可访问该群晖 NAS (UDP:161端口),使用 snmpwalk 命令测试,若没有这通过命令安装:
Centos/Redhat:

sudo yum update
sudo yum install net-snmp-utils

Ubuntu/Debian:

sudo apt update
sudo apt install snmp

测试命令:

snmpwalk -v 2c -c 社群密码 群晖IP

若返回一大串 iso. 开头的信息,则表示正常,否则请检查网络、社群密码、群晖IP

3、MIB 文档

群晖管理后台SNMP 配置页面,点击最下方访问 Synology 网站 访问Synology MIB 文档
或 Google 搜索 群晖 SNMP MIB 文档

文档访问链接如下:
群晖 SNMP MIB Guide 文档

查阅文档,找到自己所监控信息的每一项值所对应的 OID 和 返回值。

比如说,我要监控这台 NAS 的硬盘,在文档的p8-9页 OID: .1.3.6.1.4.1.6574.2 中有说明:
.13为硬盘健康状态,.1为硬盘索引号,.9为硬盘坏道数

PS:
感觉文档有点坑,光看文档会误以为 OID .1.3.6.1.4.1.6574.2 直接加上 .13(后缀)就能获取状态值,其实不是的,使用 snmpwalk 命令查询 .1.3.6.1.4.1.6574.2.13

snmpwalk -v 2c -c 社群密码 群晖IP 1.3.6.1.4.1.6574.2.13

返回报错:

iso.3.6.1.4.1.6574.2.13 = No Such Object available on this agent at this OID

通过查阅 .1.3.6.1.4.1.6574.2 的返回值,才知道其实它是 .1.3.6.1.4.1.6574.2.1.1.13,命令:

snmpwalk -v 2c -c 社群密码 群晖IP 1.3.6.1.4.1.6574.2

4、编写 snmp.yml

知道自己抓取的 OID 后,就可编写 snmp.yml 了(snmp-exporter 用于过滤 snmp 信息),内容如下:

syno_mib:
  version: 2
  walk:
    - 1.3.6.1.4.1.6574.2.1.1
  metrics:
    - name: disk_health
      oid: 1.3.6.1.4.1.6574.2.1.1.13
      type: gauge
      help: "Disk health status"
      indexes:
        - labelname: ifIndex
          type: gauge
      lookups:
        - labels:
            - ifIndex
          labelname: disk_name
          oid: 1.3.6.1.4.1.6574.2.1.1.1
          type: DisplayString
    - name: disk_smart
      oid: 1.3.6.1.4.1.6574.2.1.1.9
      type: gauge
      help: "Disk smart status"
      indexes:
        - labelname: ifIndex
          type: gauge
      lookups:
        - labels:
            - ifIndex
          labelname: disk_name
          oid: 1.3.6.1.4.1.6574.2.1.1.1
          type: DisplayString
  auth:
    community: 社群

命令解释:

  1. syno_mib: 定义了一个 SNMP 采集的配置项,名字为 syno_mib。

  2. version: 2 指定了 SNMP 的版本为 2,表示这个配置使用 SNMP v2 协议。

  3. walk: walk 是用来遍历指定的 OID 子树并抓取所有相关的 SNMP 数据。(这个get用不上)

  • 1.3.6.1.4.1.6574.2.1.1 这是需要遍历的 OID,代表这个 OID 及其子节点的数据将会被抓取。1.3.6.1.4.1.6574.2.1.1 通常与磁盘信息相关。
  1. metrics: 定义了要采集的 SNMP 指标。

    • name: disk_health 定义了一个名为 disk_health 的指标,用来表示磁盘的健康状态。
  2. oid: 1.3.6.1.4.1.6574.2.1.1.13 指定了获取 disk_health 指标的 OID,1.3.6.1.4.1.6574.2.1.1.13 是这个健康状态的具体 OID。

  3. type: gauge 指定了指标类型为 gauge,表示这个值是一个可以上下浮动的数值类型。

  4. help: “Disk health status” 这是一段帮助信息,说明了这个指标的用途,表示它用于显示磁盘的健康状态。

  5. indexes: 指定了该指标需要哪些索引值来标识。(这里开始往下的目的都是按 1.3.6.1.4.1.6574.2.1.1.1硬盘索引号划分返回的状态值)

  • labelname: ifIndex 定义了一个标签名 ifIndex,通常是 SNMP 的接口索引,用于区分不同的磁盘。 type: gauge 说明这个索引值是一个 gauge 类型的值。
  1. lookups: 定义了一个映射关系,用于将索引值转换为可读的名称。
  • labels: 定义了映射时需要使用的标签。
  • ifIndex 指定使用 ifIndex 标签。
  1. labelname: disk_name 定义了一个新的标签 disk_name,用于标识磁盘的名称。

  2. oid: 1.3.6.1.4.1.6574.2.1.1.1 指定了用于获取磁盘名称的 OID,1.3.6.1.4.1.6574.2.1.1.1 用于查找磁盘的显示名称。

  3. type: DisplayString 指定了该 OID 返回的值是一个 DisplayString 类型,即可显示的文本字符串。

5、运行snmp-exporter

dockerhub 上 Prometheus 官方做了个 snmp-exporter 镜像,就叫 prom/snmp-exporter,直接 docker pull 拉下来运行即可。

# 拉取
docker pull prom/snmp-exporter:v0.26.0
# 在台能访问群晖 NAS 的设备上运行
docker run -d \
  -v /path/to/snmp.yml:/etc/snmp_exporter/snmp.yml \
  -p 9116:9116 \
  prom/snmp-exporter:v0.26.0

PS:最好使用固定版本,否则每次拉取都是最新版本的

IP + 端口号 在浏览器访问,Target 栏 输入群晖 NAS 的 IPModule 栏 输入自定义的采集项名,如,上面用的是 syno_mib,若能返回数据,则成功,否则检查IP地址、网络、采集项名等。

PS:snmp-exporter抓取数据通俗点来说,就是在snmp-exporter自身配好过滤规则,通过输入对方ip再去获取对方snmp的数据。

6、加入Prometheus监控

修改普罗米修斯的 /etc/prometheus/prometheus.rules 文件,追加如下内容并重启服务。

  - job_name: 'snmp-syno-nas'
    scrape_interval: 5m
    scrape_timeout: 3m
    static_configs:
      - targets:
        - 群晖NAS IP1
        - 群晖NAS IP2
        - 群晖NAS IP3
        - 群晖NAS IP......
    metrics_path: /snmp
    params:
      module: [syno_mib]
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 'syno-nas:9116'

在浏览器访问 Prometheus ,点击 “Status” → “Targets” 中若能发现 “snmp-syno-nas” 栏,且设备数量对得上,State 为 UP,则代表已接入普罗米修斯监控了。


二、QNAP NAS

1、开启 SNMP 服务

浏览器登录 QNAP 管理后台,点击“控制台” → “SNMP” → 勾选 “启用 SNMP 服务器” + 选择“SNMP 版本”(这里勾选的是“SNMP V1/V2”)+ 填写“社区”(可理解为密码)→ 点击“应用”生效

2、SNMP MIB 文件下载

同样在 SNMP 页面,点击 SNMP MIB 的 “下载” 并进行查阅。
这里和群晖不同,它只提供了 *.mib的文件下载(QNAP 官方文档也没找到)。

3、generate的使用

主要用generate来对*.mib生成snmp.yml文件

generator使用说明
generator下载地址

4、运行snmp-exporter

5、加入Prometheus监控


三、华为防火墙

1、开启 SNMP 服务

2、查阅文档

3、等我更新。。。。


其他

报警规则、看板制作、消息推送,由后面的更新的Prometheus+Grafana的部署篇章中说明。

标签:SNMP,4.1,监控,1.3,snmp,6574.2,Prometheus,6.1
From: https://blog.csdn.net/weixin_41004518/article/details/141963162

相关文章

  • kubelet监控worker节点如何实现
    Kubelet是Kubernetes中的关键组件,负责在每个工作节点(workernode)上管理容器和Pod。监控工作节点的状态和性能是Kubelet的重要功能之一。以下是Kubelet监控工作节点的实现原理和方式:1.NodeStatusReporting心跳机制:Kubelet定期向KubernetesAPIServer发送心跳信......
  • Prometheus监控之RabbitMQ
    1RabbitMQ监控方式1.1安装并配置RabbitMQ1.1.1安装RabbitMQcurl-shttps://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh|sudobashcurl-shttps://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh|sudobashyum......
  • Intel Watchdog Timer Driver (Intel WDT) 是一种硬件监控驱动程序,用于系统监控和故障
    IntelWatchdogTimerDriver(IntelWDT)是一种硬件监控驱动程序,用于系统监控和故障恢复。这个驱动程序的主要功能是提供硬件级的看门狗定时器,用于监测系统的健康状况并在系统出现故障时进行恢复或重启。以下是关于IntelWDT驱动程序的一些关键点:1. 功能与目的硬件监控:I......
  • Zabbix02 Zabbix告警通知, 故障自愈, 主动被动模式, JAVA应用网络设备等的监控及分布
    图形Graphs#点击web端配置下的模板,选择模板对应的图形,点击右上角创建图标#输入名称TCP状态#监控项选择添加,最后点添加#点击监测下关联该模板的主机,点击图形,就能看到添加的图形#仪表盘为图形的组合#配置下模板里,点击仪表盘栏,点击创建仪表盘,构件可把之前画的图添加出......
  • 828华为云征文 | 华为云Flexus X实例上实现Docker容器的实时监控与可视化分析
    Docker容器监控之CAdvisor+InfluxDB+Granfana需要了解本文章主要讲述在华为云FlexusX实例上搭建开源的容器管理平台,使用的WebUI界面来简化和优化容器及集群的管理和监控选择合适的云服务器:本文采用的是华为云服务器FlexusX实例(推荐使用)连接方式:本文通过本地sh......
  • Prometheus监控之Haproxy
    1Haproxy监控方式在haproxy2.0版本之前,prometheus提供了haproxy_exporter来对haproxy进行监控,haproxy从2.0版本开始不再需要使用haproxy_exporter进行监控,从haproxy2.0版本开始,HAProxy内置了对Prometheus的⽀持。这意味着HAProxy能够直接提供兼容Prometheus的指标格式,⽆需依赖......
  • prometheus学习笔记之kube-state-metrics
    一、kube-state-metrics简介Kube-state-metrics:通过监听APIServer生成有关资源对象的状态指标,比如Deployment、Node、Pod,需要注意的是kube-state-metrics只是简单的提供一个metrics数据,并不会存储这些指标数据,所以我们可以使用Prometheus来抓取这些数据然后存储,......
  • shell脚本监控一个进程号,进程号没有就输出error
    你可以使用一个简单的Shell脚本来监控进程号(PID),如果进程不存在则输出error。以下是一个示例脚本:#!/bin/bash#输入要监控的进程号pid=$1#检查进程是否存在ifps-p$pid>/dev/nullthenecho"Process$pidisrunning."elseecho"error:Process$pid......
  • 厨师帽识别 后厨厨师帽佩戴情况实时监控-明厨亮灶
    厨师帽识别后厨厨师帽佩戴情况实时监控对于各种厨房工作自然环境下的安全健康难题,全自动识别餐厅厨房工作人员的厨师帽是不是佩戴,是否正确佩戴,是不是有耗子/猫/狗等小动物侵入,外来人员侵入后厨等。适用遍布在全国各地的餐厅厨房集中化实时监控管理方法,能够处理厨房卫生监管盲区大......
  • 加油站智能视频监控系统
    加油站智能视频监控系统赋能传统监控设备,主要对于加油站抽烟、手机、用火、浓烟、卸油情况下的静电释放时长、操作人员值勤、消防灭火器置放,立即将操作错误推至省部级应急平台。加油站智能视频监控系统可以对加油站监控范围内的加油区和卸油区、抽烟、手机、用火、浓烟等异常状态......