通过snmp监控交换机、路由器等网络设备

下面以监控cisco 路由器为例

步骤如下:

  • 在cisco路由器下配置snmp

    snmp-server community test ro      #配置读取snmp的密码
    snmp-server community test123 rw   #配置可写的snmp密码,为安全起见,最好别开启
    show run                           #可以查看交换机或路由器是否设置了snmp
  • 配置zabbix community变量
    在[管理]—->[一般]—->[宏]里,配置snmp的密码变量(例如上面配置的test),这样就可以调用zabbix自带的snmp模板了,如下:

  • 添加主机,模板我选择了 Template Module Interfaces SNMPv2 ,如下:

通过IDRAC监控Dell服务器
  • 到dell的idrac web界面开启snmp代理,步骤:“网络”->“服务”->“SNMP代理” , 启用SNMP并设置团体(community),不推荐使用默认的public。建议所有服务器设置统一的团体名。然后到zabbix server服务器上测试一下是否能get到数据,raid卡不同下面的OID有可能不一样:snmpwalk -v 2c -c <Community> <iDRAC IP> .1.3.6.1.4.1.674.10892.2.1.1.2.0

  • 导入模板。选择Configuration->Templates->Import,导入“Template Dell iDrac SNMPV2”模板。模板见附件,模板是从github上下载的,我修改了部分错误并做了优化。模板支持以下监控类别:

    • Disks/Storage(磁盘)
    • Fans(风扇)
    • Memory(内存)
    • Network Cards(网卡)
    • Power(电源)
    • Processor(CPU)
    • System Info
    • Temperatures(温度)
    • Voltages(电压)
  • 配置全局变量{$SNMP_COMMUNITY_IDRAC},选择[管理]—->[一般]—->[宏],创建变量“{$SNMP_COMMUNITY_IDRAC}”,Value处填写iDRAC的WEB上配置的SNMP团体名(Community),如下图:

  • 创建主机。进入主机配置界面,记得填写“SNMP interfaces”为iDRAC的管理地址,链接“Template Dell iDrac SNMPV2”模板。注:模板里部分监控项的监控间隔(Update interval)是86400秒,要等待大约一天的时间才会监控到首笔数据。

通过snmp监控Dell存储

原理和步骤基本跟上面一样,只是开启存储的步骤和所用到的模板不一样,如下:

  • 开启dell存储的snmp代理需要登录Enterprise Manager Client配置上配置,如下:

  • 所用的模板为 Template Dell Compellent.xml,见附件,导入模板

