热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

zabbix–SNMP硬件设备监控

SNMP协议介绍简单网络管理协议(SNMP:SimpleNetworkManagementProtocol)是由互联网工程任务组(IETF:InternetEngineeringT

SNMP协议

介绍


简单网络管理协议(SNMP:Simple Network Management Protocol)是由互联网工程任务组(IETF:Internet Engineering Task Force )定义的一套网络管理协议。该协议基于简单网关监视协议(SGMP:Simple Gateway Monitor Protocol)。利用SNMP,一个管理工作站可以远程管理所有支持这种协议的网络设备,包括监视网络状态、修改网络设备配置、接收网络事件警告等。 虽然SNMP开始是面向基于IP的网络管理,但作为一个工业标准也被成功用于电话网络管理。



组成

SNMP Agent:负责处理snmp请求,主要包括get、set等操作。可通过此接口查询设备的运行状态(使用较多),或者变更配置(使用较少),默认使用UDP 161端口;

SNMP Trap:snmp通知消息,主动发送消息到管理端。如设备故障,端口down等都会实时发送消息到接收端。默认使用UDP 162端口;

SNMP MIB:MIB代表管理信息库,是按层次结构组织的信息的集合,定义了设备内被管理对象的属性。


方式一 SNMP Oid

说明


通过snmp oid的方式进行硬件设备的状态监控。其所使用的为snmp agent get的方式去获取硬件设备的状态,所使用端口默认为161端口。部署流程如下:

1、部署zabbix时需要开启snmp模块,rpm包默认开启,如果是源码包部署则需要加上--with-net-snmp参数;

2、找到对应硬件设备的oid文档(各个厂商的不一样,且各个厂商的不同机型的不一样,甚至同一机型的不同hdm版本也会存在oid不一致的情况);

3、首先被监控的硬件设备上开启snmp服务,设定所使用的snmp协议(目前广泛使用的是2c),设定团体字;

4、配置安全策略,允许zabbix server或者proxy访问被监控设备的161端口;

5、zabbix server或者proxy上安装snmp服务工具(如net-snmp工具),进行测试对应oid是否可以正常获取数据;

6、zabbix上主机添加,oid监控项添加、触发器添加等(这里一般设置为对应设备的模板)。



示例


这里以监控硬件服务器(浪潮SA5212M5)示例



配置团体字


登陆需要被监控的硬件服务器的带外,配置snmp团体字。



测试连通性


zabbix server或者proxy安装测试工具测试是否可以获取数据,这里使用snmpwalk进行测试,软件包名:net-snmp-utils

官网下载地址:http://www.net-snmp.org/download.html

可以直接通过yum进行安装,也可以通过官网下载进行安装。


1、添加epel源

# yum install epel-release -y

2、安装net-snmp-utils

# yum install net-snmp-utils -y

3、根据获取到的oid进行测试是否可以获取到数据,比如这里获取机器的开关机状态

# snmpwalk -v 2c -c Tencent@22 10.55.128.1 1.3.6.1.4.1.37945.2.1.2.13.1.1.1
SNMPv2-SMI::enterprises.37945.2.1.2.13.1.1.1.0 = STRING: "Power On"

snmpwalk命令格式及参数说明:

snmpwalk -v snmp协议版本 -c 团体字名 目标IP地址 OID号
注意:如果指定具体OID号,则获取所有OID信息

zabbix添加主机

添加主机 【配置】——>【主机】——>【创建主机】

设置相关信息(所属主机组、interface等,然后点击添加)


创建监控项

创建监控项【配置】——>【主机】——>(找到上面创建的主机点击进入)——>【监控项】——>【创建监控项】

验证最新数据(查看最新获取的数据是否为想要的信息及是否能正常拿到数据)【监测】——>【最新数据】


创建触发器

创建触发器【配置】——>【主机】——>(找到上面创建的主机点击进入)——>【触发器】——>【创建触发器】

添加结果如下图所示:

到此,基于一个snmp oid的监控项即配置完成。


模板制作


一般生产环境下,如果采用snmp agent的方式对硬件设备的监控,都会对一个厂商的对应设备所关注的oid监控值创建一个模板(避免成百上千的机器添加还需要一个一个去配置监控项等),然后再通过zabbix提供的API接口进行批量主机的添加并绑定该模板。

如下:Template Module Inspur SERVER-NAME SA5212M5 SNMP模板,对浪潮SA5212M5机型制作的模板,包含了11个监控项、以及16个自动发现规则。用于对服务器硬件(CPU、内存、磁盘、风扇、电源、控制器、Raid)等状态进行了监控。


告警信息展示:

image-20220322142012301


总结

基于snmp agent oid方式进行硬件设备的监控,有以下几个优缺点:

优点:

​ 1、监控数据信息全面,可以获取到很多控制器的状态、温度、服务器基本信息等指标。

​ 2、可以根据获取到的指标绘制对应可视化大盘等。及时了解硬件组件的各个状态。

缺点:

​ 介于国内各厂商的oid不统一(甚至各厂商的不同型号的服务器oid、同一型号服务器不同hdm版本oid也不统一)的情况下,如果一个项目采用了不同厂商不同型号的硬件设备,则需要去配置不同的监控模板(配置一个模板,需要对对应oid文档每个去核对其值以及数据类型),这样工作量就会变得巨大。


方式二 SNMP Trap

说明


通过snmp trap的方式进行硬件设备的状态监控。其本质并不是去获取硬件设备指标的详细数据,而是通过接收硬件设备自带的snmp trap告警机制接收硬件设备发出的异常告警通知,再交由zabbix进行处理并发送出来。如果有邮件服务器且不需要使用zabbix,而是直接使用邮件服务器发出告警信息进行通知。

Zabbix中接收SNMP trap旨在使用snmptrapd和内置机制之一来传递trapZabbix - 一个perl脚本或SNMPTT

这里以zabbix trap方式接收trap的工作流程作一说明:



  1. snmptrapd 收到trap

  2. snmptrapdtrap传递给SNMPTT或调用Perl trap接收器

  3. SNMPTTPerl trap接收器解析,格式化并将trap写入文件

  4. Zabbix SNMP trap读取并解析trap文件

  5. 对于每个trap,Zabbix发现主机接口与接收的trap地址匹配的所有“SNMP trap”监控项。请注意,在匹配期间只使用主机接口中选定的“IP”“DNS”

  6. 对于每个找到的监控项,将trap“snmptrap[regexp]”中的regexp进行比较。 trap设置为all匹配项的值。如果没有找到匹配的监控项,并且有一个“snmptrap.fallback”监控项,则将trap设置为该监控项的值。

  7. 如果trap未设置为任何监控项的值,Zabbix默认记录未匹配的trap。(通过管理 → 常规 → 其它中的“记录未匹配的SNMP trap(Log unmatched SNMP traps)”进行配置。)

配置流程如下:

1、部署zabbix时需要开启snmp模块,rpm包默认开启,如果是源码包部署则需要加上--with-net-snmp参数;

2、找到对应硬件设备的mib库文件(各个厂商的不一样,且各个厂商的不同机型的不一样);

3、zabbix server或者proxy部署snmpttsnmptrap

4、转换mib文件;

5、被监控设备上配置snmp trap接收地址;

6、zabbix server或者proxy读取接收trap文件并创建主机及创建接收监控项;

7、根据监控项配置告警策略。



示例


这里以监控硬件服务器(浪潮NF8260M5)为例



安装snmptt

1、添加epel源

# yum install epel-release -y

2、安装snmptt及相关软件

# yum install snmptt perl-Sys-Syslog perl-DBD-MySQL -y

转换MIB文件


snmptt提供了snmpttconvertmib工具,snmpttconvertmib是一个Perl脚本,它将读取MIB文件并将TRAP-TYPE(v1)NOTIFICATIONATION-TYPE(v2)定义转换为SNMPTT可读的配置文件,从而实现对trap消息的翻译。


1、上传对应硬件设备的mib库到服务器,并放置到/usr/share/snmp/mibs/目录(centos7默认的mibs文件路径,放置此处方便统一管理)

# cp inspurAlert_v2.3_20190520.mib /usr/share/snmp/mibs/

2、进行转换

/usr/bin/snmpttconvertmib --in=/usr/share/snmp/mibs/inspurAlert_v2.3_20190520.mib --out=/etc/snmp/snmptt.conf.inspur --net_snmp_perl


  • --in:表示mib源文件

  • --out:表示输出文件的地址

输出结果如下所示,表示转换成功:

3、转换文件的修改,由于这里转换出来的为标准文件,不符合zabbix snmptrap文件格式,因此还需要执行以下命令对配置文件进行稍加修改。

# ll /etc/snmp/snmptt.conf.inspur
-rw-r--r-- 1 root root 1234142 Mar 21 12:18 /etc/snmp/snmptt.conf.inspur
# sed -i 's/FORMAT/FORMAT ZBXTRAP $aA/g' /etc/snmp/snmptt.conf.inspur

其实就是添加一个ZBXTRAP字符,否则会导致后续配置时候zabbix server日志出现如下错误

25926:20220322:172836.320 invalid trap data found "Tue Mar 22 17:28:34 2022 inspurServerTRAPObject Normal "Status Events" UNKNOWN - 2022-03-22 09:18:39 Inspur NF8260M5 SNMPTrap_test Platform Alert 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Information 219636054 Info SNMPTrap Test Event

补充说明

由于某些设备的mib可能有多个,建议转换为一个配置文件中,便于管理,这样可以使用下面的批量命令进行转换

for i in inspurAlert* do /usr/bin/snmpttconvertmib --in=$i --out=/etc/snmp/snmptt.conf.inspur --net_snmp_perl; done

配置snmptt


snmptt配置文件有2个:



  • /etc/snmp/snmptt.ini:snmptt主配置文件

  • /etc/snmp/snmptt.conf:系统默认的策略文件,包括一些基本的端口up/down的配置


修改snmptt.ini添加上面生成的/etc/snmp/snmptt.conf.inspur

# vim /etc/snmp/snmptt.ini
mode = standalone
net_snmp_perl_enable = 1
date_time_format = %Y/%m/%d %H:%M:%S
translate_log_trap_oid = 2 # 0:数字形式显示OID,1:显示OID名称,2:显示OID所属模块名及其名称
snmptt_conf_files = </etc/snmp/snmptt.conf
/etc/snmp/snmptt.conf.inspur
END

安装snmptrap


该软件包同样在epel源中有。


# yum install -y net-snmp net-snmp-utils net-snmp-perl net-snmp-libs net-snmp-agent-libs net-snmp-devel

配置snmptrap


Snmp trap 消息为主动通知,因此需要配置服务器来接收设备发送过来的 snmp trap 消息。net snmp接收trap消息后,通过traphandle调用snmptt来对trap消息进行处理。


1、修改/etc/sysconfig/snmptrapd文件

# vim /etc/sysconfig/snmptrapd
OPTIOnS="-m +ALL -On"

2、修改/etc/snmp/snmptrapd.conf配置文件(authCommunity可以配置多个)

# vim /etc/snmp/snmptrapd.conf
authCommunity execute public
traphandle default /usr/sbin/snmptt

3、启动snmptrap服务并加入开机启动

# systemctl enable snmptrapd --now

4、验证状态

# systemctl status snmptrapd
● snmptrapd.service - Simple Network Management Protocol (SNMP) Trap Daemon.
Loaded: loaded (/usr/lib/systemd/system/snmptrapd.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2022-03-22 16:17:04 CST; 2s ago
Main PID: 7158 (snmptrapd)
CGroup: /system.slice/snmptrapd.service
└─7158 /usr/sbin/snmptrapd -m +ALL -On -f
Mar 22 16:17:04 zabbix-server systemd[1]: Starting Simple Network Management Protocol (SNMP) Trap Daemon....
Mar 22 16:17:04 zabbix-server snmptrapd[7158]: NET-SNMP version 5.7.2
Mar 22 16:17:04 zabbix-server systemd[1]: Started Simple Network Management Protocol (SNMP) Trap Daemon..

被监控设备配置trap

1、通过登陆带外,配置snmp trap

2、观察snmptt日志,验证是否可以接收到消息


Zabbix配置


修改zabbix server配置文件或者proxy配置文件,开启snmptrapper处理


1、配置文件修改

# vim /etc/zabbix/zabbix_server.conf
SNMPTrapperFile=/var/log/snmptt/snmptt.log
StartSNMPTrapper=1

2、重启zabbix server

# systemctl restart zabbix-server

配置snmptrap item


在zabbix上添加一个主机


1、添加主机

2、添加监控项,找到上面创建的主机,点击进去,创建一个监控项

3、验证是否zabbix是否收到信息(在被监控设备上发出测试告警信息)


配置触发器

说明:这里名称采用了zabbix的宏变量及使用了正则对告警信息中的内容进行提取。

问题表现形式:通过在最新的数据中(字符串)查找Critical,如果找到了则进行告警信息发生。

恢复表达式:通过在最新的数据中(字符串)查找Recovery,如果找到了则表示该告警恢复。

告警信息展示:

image-20220322175904499


总结

基于snmp trap方式进行硬件设备的监控,有以下几个优缺点:

优点:

​ 1、配置相对简单,只需配置一个监控项,但是触发器需要配置n个,需要不断优化,去根据告警信息去进行正则匹配。

缺点:

​ 无法实时了解硬件设备运行状态,如温度、电压等,无法绘制可视化大盘。

人生是条无名的河,是浅是深都要过;

人生是杯无色的茶,是苦是甜都要喝;

人生是首无畏的歌,是高是低都要唱。



推荐阅读
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 在单位的一台4cpu的服务器上部署了esxserver,挂载了6个虚拟机,目前运行正常。在安装部署过程中,得到了cnvz.net论坛精华区 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 服务器上的操作系统有哪些,如何选择适合的操作系统?
    本文介绍了服务器上常见的操作系统,包括系统盘镜像、数据盘镜像和整机镜像的数量。同时,还介绍了共享镜像的限制和使用方法。此外,还提供了关于华为云服务的帮助中心,其中包括产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题和视频帮助等技术文档。对于裸金属服务器的远程登录,本文介绍了使用密钥对登录的方法,并提供了部分操作系统配置示例。最后,还提到了SUSE云耀云服务器的特点和快速搭建方法。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • SQL Server 2008 到底需要使用哪些端口?
    SQLServer2008到底需要使用哪些端口?-下面就来介绍下SQLServer2008中使用的端口有哪些:  首先,最常用最常见的就是1433端口。这个是数据库引擎的端口,如果 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • IP、ARP、TCP、UDP、ICMP、DNS、路由协议、DHCP协议的缺陷,容易受到的攻击,以及防御措施1、IP协议1.1、介绍: ... [详细]
  • 1、概述首先和大家一起回顾一下Java消息服务,在我之前的博客《Java消息队列-JMS概述》中,我为大家分析了:然后在另一篇博客《Java消息队列-ActiveMq实战》中 ... [详细]
author-avatar
gavinwu
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有