nagios通过python获取ESXi
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搞定
相关文章