通过安装raid卡监控软件监控磁盘

  • 下载并安装lsi MegaRAID raid卡 管理工具,地址:http://www.avagotech.com/support/download-search ; 在上面的网址中,在搜索框里搜索”megacli”,点击确定,找到Management Software and Tools (188) 下的 MegaCLI 5.5 P2 (这是命令行工具),注意不要下载Latest MegaRAID Storage Manager (MSM) ,这个MSM是图形化的管理工具。

  • 把下载的管理软件上传到tool上并解压安装

    root@rac1 ~]# cd tool/  
    [root@rac1 tool]# ll  
    total 7756  
    -rw-r--r-- 1 root root 7939395 Sep  8 15:39 8-07-14_MegaCLI.zip  
    [root@rac1 tool]# unzip 8-07-14_MegaCLI.zip   
    Archive:  8-07-14_MegaCLI.zip  
    inflating: 8.07.14_MegaCLI.txt       
    inflating: DOS/MegaCLI.exe           
    extracting: FreeBSD/MegaCLI.zip       
    extracting: FreeBSD/MegaCli64.zip     
    inflating: Linux/MegaCli-8.07.14-1.noarch.rpm    
    inflating: Solaris/MegaCli.pkg       
    inflating: Windows/MegaCli.exe       
    inflating: Windows/MegaCli64.exe     
    [root@rac1 tool]# ls -lrt  
    total 7824  
    -rw-r--r-- 1 root root   48298 Jan 19  2014 8.07.14_MegaCLI.txt  
    -rw-r--r-- 1 root root 7939395 Sep  8 15:39 8-07-14_MegaCLI.zip  
    drwxr-xr-x 2 root root    4096 Sep  8 15:39 DOS  
    drwxr-xr-x 2 root root    4096 Sep  8 15:39 FreeBSD  
    drwxr-xr-x 2 root root    4096 Sep  8 15:39 Linux  
    drwxr-xr-x 2 root root    4096 Sep  8 15:39 Solaris  
    drwxr-xr-x 2 root root    4096 Sep  8 15:39 Windows  
    [root@rac1 tool]# cd Linux/  
    [root@rac1 Linux]# ls -lrt  
    total 1516  
    -rw-r--r-- 1 root root 1549650 Dec 16  2013 MegaCli-8.07.14-1.noarch.rpm  
    [root@rac1 Linux]# rpm -ivh MegaCli-8.07.14-1.noarch.rpm   
    Preparing...                          ################################# [100%]  
    Updating / installing...  
     1:MegaCli-8.07.14-1                ################################# [100%]  
    [root@rac1 Linux]# cd /opt/  
    [root@rac1 opt]# ls  
    MegaRAID  ORCLfmap  localyum  lsi  
    [root@rac1 opt]# cd MegaRAID/  
    [root@rac1 MegaRAID]# ls  
    MegaCli  
    [root@rac1 MegaRAID]# cd MegaCli/  
    [root@rac1 MegaCli]# ls -lrt  
    total 3188  
    -rwx------ 1 root root  540512 Dec 16  2013 libstorelibir-2.so.14.07-0  
    -rwxr-xr-x 1 root root 2720320 Dec 16  2013 MegaCli64  
    -rw-r--r-- 1 root root       0 Sep  8 15:39 install.log  
    lrwxrwxrwx 1 root root      48 Sep  8 15:39 libstorelibir-2.so -> /opt/MegaRAID/MegaCli/libstorelibir-2.so.14.07-0 
  • 执行检查磁盘命令

    [root@rac1 MegaCli]# ./MegaCli64 -PDList -aALL
    #另附MegaCli的命令说明
    #/opt/MegaCli  -LDInfo -Lall -aALL 查raid级别  
    #/opt/MegaCli -AdpAllInfo -aALL 查raid卡信息  
    #/opt/MegaCli -PDList -aALL 查看硬盘信息  
    #/opt/MegaCli -AdpBbuCmd -aAll 查看电池信息  
    #/opt/MegaCli -FwTermLog -Dsply -aALL 查看raid卡日志  
    #/opt/MegaCli -adpCount 【显示适配器个数】  
    #/opt/MegaCli -AdpGetTime –aALL 【显示适配器时间】  
    #/opt/MegaCli -AdpAllInfo -aAll    【显示所有适配器信息】  
    #/opt/MegaCli -LDInfo -LALL -aAll    【显示所有逻辑磁盘组信息】  
    #/opt/MegaCli -PDList -aAll    【显示所有的物理信息】  
    #/opt/MegaCli -AdpBbuCmd -GetBbuStatus -aALL |grep ‘Charger Status’ 【查看充电状态】  
    #/opt/MegaCli -AdpBbuCmd -GetBbuStatus -aALL【显示BBU状态信息】  
    #/opt/MegaCli -AdpBbuCmd -GetBbuCapacityInfo -aALL【显示BBU容量信息】  
    #/opt/MegaCli -AdpBbuCmd -GetBbuDesignInfo -aALL    【显示BBU设计参数】  
    #/opt/MegaCli -AdpBbuCmd -GetBbuProperties -aALL    【显示当前BBU属性】  
    #/opt/MegaCli -cfgdsply -aALL    【显示Raid卡型号,Raid设置,Disk相关信息】 
  • 附监控liunx及windows的raid及disk的脚本:

    因为调用的是zabbix用户的,要加脚本加sudo权限,文件末尾添加
    vim /etc/sudoers
    #添加zabbix执行MegaCli64权限
    Defaults:zabbix !requiretty
    zabbix ALL=(root) NOPASSWD:/opt/MegaRAID/MegaCli/MegaCli64
  • liunx下脚本如下:

