24小时在线的设备,不免要加个监控。我这里用的是snmp和smartmontools。 smartmontools可以监控硬盘的各种状态,这个是非常重要的。
使用自定义的脚本把smartmontools获取到的状态通过snmp协议发送给cacti,就可以实现硬盘的监控了。
本例中主要监控硬盘温度、cpu使用率、网络使用率等。
首先安装snmp,smartmontools和super,super软件包是提权用的。由于运行snmpd的用户snmp没有读取设备的权限,su和sudo只能在终端里面使用,后台运行的程序无法获得root权限。这个问题折腾了我很久,由于英语水平实在一般,逛了几天debian官网才找到了super这个软件包,可以为其他用户以root的身份执行特定指令。
apt-get update apt-get install snmpd apt-get install smartmontools apt-get install super
配置snmpd.conf,编辑/etc/snmp/snmpd.conf。
配置团体名、监听端口等等,具体看配置,应该很容易明白。
特别注意的是新版本的snmpd不能使用exec来执行自定义脚本,改成用extend了。注我的snmpd版本5.4.3
agentaddress UDP:161 sysLocation home sysContact D2O sysName PogoPlug com2sec ro default public com2sec rw localhost private group public v1 ro group public v2c ro group public usm ro group private v1 rw group private v2c rw group private usm rw view all included .1 access public "" any noauth exact all none none access private "" any noauth exact all all all extend .1.3.6.1.4.1.2021.51 hdd_temperauter /bin/sh /etc/snmp/hdd_temperauter.sh
获取硬盘温度的脚本
我是放在/etc/snmp/hdd_temperauter.sh,与上面的snmpd.conf对应。snmpd进程是用snmp账号来运行的,smartctl前面加super可以以root身份运行smartctl,这样才有权限读取/dev/sda。
#!/bin/sh # #snmpget HDD Temperauter scripts #By D2O #v0.1 2013/2/26 super smartctl -A /dev/sda | grep Temperature | awk '{print $10}'
当然不是所有命令都可以super的,默认是所有的命令都不能super,通过编辑/etc/super.tab来添加可以super的命令。
在文件最后的地方加入。
smartctl /usr/sbin/smartctl arg1 user~.*
cacit里面可以用以下语句获取自定义脚本的内容的OID。然后添加自定义模板,加入获取到的oid就可以作图了。
snmpwalk -c public -v 2c 198.18.8.252:161 .1.3.6.1.4.1.2021.51
enjoy!!
原文首发 CSDN博客 ,转载请保留作者和出处,谢谢!