成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何擴展Nagios,以實現自定義監控?

譯文
運維 系統運維
Nagios是一款開源的免費網絡監視工具,能有效監控Windows、Linux和Unix的主機狀態,功能強大的Nagios網絡監控平臺讓你可以為其功能增添一系列可用插件。本文就介紹了如何自行編寫插件,擴展Nagios,以實現自定義監控。

【51CTO精選譯文】功能強大的Nagios網絡監控平臺讓你可以為其功能增添一系列可用插件。

如果你找不到可以滿足自身要求的一款插件,也很容易自行編寫,本文就介紹了如何自行編寫插件。

Nagios插件可以用任何一門編程語言來編寫,只要該編程語言在運行Nagios的平臺上得到支持。Bash是用來編寫Nagios插件的一門流行語言,因為它功能強大、使用簡單。

借助插件進行的每一次有效的Nagios檢查(Nagios check)都會生成一個數字表示的退出狀態。可能的狀態有:

  • 0--各方面都正常,檢查成功完成。
  • 1--資源處于警告狀態。某個地方不太妙。
  • 2--資源處于臨界狀態。原因可能是主機宕機或服務未運行。
  • 3--未知狀態,這未必表明就有問題,而是表明檢查沒有給出一個清楚明確的狀態。

插件還能輸出文本消息。默認情況下,該消息顯示在Nagios web界面和Nagios郵件警報信息中。盡管消息并不是硬性要求,你通常還是可以在可用插件中找到它們,因為消息告訴用戶出了什么岔子,而不會迫使用戶查閱說明文檔。

用Bash編寫的一個簡單的Nagios插件類似這樣。這個示例插件檢查一個指定的文件:

  #!/bin/bash

#將***個實參($1)指定為文件名

  filename=$1

#先檢查該文件是否存在。這是你應該開始的***個檢查,也是最基本的檢查。

if [ ! -e $filename ]; then

  echo "CRITICAL status - file $filename doesn't exist"

exit 2 #返回臨界狀態,那是由于你的最糟糕情況是該文件根本就不存在。

#如果前一個條件通過(文件存在),那么接下來檢查該文件是否可讀:

elif [ ! -r $filename ]; then

  echo "WARNING status - file $filename is not readable."

exit 1 #返回警告狀態,那是由于該狀態勝于根本不存在文件;

#如果前一個條件通過,檢查它是不是一個普通文件,而不是目錄或設備文件。

elif [ ! -f $filename ]; then

  echo "UNKNOWN status - file $filename is not a file."

exit 3 #返回未知狀態;

#如果所有上述檢查均通過,那么表明它正常:

else

  echo "OK status - file is OK"

  exit 0 #Return OK status

  fi