#!/bin/bash
#check raid status
raid_status=0
MEGACLI="/opt/MegaRAID/MegaCli/MegaCli64"

/usr/bin/sudo $MEGACLI -pdlist -aALL  | grep "Firmware state" | awk -F : '{print $2}' | awk -F , '{print $1}' >/tmp/fireware.log

for i in `cat < /tmp/fireware.log`
do

if [ $i !=  Online ]
then
        raid_status=$(($raid_status+1))
fi

done

echo $raid_status

#!/bin/bash
#check disk status
disk_status=0
MEGACLI="/opt/MegaRAID/MegaCli/MegaCli64"

/usr/bin/sudo $MEGACLI -pdlist -aALL  | grep -E "Media Error|Other Error|Predictive Failure Count" | awk -F : '{print $2}' >/tmp/disk.log

for i in `cat < /tmp/disk.log`
do

if [ $i -ne 0 ]
then
    disk_status=$(($disk_status+1))
fi

done

echo $disk_status
  • powershell下脚本如下:
#check disk status
$disk_check=0
E:\zabbix\Windows\MegaCli64.exe -PDList -aALL|Select-String "Media Error|Other Error"|Foreach-

Object{$_ -replace "^.*: ",""} >E:\zabbix\disk_status.txt

foreach ($i in cat E:\zabbix\disk_status.txt)
{
if ($i -ne 0)
{
    $disk_check++
}
}

echo $disk_check

#check raid status
$raid_check=0
E:\zabbix\Windows\MegaCli64.exe -PDList -aALL|Select-String -pattern "Firmware state"|select-

object -last 4|Foreach-Object{$_ -replace "Fi.*: ",""}|Foreach-Object{$_ -replace ",.* Up",""} 

>E:\zabbix\raid_status.txt

foreach ($i in cat E:\zabbix\raid_status.txt)
{
if ($i -ne "Online")
{
    $raid_check++
}
}

echo $raid_check
  • liunx及windows下加键值:
liunx:
在/etc/zabbix/zabbix/zabbix_agentd.d下vim自定
UserParameter=check_raid,/bin/sh /sh/check_raid.sh
UserParameter=check_disk,/bin/sh /sh/check_disk.sh

windows:
在 zabbix_agentd.win.conf 后面加入
UserParameter=check_raid,powershell -File D:\zabbix\raid.ps1
UserParameter=check_disk,powershell -File D:\zabbix\disk.ps1
一些powershell的说明

Powershell管道就像流水线,对于数据的处理是一个环节接着一个环节,如果你想在某一环节对流进来的数据逐个细致化的处理,可是使用ForEach-Object,$_ 代表当前的数据。
在powershell:select-string= grep -replace=sed 的作用,更多命令对照请参考:
https://www.pstips.net/bash-and-powershell-quick-reference.html

例:Select-String -pattern “Firmware state”|select-object -last 4|Foreach-Object{$_ -replace “Fi.: “,””}|Foreach-Object{$_ -replace “,. Up”,””}
select-object -last 4取后四行

powershell默认是不允许脚本运行的:
Restricted: 不载入配置文件, 不执行脚本. “Restricted”是默认值.
AllSigned: 所有的配置文件和脚本必须通过信任的出版商签名(trusted publisher), 这里所指的脚本页包括你在本地计算机上创建的脚本.
RemoteSigned: 所有从互联网上下载的脚本必须通过信任的出版商签名(trusted publisher).
Unrestricted: 载入所有的配置文件和脚本. 如果你运行了一个从互联网上下载且没有数字签名的脚本, 在执行前你都会被提示是否执行.

查看的现用执行策略:get-executionpolicy

更改策略,例:set-executionpolicy remotesigned

附件
文档更新时间: 2019-12-19 15:43   作者:子木