Nagios配置文件的結構
對于Nagios配置文件結構的一些想法- [Nagios]:
最近工作著實很忙..已經很久沒有來寫博客了..今天在一陣風大哥的提醒下我才想起我還有這么一個博客..并且發現自己的文章被轉載了..還沒注明出處- -|||..言歸正傳..
Nagios的配置文件定義的靈活度和自由度是非常高的,為什么這么說呢,大家可以做一個測試,就是把nagios/etc/objects/下的所有的配置文件全部整合到一起,例如這樣做:
- # 所在目錄 /usr/local/nagios/etc/objects
- # cat *.cfg > temp.cfg
然后將nagios的主配置文件 nagios.cfg中的如下配置注釋掉:
- #cfg_file=/usr/local/nagios/etc/objects/commands.cfg
- #cfg_file=/usr/local/nagios/etc/objects/contacts.cfg
- #cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
- #cfg_file=/usr/local/nagios/etc/objects/templates.cfg
之后添加如下一行:
- cfg_file=/usr/local/nagios/etc/objects/temp.cfg
保存&退出
檢查nagios配置文件的邏輯關系是否有誤:
- #/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
返回結果必然是:
- Total Warnings: 0
- Total Errors: 0
為什么會這樣呢?
Nagios對于objects目錄下的配置文件名稱沒有明確的命名規定,只要文件中的配置定義語法沒有問題就可以了。
那么對于這種非常靈活的定義方式,我們可以更加靈活的去運用它。
最近隨著需要監控的服務器越來越多,對于nagios配置文件的修改及維護變得越來越麻煩,原因如下:
按照網上很多"教程"的方法來定義配置文件,所有關于hots的定義全部放到了hosts.cfg中,服務的定義全部放倒services.cfg中。在服務器數量變得越來越多時,這兩個配置文件也會變得越來越大,增刪主機服務也會變得越來越麻煩。在經過思考和試驗后,我修改了我的nagios主機和服務配置文件的定義方式:就是以每主機的方式來定義與這臺主機所相關的任何配置。舉個例子:
創建一個配置文件:10_0_0_1.cfg (以IP地址命名)
其中的定義如下:
- ################ host #################
- define host{
- host_name Autonomy
- alias Autonomy
- address 10.0.0.1
- check_command check-host-alive
- max_check_attempts 5
- check_period 24x7
- contact_groups admins
- }
- ################ services ################
- define service{
- host_name Autonomy
- service_description Check-alive
- check_command check-host-alive
- max_check_attempts 10
- normal_check_interval 3
- retry_check_interval 2
- check_period 24x7
- notification_period 24x7
- contact_groups admins
- }
- define service{
- host_name Autonomy
- service_description IDOL_ACI_Port_9000
- check_command check_tcp!9000
- max_check_attempts 10
- normal_check_interval 3
- retry_check_interval 2
- check_period 24x7
- notification_period 24x7
- contact_groups admins
- }
- define service{
- host_name Autonomy
- service_description IDOL_Index_Port_9001
- check_command check_tcp!9001
- max_check_attempts 10
- normal_check_interval 3
- retry_check_interval 2
- check_period 24x7
- notification_period 24x7
- contact_groups admins
- }
- define service{
- host_name Autonomy
- service_description IDOL_Service_Port_9002
- check_command check_tcp!9002
- max_check_attempts 10
- normal_check_interval 3
- retry_check_interval 2
- check_period 24x7
- notification_period 24x7
- contact_groups admins
- }
- #定義限制告警數
- define hostescalation{
- host_name Autonomy
- first_notification 4
- last_notification 0
- notification_interval 30
- contact_groups sysadmin
- }
- define serviceescalation{
- host_name Autonomy
- service_description IDOL_ACI_Port_9000,IDOL_Index_Port_9001,IDOL_Service_Port_9002
- first_notification 4
- last_notification 0
- notification_interval 30
- contact_groups sysadmin
- }
保存&退出
然后在nagios.cfg中添加:
- cfg_file=/usr/local/nagios/etc/objects/10_0_0_1.cfg
檢查nagios配置文件的邏輯關系是否有誤:
- #/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
如果語法沒有錯誤肯定是報錯的,再以這種方式將其他主機進行定義后即可。
使用這種方式來配置nagios我個人覺得方便了很多,畢竟有些服務器上面運行的服務是一樣的,只要將配置文件cp一份修改IP地址即可。
不能說這種配置一定就比常規的配置方法好用,適合就是***的,希望能夠對大家有些幫助。
【編輯推薦】