e13e 发表于 2015-4-29 10:04:56

nagios通过python获取ESXi硬盘SMART信息

                      ESXi可以在相关面板上看见smart信息, 我这边公司用的是组装的服务器,然后不支持,只好用SSH的办法去获取了。
Nagios监控是按退出的状态代码来显示相关信息的。
退出代码如下:
0 ok; 1 warning; 2 critical; 3 unknown

python可以用 paramiko 去实现SSH连接并执行命令这一过程。
paramiko 下载位置
pypi.python.org/pypi/paramiko

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/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,user, passwd)




上面的代码 直接保存到 nagios安装位置下面的 libexec 下面。 然后在监控那边添加服务


1
2
3
4
5
6
define service{
      use                           one-day-service
      host_name                     ESX_100_3
      service_description             Disk_Smart
      check_command                   check_esxi
      }




重启nagios搞定
                   

页: [1]
查看完整版本: nagios通过python获取ESXi硬盘SMART信息