ESXi可以在相关面板上看见smart信息, 我这边公司用的是组装的服务器,然后不支持,只好用SSH的办法去获取了。
Nagios监控是按退出的状态代码来显示相关信息的。
退出代码如下:
0 ok; 1 warning; 2 critical; 3 unknown
python可以用 paramiko 去实现SSH连接并执行命令这一过程。
paramiko 下载位置
pypi.python.org/pypi/paramiko
#!/usr/bin/env python import paramiko import re import sys #0 ok; 1 warning; 2 critical; 3 unknown user, passwd = "root", "123" def get_disk_status(ip,username,passwd): ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(ip,22,username,passwd) stdin, stdout, stderr = ssh.exec_command('for i in `esxcli storage core device list | grep "Local ATA Disk" | sed "s/.*(\|)//g"`; do esxcli storage core device smart get -d "$i" | grep Health ; done') d = stdout.read() ssh.close() if len(re.findall('OK', d)) == len(re.findall('Health', d)): print "Dist Smart OK" sys.exit(0) else: print "Disk Smart Fail" sys.exit(2) if __name__ == '__main__': get_disk_status(sys.argv[1],user, passwd)
上面的代码 直接保存到 nagios安装位置下面的 libexec 下面。 然后在监控那边添加服务
define service{ use one-day-service host_name ESX_100_3 service_description Disk_Smart check_command check_esxi }
重启nagios搞定