zabbix布署实践【7H3C网络设备监控模版制作思路】

zabbix布署实践【7H3C⽹络设备监控模版制作思路】
我们知道,zabbix安装后⾃带Template OS Linux 模版已满⾜了绝⼤部分Linux服务器的基础环境监控,只是我们在其模版上稍微修改,可配合将SWAP监控取消,另存为⼀个叫OS Linux noswap的模版就可以我们的VM使⽤。
但是⽹络设备呢,zabbix的官⽹上提供了很多的关于⽹络设备的模版,但⼤多都是思科的模版。
因上次的斯诺登事件后,我们国⼈的⾃⼰企业的⽹络内,倾向于使⽤各⼤⼚商的⽹络设备,不拘⼀格。有思科,有华为,有Juniper,有H3C等等,但问题来了,为什么⽹络设备的监控模版不通⽤呢?
那就是OID---每个⼚家的设备在设计之初,除了底层⽤了公有OID库,上层就⾃成⼀套私有OID,这有点类似于数据库的表结构+字段名称的概念,各有各的标准
我们的⽹络设备的常规监控是通过SNMP协议来获取的,协议是标准的,但OID有可能不同,这就造了南向API的调⽤接⼝不同。因此⽹络设备的监控模版,绝⼤部分不通⽤,除⾮你的⽹络设备买的刚才是同⼀⼚家,并刚好这批型号使⽤着同⼀套OID
这⾥我将分享⼀下H3C 这⽹络设备的监控模版制作⽅法。⽂章底部,我也将分享⼀下⼏款H3C型号的zabbix监控基础模版
这⾥我们以H3C的MSR3640型号为例,在H3C的设备上执⾏⼀条命令,获取所有的OID对应关系
MSR3640-1>display snmp-agent mib-node  ---------每个型号获取OID的命令可能不⼀样,这可能需要查⼿册。
iso<1>(NA)
|-std<1.0>(NA)
|-iso8802<1.0.8802>(NA)
|-ieee802dot1<1.0.8802.1>(NA)
|-ieee802dot1mibs<1.0.8802.1.1>(NA)
|-lldpMIB<1.0.8802.1.1.2>(NA)
|-lldpNotifications<1.0.8802.1.1.2.0>(NA)
|-lldpNotificationPrefix<1.0.8802.1.1.2.0.0>(NA)
|-lldpRemTablesChange<1.0.8802.1.1.2.0.0.1>(NA)
|-lldpObjects<1.0.8802.1.1.2.1>(NA)
|-lldpConfiguration<1.0.8802.1.1.2.1.1>(NA)
|-*lldpMessageTxInterval<1.0.8802.1.1.2.1.1.1>(RW)
|-*lldpMessageTxHoldMultiplier<1.0.8802.1.1.2.1.1.2>(RW)
|-*lldpReinitDelay<1.0.8802.1.1.2.1.1.3>(RW)
|-*lldpTxDelay<1.0.8802.1.1.2.1.1.4>(RW)
|-*lldpNotificationInterval<1.0.8802.1.1.2.1.1.5>(RW)
|-lldpPortConfigTable<1.0.8802.1.1.2.1.1.6>(NA)
|-lldpPortConfigEntry<1.0.8802.1.1.2.1.1.6.1>(NA)
|-*lldpPortConfigPortNum<1.0.8802.1.1.2.1.1.6.1.1>(NA)
|-*lldpPortConfigAdminStatus<1.0.8802.1.1.2.1.1.6.1.2>(RW)
|-*lldpPortConfigNotificationEnable<1.0.8802.1.1.2.1.1.6.1.3>(RW)
|-*lldpPortConfigTLVsTxEnable<1.0.8802.1.1.2.1.1.6.1.4>(RW)
---- More ----
⼀⼤串的OID值<>⾥的数字
⽐如我们要当前内存的使⽤率的状态,⽐如下⾯的结果显⽰,内存返回剩余率61.1%
<MSR3640-1>dis memory
The statistics about memory is measured in KB:
Slot 0:
Total Used Free Shared Buffers Cached FreeRatio
Mem: 2028944 790128 1238816 0 588 125120 61.1%
-/+ Buffers/Cache: 664420 1364524
行政区划论坛
Swap: 0 0 0
则我们就需要知道当前对应OID值返的值
测试OID调通,我们需要先将本⽹络设备的snmp功能打开。
<MSR3640-1>dis cu | in snmp
snmp-agent
snmp-agent local-engineid 800063A2XXXXXXXXXXXXXXXXX
snmp-agent community read venic
snmp-agent sys-info version all
如上配置已显⽰,我开启了SNMP,并放开snmp community为venic,亦是指,如果有外⼈来访问我的snmp功能时,外⼈需要报暗号为 venic,答对了我才返回结果给它,默认不改这个参数的话,是团体名为public,怕有攻击,或有⼈乱请求的snmp服务,我们的团体名应设置为你⾃⼰知道的,
接下来我们需要使⽤到⼀台linux的客户机,并安装了net-snmp net-snmp-utils服务,通常是zabbix的S
erver端,或者Proxy端上。
使⽤命令尝试获取⼀下
snmpwalk -v 2c -c <;团体名>  <⽹络设备IP>  <OID值>
⽐如我刚查看刚才那台路由器的内存剩余百分⽐,如下显⽰,
[root@zabbixserver ~]# snmpwalk -v 2c -c public  10.10.10.1  1.3.6.1.4.1.25506.2.6.1.1.1.1.8.11
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.11 = INTEGER: 38
当前内存使⽤了,38%,符合上⾯命令的结果。
也就是说,你知道了⽹络设备的OID值,你想监控啥就都能拿得到值,
接着我们就可以创建监控模版了
模版叫H3C MSR3640
它包含3个应⽤集
1个是基础项监控
1个是⾃动探索接⼝
1个是⾃动探环境。
在基础项监控中,我们新建⼀个监控项,名叫Memory Use,定义的参数如下,保存即可,
键值是⾃⼰定义的名称,⼀般我们会跟OID⼿册中的名称起⼀致的名字,
OID就是刚才测试通过的OID值
这⾥的{$SNMP_COMMUNITY},我定义的是⼀个变量,也就是这个变量在这个模版中,暂未声明它是venic,因为我不知道将还有没有其它⽹络设备是不叫这样venic。
那这个{$SNMP_COMMUNITY}变量是怎么赋值的呢?如下,我们在添加主机监控时,在“宏”中,将这个变量赋值进去,那这就意味着,将来这个团体名,是在创建监控主机时配进去的,这样可以提⾼模
版的通⽤性
我们还可以给这个监控项做⼀个告警阈值,调⽤它的键值结果,做实时最新⼀次的结果的判断,当它内存使⽤率⼤于80时,也触发告警
那我们再看⼀个结果,我把上⾯的那条命令去掉⼀个.11,显⽰的结果如下
[root@zabbixserver ~]# snmpwalk -v 2c -c public  10.10.10.1  1.3.6.1.4.1.25506.2.6.1.1.1.1.8
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.1 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.2 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.3 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.4 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.7 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.11 = INTEGER: 38
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.12 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.13 = INTEGER: 0
82RCC.
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.16 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.20 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.21 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.22 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.23 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.24 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.25 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.26 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.27 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.28 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.29 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.30 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.36 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.37 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.38 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.39 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.43 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.44 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.45 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.46 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.48 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.64 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.65 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.66 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.67 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.71 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.76 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.77 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.78 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.79 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.80 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.81 = INTEGER: 0
SNMPv2-SMI::enterprises.25506.2.6.1.1.1.1.8.1356 = INTEGER: 0
这样的结果返回给zabbix它能接收吗?答,这种看情况,像这种监控,我们已经在zabbix的监控项中,
定义了返回值是正数、符点、或整字,那样zabbix只接受单⼀值的返回,上⾯的返回只能给你返回字符串。监控项在应⽤后,会抛出得到的值⽆法应⽤。监控项显⽰X状态
如果端⼝监控项我们⼀个⼀个⼿⼯加的话,会死⼈,⽐如⼀台交换机有⼏⼗个端⼝,⼀个端⼝我们要监控它的进出流量,进出的误码包等。
那假如我有⼀个需求,想让它仿照linux模版那样,将机器的端⼝,⾃动探索,然后循环⾃动添加单⼀数值的监控项?
我们需要做模版内部的⾃动探索的⼆级模版了。
我们做⼀下端⼝的⾃动探索监控,幸运的是我们的接⼝的探索,⽆需OID值,zabbix的服务端帮我做了⼀个discory的⽅法,如果下配置,它就帮我检索出所有接⼝的OID,并赋值给{#SNMPVALUE}中,等下我们就可以通过这个变量值在,监控项原型中,定义我们要监控的内容。
⽐如接⼝的出⽅向流量。zabbix⼜帮我做了⼀个⽅法ifOutOctets,回传这个流量值。如下
依此类推⼀个端⼝的我们就可以复⽤监控以下这么多要监控的内容,接⼝的状态,接⼝的流量,接⼝的误码,接⼝的管理状态
上海冷气机厂
⽽且我们还可以给它定义监控的阈值来触发告警。
当然我们也可以借⽤zabbix的discovry来创建其它的⾃动发现
⽐如,上海这台机器上2个电源设备power,但因有些机器只接单电源,有的接双电,我⼜不想通过⾃
定义OID值来监控这⼀项,我想让其⾃动探索,有2个就监控2个,只有1个就监控1个,我⽆需关⼼<MSR3640-1>dis power-supply
Index Status
-----------------------
PWR1 normal
PWR2 normal
对应该的OID值
<MSR3640-1>display snmp-agent mib-node | in 1.3.6.1.4.1.25506.8.35.9.1.2.1
|-hh3cdevMPowerStatusEntry<1.3.6.1.4.1.25506.8.35.9.1.2.1>(NA)
|-*hh3cDevMPowerNum<1.3.6.1.4.1.25506.8.35.9.1.2.1.1>(RO)
|-*hh3cDevMPowerStatus<1.3.6.1.4.1.25506.8.35.9.1.2.1.2>(RO)
其中1.3.6.1.4.1.25506.8.35.9.1.2.1.1记录电源数量
其中1.3.6.1.4.1.25506.8.35.9.1.2.1.2记录电源状态
通过客户端命令远程访问,显⽰为2个电源
[root@zabbixserver ~]# snmpwalk -v 2c -c PUBLIC XXXXX 1.3.6.1.4.1.25506.8.35.9.1.2.1.1
SNMPv2-SMI::enterprises.25506.8.35.9.1.2.1.1.1 = INTEGER: 1
SNMPv2-SMI::enterprises.25506.8.35.9.1.2.1.1.2 = INTEGER: 2
如果我们这时要探索的话,可以将上⾯这2条记录探索回来,得到两个值,1和2 ,并赋值给{#SNMPVALUE },如下⽰例
我们知道只能1和2我们是⽆法通过SNMP拿不到状态结果的,我就是需要跟其中1.3.6.1.4.1.25506.8.35.9.1.2.1.2记录电源状态的OID相加,得到我们需要查看的值
[root@zabbixserver ~]# snmpwalk -v 2c -c Public X.X.X.X 1.3.6.1.4.1.25506.8.35.9.1.2.1.2.1
应用系统集成SNMPv2-SMI::enterprises.25506.8.35.9.1.2.1.2.1 = INTEGER: 1
[root@zabbixserver ~]# snmpwalk -v 2c -c Public X.X.X.X 1.3.6.1.4.1.25506.8.35.9.1.2.1.2.2
SNMPv2-SMI::enterprises.25506.8.35.9.1.2.1.2.2 = INTEGER: 1
它的状态显⽰反回显⽰都1,指的是normal状态
接下来我们就可以通过这个思路,创建监控项,如下截图
1、名称中的$1,代表探索的条⽬数⽬1和2, 这样,我们探索出来的监控项,在最终的zabbix中显⽰就是 Status of Power 1    Status of Power 2
2、键值中的{SNMPVALUE}则是我们在上⾯探索后,得到的返回值1和2,并把它做成⼀个键值名称,因为在1个模版中,键值是为⼈定义的,是唯⼀的,是为后⾯的触发器创建作调⽤的,如果键值名称不唯⼀,模版在保存时会有提⽰报错。
3、SNMP OID中的{SNMPINDEX}就是我们上⾯刚才所提到的思路,相加
骑士车
4、查看值:H3C PowerStatus 是⾃定义的,因为
4、查看值:H3C PowerStatus 是⾃定义的,因为zabbix记录只是数字,但我们前端需要展⽰,这个状态代表什么意思,所以我们可以⾃定义这个展⽰值,并应⽤到监控项中。sre

本文发布于:2024-09-20 14:54:11,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/532545.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:监控   模版   设备   命令   状态   定义   团体
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议