通过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