1. 在定義命令的時候,往往需要修改commands.cfg配置文件,如果使用NPRE插件監控遠程伺服器,其實,定義命令也沒這麼複雜 commands.cfg中有關check_nrpe的命令定義如下: define command{ command_name check_nrpe command_l
1. 在定義命令的時候,往往需要修改commands.cfg配置文件,如果使用NPRE插件監控遠程伺服器,其實,定義命令也沒這麼複雜
commands.cfg中有關check_nrpe的命令定義如下:
define command{ command_name check_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ }
然後在定義service文件的時候,可以這樣寫
define service{ use generic-service host_name 146 service_description check_users check_command check_nrpe!check_users -a 10 20 }
其中check_users -a 10 20作為一個參數被check_nrpe命令中的$ARG1$參數接受。
2. 如何利用hostgroup簡化服務的管理
首先定義hostgroup
定義如下:
define hostgroup{ hostgroup_name hostgroup1 alias hg1 members 146,144 }
其中144,146是host_name,所以前提是146,144已經在主機列表中定義過。
接下來要定義service
define service{ hostgroup_name hostgroup1 use generic-service service_description hg1_service check_command check_nrpe!check_users -a 10 20 }
其中,check_command中定義的命令和單個用戶中service文件的命令是否相同沒有關係。
check_uers和hg1_service只是服務名不一樣,但定義的命令卻是一樣的。
3. 關於servicegroup
個人感覺servicegroup沒多大用處,並不能像hostgroup那樣簡化管理,只不過在Icinga WEB界面上“服務組概述”有所顯示
servicegroup定義如下:
define servicegroup{ servicegroup_name servicegroup1 alias sg1 members 146,check_users,146,check_load }
members的格式為<host1>,<service1>,<host2>,<service2>,...<hostn>,<servicen>。
其中,host需在主機列表中定義過,service需在service文件中定義過(由service_description定義)。譬如,146主機定義的服務如下:
define service{ use generic-service host_name 146 service_description check_users check_command check_nrpe!check_users -a 10 20 } define service{ use generic-service host_name 146 service_description check_load check_command check_nrpe!check_load -a 10 20 }
4. 性能數據輸出長度的限制
icinga預設會從插件返回的資料庫中讀取前8KB的數據,這樣做的目的是為了阻止失去控制的插件向Nagios發送大量的數據。
如果不符合自己的需要,可以根據實際情況進行修改。
修改include/icinga.h中MAX_PLUGIN_OUTPUT_LENGTH參數,然後重新編譯即可。
#define MAX_PLUGIN_OUTPUT_LENGTH 8192 /* max length of plugin output (including perf data) */
其實,不僅僅這個,還需要修改nrpe插件的源碼文件
include/common.h有兩個參數需要修改
#define MAX_INPUT_BUFFER 4096 /* max size of most buffers we use */ #define MAX_PACKETBUFFER_LENGTH 4096 /* max amount of data we'll send in one query/response */
如果修改了MAX_PACKETBUFFER_LENGTH,則必須修改服務端nrpe插件中這個值(註意:MAX_INPUT_BUFFER值不必相同)不然會報以下錯
Jan 26 15:45:02 mysql-server2 nrpe[14201]: Error: Request packet had invalid CRC32. Jan 26 15:45:02 mysql-server2 nrpe[14201]: Client request was invalid, bailing out...
源碼中,MAX_PACKETBUFFER_LENGTH預設是1024,MAX_INPUT_BUFFER預設是2048,當我將完前者修改為4096後,發現,從服務端獲得的客戶端性能數據的長度雖然有所提供,但依舊達不到4096,只有2048,最後修改了MAX_INPUT_BUFFER的值為4096,才達到了自己想要的結果。