注釋(Bash中以#開始)解釋了代碼;如果你需要更清晰的解釋,或者想進一步了解Bash的文件測試操作符,請查閱說明文檔(http://tldp.org/LDP/abs/html/fto.html)。

盡管這個實例很簡單,但它清楚地表明了如何實現Nagios插件邏輯。始終首先要尋找最糟糕的情況。只有當所有檢查均通過,腳本退出時才會顯示狀態正常。確保在退出之前指定明確消息。

使用插件

默認情況下,所有的Nagios插件均存放在用$USER1宏命令定義的目錄中,具體在文件/etc/nagios/private/resource.cfg中定義。在來自EPEL存儲庫(http://fedoraproject.org/wiki/EPEL)的典型Nagios安裝環境下,$USER1被定義為/usr/lib/nagios/plugins。你對插件應該做的頭一件事就是,把它拷貝到用$USER1宏命令定義的目錄中。插件通常歸root所有,其權限設置為755。Nagios在屬于nagios群組的用戶nagios下工作,所以腳本需要讀取和執行其他群組的權限。

一旦你把腳本放在/usr/lib/nagios/plugins目錄中,就要在文件/etc/nagios/objects/commands.cfg里面把它定義成Nagios命令。假設你將腳本命名為check_file.sh,添加下列命令定義:

#我們的自定義文件檢查命令:

  define command{

  command_name    check_file

  command_line    $USER1$/check_file.sh $ARG1$

  }

這應當相當清楚。變量$ARG1$代表傳遞給Nagios命令的***個實參;在本例中,這***個實參應該是文件名稱。如果你想傳遞更多的實參,可以將$ARG2$用作第二個實參,將$ARG3$用作第三個實參,以此類推。

想開始使用你的插件,應在你的nagios配置文件(比如service.cfg)中將其定義成一項服務:

  define service{

  use                             local-service

  host_name                       localhost

  service_description             Check the file /etc/passwd

  check_command                   check_file!/etc/passwd

  }

上述服務是為本地主機(host_name localhost)定義的,為本地服務使用模板(使用local-service),詳見文明文檔的對象繼承部分(http://nagios.sourceforge.net/docs/3_0/objectinheritance.html),即可了解模板及模板的工作原理。最重要的部分是check_command指令。它指定了命令check_file,然后是作為分隔符的感嘆號,后面是作為實參的文件名稱。如果你的插件有不止一個實參,可以用另外的感嘆號來分隔。

遠程運行Nagios插件

示例check_file plugin存在的一個明顯缺點是它本地運行,這意味著無法檢查遠程服務器上的文件。你有許多辦法可以解決這個問題。

***個辦法就是使用ssh命令,遠程執行代碼。這需要你把腳本拷貝到遠程服務器上,并利用ssh可以運行遠程命令的功能。這還需要你為Nagios服務器及其nagios用戶配置無密碼密鑰登錄。如果這方面你不太確信如何操作,可以參閱本文http://www.techrepublic.com/blog/opensource/remotely-monitor-servers-with-the-nagios-checkbyssh-plugin/321,了解所有的相關細節。

這***個辦法的優點是,你擁有了針對被監控的服務器,本地運行命令所具有的功能和靈活性。缺點就是,Nagios服務器必須能夠借助密鑰,無密碼登錄到遠程服務器。這是個安全問題,不推薦敏感環境使用。

第二個比較安全的辦法是,使用SNMP擴展功能。這要求你已在遠程服務器上安裝和配置好了net-snmp程序包(面向CentOS)。

想使用SNMP擴展命令,先將check_file.sh腳本拷貝到遠程服務器上。比如說,你可以把該腳本放在目錄/usr/bin/中。

接下來,將配置指令extend check_passwd_file /usr/bin/check_file.sh /etc/passwd添加到遠程服務器上的文件/etc/snmp/snmpd.conf。語法是extend some_alias command argument。下面是這種方法存在的主要不便之處:你得為每一次獨立的檢查定義一個別名,在本例中這意味著為我們想要測試的每一個獨立文件定義一個別名,因為無法通過SNMP來傳送實參。

文件/etc/snmp/snmpd.conf只要出現變化,都需要你用service snmpd reload命令(面向CentOS),重新裝入snmpd服務。之后,你可以用snmpget命令來測試新的檢查,就跟在snmpget -v2c -c public -OvQ 10.0.0.2 NET-SNMP-EXTEND-MIB::nsExtendOutputFull.\"check_passwd_file\"中一樣。這個示例snmpget命令通過SNMP版本2c,以"public"共用字符串查詢服務器10.0.0.2。自定義SNMP擴展命令的對象標識符(OID)是NET-SNMP-EXTEND-MIB::nsExtendOutputFull.\"some_alias\"。

遺憾的是,上面這個命令無法直接用Nagios來實現。如果snmpget正常工作,可以連接至遠程主機,它總是會返回狀態0,這表明每方面都正常,因為程序snmpget本身退出時沒有錯誤。因而,即使某個文件不存在,檢查腳本也會返回狀態0,不過它會輸出文件不存在的正確消息。

你可以解決這個問題,只要充分利用針對Nagios的名為check_snmp_extend.sh的特殊插件。這個插件取得狀態消息的***個單詞后,根據該單詞來設定狀態。由于預計使用這個插件,我們在示例腳本check_file.sh中設定了消息,以便從OK(正常)、CRITICAL(臨界)、WARNING(警告)和UNKNOWN(未知)開始。

想開始使用check_snmp_extend.sh插件,先下載該插件(http://www.logix.cz/michal/devel/nagios/check_snmp_extend.sh),然后把它放到Nagios服務器上的目錄/usr/lib/nagios/plugins($USER1宏命令)。在CentOS上,你得編輯腳本check_snmp_extend.sh,并把/usr/local/nagios/libexec/utils.sh換成/usr/lib/nagios/plugins/utils.sh,這是utils.sh腳本的正確路徑。

之后,你就可以像使用其他任何插件那樣使用check_snmp_extend.sh。首先,把它定義為一個命令:

define command{

  command_name check_snmp_extend

  command_line $USER1$/check_snmp_extend.sh $HOSTADDRESS$ $ARG1$

  }

之后,定義一項服務:

define service{

  use                 generic-service

  host_name         somehost.example.org

  service_description Check For /etc/passwd

  check_command  check_snmp_extend!check_passwd_file

  }

使用SNMP的擴展選項就跟你的SNMP配置一樣安全。這個辦法只需要在遠程主機上進行極少的改動,又確保了標準的設置環境符合安全方面的***實踐。你可以找到用于類似用途的其他Nagios插件,比如nrpe,但是它們要求遠程安裝額外服務,從安全和兼容性的角度來看這并非總是一個好主意。

如你所見,很容易用自行編寫的插件來擴展Nagios。Nagios允許這種擴展,這一點正是許多管理員青睞它、而不是青睞其他監控解決方案的原因之一。

原文鏈接:http://www.openlogic.com/wazi/bid/256126/how-to-extend-nagios-for-custom-monitoring

責任編輯:黃丹 來源: 51CTO.com
相關推薦

2011-04-06 15:05:58

nagios監控Linux

2023-10-19 09:14:34

Java開發

2009-09-07 22:00:15

LINQ自定義

2012-07-24 15:03:19

OpenStack架構

2021-03-26 20:37:14

Prometheus監控指標

2009-09-03 13:34:03

.NET自定義控件

2023-01-03 07:40:27

自定義滑塊組件

2020-12-14 10:26:48

Prometheus 監控Services

2021-05-29 16:12:00

通信協議設備

2021-10-28 08:39:22

Node Export自定義 監控

2009-02-10 12:55:39

自定義控件AJAX.NET

2013-06-27 11:10:01

iOS開發自定義UISlider

2009-09-13 18:58:07

自定義LINQ提供器

2022-05-18 07:44:13

自定義菜單前端

2025-05-08 08:30:00

Redis自定義序列化數據庫

2011-03-22 14:29:19

Nagios監控

2009-11-25 14:36:39

PHP函數usort(

2010-02-25 16:27:44

WCF擴展點

2010-07-01 09:38:31

jQuery

2020-06-08 10:05:09

云計算云平臺
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 超碰精品在线观看 | 亚洲精品一区二区三区四区高清 | 国产成人在线一区二区 | 亚洲视频在线观看 | 国产成人精品在线播放 | 精品免费国产一区二区三区四区介绍 | 日韩在线视频播放 | 久久久免费在线观看 | 一级黄色裸片 | 成人区精品| 亚洲日日夜夜 | 日韩欧美一区二区在线播放 | 免费在线观看成年人视频 | 亚洲成人精品一区 | 亚洲精品毛片av | 免费亚洲成人 | 欧美一区视频 | 亚洲色在线视频 | 日韩免费一级 | 男女免费在线观看视频 | 91麻豆精品国产91久久久更新资源速度超快 | 亚洲免费在线观看av | 欧美日韩精品免费 | 希岛爱理在线 | 国产精品美女久久久久久久久久久 | 欧美久久精品一级黑人c片 91免费在线视频 | 自拍偷拍中文字幕 | 蜜桃一区| 欧美日韩一区二区在线 | chengrenzaixian| 国产一区二区精品在线观看 | 国产高清一区二区三区 | 精品视频一区二区三区 | 99这里只有精品视频 | 中文字幕成人av | 精品日本久久久久久久久久 | 中文字幕精品一区二区三区精品 | 一区二区在线免费观看 | 国产精品一区二区久久 | 亚洲免费三区 | 成人免费视频观看 |