标签:
Nagios 系统提供了一个插件NRPE。Nagios 通过周期性的运行它来获得远端服务器的各种状态信息。它们之间的关系如下图所示:
Nagios 通过NRPE 来远端管理服务
1. Nagios 执行安装在它里面的check_nrpe 插件,并告诉check_nrpe 去检测哪些服务。
2. 通过SSL,check_nrpe 连接远端机子上的NRPE daemon
3. NRPE 运行本地的各种插件去检测本地的服务和状态(check_disk,..etc)
4. 最后,NRPE 把检测的结果传给主机端的check_nrpe,check_nrpe 再把结果送到Nagios状态队列中。
5. Nagios 依次读取队列中的信息,再把结果显示出来。
其实,我们安装的nagios只是一个框架,至于需要什么样的功能,需要自己写插件来完成补充,具体的语言可以选择c++,shell,Python等,此处我使用的是Python2.7.3,系统是Ubuntu14.04LTS,Nagios3版本是3.5.1因为原装的nagios并没有检查系统内存使用情况的功能,所以出于需要,我自己用python写了一个检查系统内存的脚本check_mem.py,代码如下
#!/usr/bin/env python import re import subprocess import os import sys MEM_WARNING=0.80 MEM_CRITICAL=0.90 #nagios有四种监控状态,0绿色代表OK,1黄色代表WARNING,2红色代表CRITICAL,3褐色代表UNKNOWN STATE_OK=0 STATE_WARNING=1 STATE_CRITICAL=2 STATE_UNKNOWN=3 try: #此处使用subprocess.Popen时总是报错,所以换用了os.popen来执行shell,我也把这个错误报告给了官方,但是没有得到回复,希望大牛可以帮忙解惑 #mem_info=subprocess.Popen('free',shell=True,stdout=subprocess.PIPE, # stderr=(open('/tmp/check_mem_errors.txt','w'))) #mem_info.stdout.readline() #info=mem_info.stdout.readline() mem_info=os.popen('free') mem_info.readline() info=mem_info.readline() info=info.strip('\n') info_list=re.split('\s+',info) mem_total=long(info_list[1]) mem_free1=long(info_list[3]) #info=mem_info.stdout.readline() info=mem_info.readline() info=info.strip('\n') info_list=re.split('\s+',info) mem_free2=long(info_list[2]) #in Linux, free memory is freed+cached memory mem_free=mem_free1+mem_free2 mem_used_percentage=float("%.2f" % (float(mem_free)/mem_total)) if mem_used_percentage < MEM_WARNING: print "OK: Total memory %ld kB, Free memory %ld kB, used percentage %.2f" % (mem_total,mem_free,mem_used_percentage) sys.exit(0) elif mem_used_percentage < MEM_CRITICAL: print "WARNING: Total memory %ld kB, Free memory %ld kB, used percentage %.2f" % (mem_total,mem_free,mem_used_percentage) sys.exit(STATE_WARNING) else: print "CRITICAL: Total memory %ld kB, Free memory %ld kB, used percentage %.2f" % (mem_total,mem_free,mem_used_percentage) sys.exit(STATE_CRITICAL) except ValueError: print "UNKNOWN" sys.exit(STATE_UNKNOWN)
结果如下:
具体的配置如下:
1、把这个脚本放到/usr/lib/nagios/plugins目录下
2、在/etc/nagios3/commands.cfg中添加:
define command{ command_name check_meminfo command_line $USER1$/check_mem.py
define service{ host_name localhost service_description MemoryDetails check_command check_meminfo use generic-service notification_interval 0 }
参考文章:http://www.cnblogs.com/mchina/archive/2013/02/20/2883404.html
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/wolfzhaoshuai/article/details/47811005