Top/Nagios/設定

設定 の変更点はてなブックマーク


以下
|監視対象ホスト|IP|監視対象サービス|h
|router1|192.168.0.1|PING|
|linux1|192.168.0.2|SSH|
|windows1|192.168.0.10|PING|
|linux2|172.16.0.1|HTTP|
と仮定。~

*設定ファイル
|ファイル名        |詳細|h
|[[cgi.cfg>Nagios/設定#content_1_1]]|CGI設定|
|[[checkcommands.cfg>Nagios/設定#content_1_2]]|監視のために実行するコマンド|
|contactgroups.cfg|アラート通知先のグループ|
|[[contacts.cfg>Nagios/設定#content_1_3]]|アラート通知先|
|dependencies.cfg|依存定義|
|escalations.cfg|詳細なアラートの通知方法|
|[[hostgroups.cfg>Nagios/設定#content_1_4]]|監視対象ホストのグループ|
|[[hosts.cfg>Nagios/設定#content_1_5]]|監視対象ホスト|
|[[misccommands.cfg>Nagios/設定#content_1_6]]|アラートを通知するためのコマンド|
|[[nagios.cfg>Nagios/設定#content_1_7]]|メイン設定|
|resource.cfg|リソース設定|
|[[services.cfg>Nagios/設定#content_1_8]]|チェックする各監視対象ホストのサービス|
|timeperiods.cfg|アラートを通知する時間帯|
|[[その他の *.cfg>Nagios/設定#content_1_9]]|ホストごとのサービスの設定 (自分で作成)|

*cgi.cfg
認証周りだけ設定。guestは閲覧のみ可能。
 vi /usr/local/nagios/etc/cgi.cfg
>
 authorized_for_system_information=nagiosadmin
>
 authorized_for_configuration_information=nagiosadmin
>
 authorized_for_system_commands=nagiosadmin
>
 authorized_for_all_services=nagiosadmin,guest
 authorized_for_all_hosts=nagiosadmin,guest
>
 authorized_for_all_service_commands=nagiosadmin
 authorized_for_all_host_commands=nagiosadmin

*checkcommands.cfg
適当に追加
 vi /usr/local/nagios/etc/checkcommands.cfg
>
 # 'check_ssh' command definition
 define command{
         command_name    check_ssh
         command_line    $USER1$/check_ssh -t $ARG1$ $HOSTADDRESS$
         }

*contacts.cfg
通知先を変更
 vi /usr/local/nagios/etc/contacts.cfg
>
 # 'nagios' contact definition
 define contact{
         contact_name                    nagios
         alias                           Nagios Admin
         service_notification_period     24x7
         host_notification_period        24x7
         service_notification_options    w,u,c,r
         host_notification_options       d,u,r
         service_notification_commands   notify-by-email
         host_notification_commands      host-notify-by-email
         email                           nagios-admin@example.com
         }

*hostgroups.cfg
グループごとに分ける
 vi /usr/local/nagios/etc/hostgroups.cfg
>
 # 'local-machines' host group definition
 define hostgroup{
         hostgroup_name  local-machines               ; ホストグループ名
         alias           Local Machines               ; 愛称
         contact_groups  linux-admins                 ; 通知グループ
         members         router1,linux1,windows1      ; メンバー
         }
 
 # 'sample-servers' host group definition
 define hostgroup{
         hostgroup_name  sample-servers
         alias           Sample-Servers
         contact_groups  linux-admins
         members         linux2
         }

*hosts.cfg
ホストの設定は一般設定に極力まとめてしまう
 vi /usr/local/nagios/etc/hosts.cfg
>
 # Generic host definition template
 define host{
         name                            generic-host ; テンプレート名
         notifications_enabled           1            ; 通知の有無
         event_handler_enabled           1            ; イベントハンドラの有無
         flap_detection_enabled          1            ; ステータス反転の検出
         process_perf_data               1            ; パフォーマンス情報を保存
         retain_status_information       1            ; ステータス情報を保存
         retain_nonstatus_information    1            ; ステータス情報以外を保存
 
         register                        0            ; この設定をテンプレートとして登録
 
         max_check_attempts      10                   ; リトライ回数
         notification_interval   480                  ; 通知間隔
         notification_period     24x7                 ; 通知時間帯
         notification_options    d,u,r                ; このステータスのときに通知
         }
 
 # 'router1' host definition
 define host{
         use                     generic-host
 
         host_name               router1
         alias                   Router #1
         address                 192.168.0.1
         check_command           check-host-alive
         }
 
 # 'linux1' host definition
 define host{
         use                     generic-host         ; 使用するテンプレート
 
         host_name               linux1               ; ホスト名
         alias                   Linux Server #1      ; 愛称
         address                 192.168.0.2          ; IP
         parents                 router1              ; 親となるホスト
         check_command           check-host-alive     ; 生死チェックのコマンド
         }
 
 # 'windows1' host definition
 define host{
         use                     generic-host
 
         host_name               windows1
         alias                   Windows #1
         address                 192.168.0.10
         parents                 router1
         check_command           check-host-alive
         }
 
 # 'linux2' host definition
 define host{
         use                     generic-host
 
         host_name               linux2
         alias                   Linux Server #2
         address                 172.16.0.1
         check_command           check-host-alive
         }

-notification_periodの取る値は timeperiods.cfg の timeperiod_name
-notification_optionsの取る値
|~d|DOWN|
|~u|UNREACHABLE|
|~r|回復したら|
|~n|通知しない|
-parentsは &ref(Nagios/status_map.png,noimg,noicon,Status Map);, &ref(Nagios/3-d_status_map.png,noimg,noicon,3-D Status Map); 等で必要になるので、きちんと指定すること。~
指定されていない場合はNagios Process(図の中心)を親とします。~

*misccommands.cfg
通知メールを読みやすく。
 # 'notify-by-email' command definition
 define command{
         command_name    notify-by-email
         command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nType   : $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost   : $HOSTALIAS$ ($HOSTNAME$)\nAddress: $HOSTADDRESS$\nState  : $SERVICESTATE$\nDate   : $SHORTDATETIME$\nInfo   :\n\n$OUTPUT$" | /usr/local/nagios/sbin/mail.pl "** $NOTIFICATIONTYPE$ alert - $HOSTALIAS$ ($HOSTNAME$)/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$
         }
 
 # 'host-notify-by-email' command definition
 define command{
         command_name    host-notify-by-email
         command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nType    : $NOTIFICATIONTYPE$\nHost   : $HOSTNAME$\nState  : $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo   : $OUTPUT$\n\nDate   : $SHORTDATETIME$\n" | /usr/local/nagios/sbin/mail.pl "Host $HOSTSTATE$ alert for $HOSTNAME$!" $CONTACTEMAIL$
         }

mail.pl は[[Devel/Perl/Net-SMTP]]のものを/usr/local/nagios/sbin/mail.plとして保存して使用。

*nagios.cfg
dependencies.cfgとescalations.cfgは今回は使用しません。~
サービスの設定はホストごとに別ファイルにして管理を楽にします。~
日付は読みやすい形式(YYYY-MM-DD HH:MM:SS)に変更。
 vi /usr/local/nagios/etc/nagios.cfg
>
 #cfg_file=/usr/local/nagios/etc/dependencies.cfg
 #cfg_file=/usr/local/nagios/etc/escalations.cfg
>
 cfg_file=/usr/local/nagios/etc/s_router1.cfg
 cfg_file=/usr/local/nagios/etc/s_linux1.cfg
 cfg_file=/usr/local/nagios/etc/s_windows1.cfg
 cfg_file=/usr/local/nagios/etc/s_linux2.cfg
>
 #date_format=us
 date_format=iso8601

CGI経由で設定変更する場合は
 groupadd nagiocmd
 usermod -G nagiocmd nagios
 usermod -G nagiocmd apache

 chown nagios.nagiocmd /usr/local/nagios/var/rw
 chmod 2770 /usr/local/nagios/var/rw

 vi /usr/local/nagios/etc/nagios.cfg
>
 check_external_commands=1

*services.cfg
サービスの設定も極力一般設定にまとめてしまう
 vi /usr/local/nagios/etc/services.cfg
>
 # Generic service definition template
 define service{
         name                            generic-service ; テンプレート名
         active_checks_enabled           1               ; 自身でのチェックの有無
         passive_checks_enabled          1               ; DMSによるチェックの有無
         parallelize_check               1               ; 並列チェックの有無
         obsess_over_service             1               ; サービスに付きまとうか
         check_freshness                 0               ; 鮮度チェックの有無
         notifications_enabled           1               ; 通知の有無
         event_handler_enabled           1               ; イベントハンドラの有無
         flap_detection_enabled          1               ; ステータス反転の検出
         process_perf_data               1               ; パフォーマンス情報を保存
         retain_status_information       1               ; ステータス情報を保存
         retain_nonstatus_information    1               ; ステータス情報以外を保存
 
         register                        0               ; この設定をテンプレートとして登録
 
         notification_interval           120             ; 通知間隔
         notification_period             24x7            ; 通知時間帯
         notification_options            w,u,c,r         ; このステータスのときに通知
         contact_groups                  linux-admins    ; 通知グループ
         }

-notification_periodの取る値は timeperiods.cfg の timeperiod_name
-notification_optionsの取る値
|~w|WARNING|
|~u|UNKNOWN|
|~c|CRITICAL|
|~r|回復したら|
|~n|通知しない|

*&color(#FF0000){s_router1.cfg};
別ファイルにしたサービスの設定
 vi /usr/local/nagios/etc/s_router1.cfg
>
 # router1
 define service{
         use                             generic-service ; 使用するテンプレート名
 
         host_name                       router1         ; 対象ホスト名
         service_description             PING            ; 対象サービスの説明
         is_volatile                     0               ; 揮発性の有無
         check_period                    24x7            ; チェック時間帯
         max_check_attempts              3               ; リトライ回数
         normal_check_interval           5               ; チェック間隔
         retry_check_interval            1               ; リトライ間隔
         check_command                   check_ping!100.0,20%!500.0,60% ; チェックコマンド
         }

-check_periodの取る値は timeperiods.cfg の timeperiod_name

*&color(#FF0000){s_linux1.cfg};
別ファイルにしたサービスの設定
 vi /usr/local/nagios/etc/s_linux1.cfg
>
 # linux1
 define service{
         use                             generic-service
 
         host_name                       linux1
         service_description             SSH
         is_volatile                     0
         check_period                    24x7
         max_check_attempts              3
         normal_check_interval           1
         retry_check_interval            1
         check_command                   check_ssh!2
         }

*&color(#FF0000){s_windows1.cfg};
別ファイルにしたサービスの設定
 vi /usr/local/nagios/etc/s_windows1.cfg
>
 # windows1
 define service{
         use                             generic-service
 
         host_name                       windows1
         service_description             PING
         is_volatile                     0
         check_period                    24x7
         max_check_attempts              3
         normal_check_interval           5
         retry_check_interval            1
         check_command                   check_ping!100.0,20%!500.0,60%
         }

*&color(#FF0000){s_linux2.cfg};
別ファイルにしたサービスの設定
 vi /usr/local/nagios/etc/s_linux2.cfg
>
 # linux2
 define service{
         use                             generic-service
 
         host_name                       linux2
         service_description             HTTP
         is_volatile                     0
         check_period                    24x7
         max_check_attempts              3
         normal_check_interval           1
         retry_check_interval            1
         check_command                   check_http
         }



*Apacheの設定
 vi /usr/local/apache2/conf/httpd.conf
>
 # for Nagios
 ScriptAlias /nagios/cgi-bin/ "/usr/local/nagios/sbin/"
 <Directory "/usr/local/nagios/sbin">
     Options ExecCGI
     Order allow,deny
     Allow from all
 
     AuthUserFile  /usr/local/nagios/etc/.htpasswd
     AuthName      "Please Enter Your Password"
     AuthType      Basic
     Require valid-user
 </Directory>
 
 Alias /nagios/ "/usr/local/nagios/share/"
 <Directory "/usr/local/nagios/share">
     Options None
     Order allow,deny
     Allow from all
 
     AuthUserFile  /usr/local/nagios/etc/.htpasswd
     AuthName      "Please Enter Your Password"
     AuthType      Basic
     Require valid-user
 </Directory>


 /usr/local/apache2/bin/htpasswd -c /usr/local/nagios/etc/.htpasswd nagiosadmin
 /usr/local/apache2/bin/htpasswd /usr/local/nagios/etc/.htpasswd guest
設定を再読み込み
 /etc/rc.d/init.d/httpd graceful

*設定が終わったら
設定ファイルの整合性を確認
 /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Total Warnings: 0~
Total Errors:   0~
となっていることを確認して、~
Nagiosを起動
 /etc/rc.d/init.d/nagios start
ちなみに監視中に設定を再読み込みするには下記のようにする
 /etc/rc.d/init.d/nagios reload

*&ref(Nagios/status_map.png,noimg,noicon,Status Map);, &ref(Nagios/3-d_status_map.png,noimg,noicon,3-D Status Map); 等のアイコン
-[[Nagios/設定/アイコン]]

*&ref(Nagios/3-d_status_map.png,noimg,noicon,3-D Status Map);の表示
+まず、クライアントマシンに[[Cortona VRML Client>http://www.parallelgraphics.com/products/cortona/]]などのVRMLプラグインを入れます。
+次にNagios監視サーバーのMIMEを書き換えます。
 vi /etc/mime.types
>
 # model/vrml                     wrl vrml
 x-world/x-vrml                  wrl

*Tips
**サービスは以下のようにまとめて書けます。
 # servers
 define service{
         use                             generic-service
 
         host_name                       linux1,linux2,windows1
         service_description             HTTP
         is_volatile                     0
         check_period                    24x7
         max_check_attempts              3
         normal_check_interval           1
         retry_check_interval            1
         check_command                   check_http
         }

**任意のコマンドを実行
-[[イベントハンドラ>http://nagios.x-trans.jp/Nagios-doc/JAPANESE/eventhandlers.html#example]]

*Amazon
#amazon(4774145823,left)
#amazon(3897218801,left)
#amazon(4873112044,left)
#amazon(4797820217,left)

#amazon(4774165433,left)
#amazon(4774178659,left)
差分 一覧