nagios3 添加Python編寫的外掛程式

來源:互聯網
上載者:User

標籤:

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 pythonimport reimport subprocessimport osimport sysMEM_WARNING=0.80MEM_CRITICAL=0.90#nagios有四種監控狀態,0綠色代表OK,1黃色代表WARNING,2紅色代表CRITICAL,3褐色代表UNKNOWNSTATE_OK=0STATE_WARNING=1STATE_CRITICAL=2STATE_UNKNOWN=3try:    #此處使用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

3、然後在/etc/nagios3/conf.d/services_nagios2.cfg中添加:

define service{  host_name localhost  service_description MemoryDetails  check_command check_meminfo  use generic-service  notification_interval 0}

4、在監控機上,登入127.0.0.1/nagios3/,便可以看到的結果了


參考文章:http://www.cnblogs.com/mchina/archive/2013/02/20/2883404.html

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

nagios3 添加Python編寫的外掛程式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.