統合監視システムのNagios(4.3.4)をインストールして使用してはいたものの、アップデートせずに放置していたので最新版(4.4.6)にアップデートしました。
◆Nagios最新版のダウンロードとインストール
1 2 3 4 5 6 7 8 | # wget https://sourceforge.net/projects/nagios/files/nagios-4.x/nagios-4.4.6/nagios-4.4.6.tar.gz # tar zxvf nagios-4.4.6.tar.gz # cd nagios-4.4.6/ # wget http://ftp.momo-i.org/pub/security/nagios/patches/nagios-jp-4.4.6.patch.gz # gzip -dc nagios-jp-4.4.6.patch.gz |patch -p1 # ./configure && make all && make fullinstall && make install-config # cd # rm -rf nagios-4.4.6* |
1行目:最新版を確認してダウンロード
2行目:展開
3行目:展開したディレクトリへ移動
4行目:日本語化パッチ(最新版)のダウンロード
5行目:パッチの適用
6行目:インストール
7行目:展開先ディレクトリから抜ける
8行目:ダウンロード及び展開ディレクトリの削除
◆Nagiosプラグインのダウンロードとインストール
1 2 3 4 5 6 | # wget https://nagios-plugins.org/download/nagios-plugins-2.3.3.tar.gz # tar zxvf nagios-plugins-2.3.3.tar.gz # cd nagios-plugins-2.3.3/ # ./configure && make && make install # cd # rm -rf nagios-plugins-2.3.3* |
1行目:Nagiosプラグイン(最新版)のダウンロード
2行目:展開
3行目:展開したディレクトリへ移動
4行目:インストール
5行目:展開先ディレクトリから抜ける
6行目:ダウンロード及び展開ディレクトリの削除
◆Nagiosの設定
最新バージョンをインストールすると各nagios配下のディレクトリにある「.cfg」ファイルが自動でバックアップ「.cfg~」でリネームされていました。
旧バージョンで設定した「.cfg」ファイルの変更箇所を同様に変更する必要があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | # vi /usr/local/nagios/etc/nagios.cfg # You can also tell Nagios to process all config files (with a .cfg # extension) in a particular directory by using the cfg_dir # directive as shown below: cfg_dir=/usr/local/nagios/etc/servers process_performance_data=1 host_perfdata_command=process-host-perfdata service_perfdata_command=process-service-perfdata # # service performance data # service_perfdata_file=/usr/local/pnp4nagios/var/service-perfdata service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tSERVICESTATE::$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTATETYPE$ service_perfdata_file_mode=a service_perfdata_file_processing_interval=15 service_perfdata_file_processing_command=process-service-perfdata-file # # host performance data starting with Nagios 4.0 # host_perfdata_file=/usr/local/pnp4nagios/var/host-perfdata host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$ host_perfdata_file_mode=a host_perfdata_file_processing_interval=15 host_perfdata_file_processing_command=process-host-perfdata-file |
1行目:「nagios.cfg」の編集
7行目:51行目の行頭の「#」を削除(コメント解除)して、サーバ監視設定の有効化
9行目:812行目の値を「0」から「1」に変更して、パフォーマンスデータ取得を有効化
11・12行目:824・825行目をコメント解除して、ホストパフォーマンスデータ・サービスパフォーマンスデータ取得コマンドを有効化
14行目~:最終行へ追加
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # vi /usr/local/nagios/etc/objects/contacts.cfg # Just one contact defined by default - the Nagios admin (that's you) # This contact definition inherits a lot of default values from the # 'generic-contact' template which is defined elsewhere. define contact { contact_name nagiosadmin ; Short name of user use generic-contact ; Inherit default values from generic-contact template (de fined above) alias Nagios Admin ; Full name of user email xxxxxxxx@xxxxx.xxx ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ****** } |
1行目:「contacts.cfg」の編集
13行目:32行目のemailに管理者用メールアドレスを指定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | # vi /usr/local/nagios/etc/objects/localhost.cfg # Define a service to check SSH on the local machine. # Disable notifications for this service by default, as not all users may have SSH enabled. define service { use local-service ; Name of service template to use host_name localhost service_description SSH check_command check_ssh notifications_enabled 1 } # Define a service to check HTTP on the local machine. # Disable notifications for this service by default, as not all users may have HTTP enabled. define service { use local-service ; Name of service template to use host_name localhost service_description HTTP check_command check_http notifications_enabled 1 } |
1行目:「localhost.cfg」の編集
12行目:「1」に変更し、SSHの状態変化時の通知を有効化
24行目:「1」に変更し、HTTPの状態変化時の通知を有効化
1 2 3 4 5 6 7 8 9 10 11 12 13 | # vi /usr/local/nagios/etc/objects/commands.cfg define command { command_name notify-host-by-email command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/nkf -j | /bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$ } define command { command_name notify-service-by-email command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /usr/bin/nkf -j | /bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$ } |
1行目:「commands.cfg」の編集
6・12行目:「| /usr/bin/nkf -j」メール本文文字化け対処のため、nkfコマンドの追加
◆監視サービス設定追加
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | # vi /usr/local/nagios/etc/objects/commands.cfg #define command { # command_name process-host-perfdata # command_line /usr/bin/printf "%b" "$LASTHOSTCHECK$\t$HOSTNAME$\t$HOSTSTATE$\t$HOSTATTEMPT$\t$HOSTSTATETYPE$\t$HOSTEXECUTIONTIME$\t$HOSTOUTPUT$\t$HOSTPERFDATA$\n" >> /usr/local/nagios/var/host-perfdata.out #} #define command { # command_name process-service-perfdata # command_line /usr/bin/printf "%b" "$LASTSERVICECHECK$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICESTATE$\t$SERVICEATTEMPT$\t$SERVICESTATETYPE$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$\n" >> /usr/local/nagios/var/service-perfdata.out #} define command{ command_name check_ntp command_line $USER1$/check_ntp -H $ARG1$ -w $ARG2$ -c $ARG3$ } define command{ command_name check_clamd command_line $USER1$/check_clamd -H $ARG1$ } define command{ command_name check_mysql command_line $USER1$/check_mysql -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ } define command{ command_name check_mem command_line $USER1$/check_mem -w $ARG1$ -c $ARG2$ -W $ARG3$ -C $ARG4$ } define command{ command_name check_traffic command_line $USER1$/check_traffic_pnp4nagios.sh -i $ARG1$ -w $ARG2$ -c $ARG3$ } define command{ command_name process-service-perfdata-file command_line /bin/mv /usr/local/pnp4nagios/var/service-perfdata /usr/local/pnp4nagios/var/spool/service-perfdata.$TIMET$ } define command{ command_name process-host-perfdata-file command_line /bin/mv /usr/local/pnp4nagios/var/host-perfdata /usr/local/pnp4nagios/var/spool/host-perfdata.$TIMET$ } |
1行目:続けて「command.cfg」の編集
3~13行目:コメントアウト
15行目~:最下行に必要な監視サービスを追加
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | # vi /usr/local/nagios/etc/objects/localhost.cfg #define service { # use local-service ; Name of service template to use # host_name localhost # service_description Swap Usage # check_command check_local_swap!20%!10% #} define service{ use generic-service host_name localhost #service_description Memory Free service_description Memory Usage check_command check_mem!80!90!80!90 } define service{ use generic-service host_name localhost service_description NTP check_command check_ntp!ntp.nict.jp!1!2 } define service{ use generic-service host_name localhost service_description clamd check_command check_clamd!/var/run/clamd.scan/clamd.sock } define service{ use generic-service host_name localhost service_description MySQL check_command check_mysql!root!sqlroot } define service{ use generic-service host_name localhost service_description Traffic Usage check_command check_traffic!venet0!80000000!90000000 } |
1行目:「localhost.cfg」の編集
3~8行目:「check_mem」プラグインに包含されるためコメントアウト
10行目~:最下行に必要な監視サービスを追加
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | # vi /usr/local/nagios/etc/objects/ templates.cfg ############################################################################### # # HOST TEMPLATES # ############################################################################### # Generic host definition template # This is NOT a real host, just a template! define host { name generic-host ; The name of this host template notifications_enabled 1 ; Host notifications are enabled event_handler_enabled 1 ; Host event handler is enabled flap_detection_enabled 1 ; Flap detection is enabled process_perf_data 1 ; Process performance data retain_status_information 1 ; Retain status information across program rest arts retain_nonstatus_information 1 ; Retain non-status information across program restarts notification_period 24x7 ; Send host notifications at any time register 0 ; DON'T REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE! action_url /pnp4nagios/graph?host=$HOSTNAME$' onmouseover="get_g('$HOSTNAME$','_HOST_')" onmouseout="clear_g()" } ############################################################################### # # SERVICE TEMPLATES # ############################################################################### # Generic service definition template # This is NOT a real service, just a template! define service { name generic-service ; The 'name' of this service template active_checks_enabled 1 ; Active service checks are enabled passive_checks_enabled 1 ; Passive service checks are enabled/accepted parallelize_check 1 ; Active service checks should be parallelized (disabling this can lead to major performance problems) obsess_over_service 1 ; We should obsess over this service (if necessary) check_freshness 0 ; Default is to NOT check service 'freshness' notifications_enabled 1 ; Service notifications are enabled event_handler_enabled 1 ; Service event handler is enabled flap_detection_enabled 1 ; Flap detection is enabled process_perf_data 1 ; Process performance data retain_status_information 1 ; Retain status information across program restarts retain_nonstatus_information 1 ; Retain non-status information across program restarts is_volatile 0 ; The service is not volatile check_period 24x7 ; The service can be checked at any time of the day max_check_attempts 3 ; Re-check the service up to 3 times in order to determine its final (hard) state check_interval 10 ; Check the service every 10 minutes under normal conditions retry_interval 2 ; Re-check the service every two minutes until a hard state can be determined contact_groups admins ; Notifications get sent out to everyone in the 'admins' group notification_options w,u,c,r ; Send notifications about warning, unknown, critical, and recovery events notification_interval 60 ; Re-notify about service problems every hour notification_period 24x7 ; Notifications can be sent out at any time register 0 ; DON'T REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE! action_url /pnp4nagios/graph?host=$HOSTNAME$&srv=$SERVICEDESC$' onmouseover="get_g('$HOSTNAME$','$SERVICEDESC')" onmouseout="clear_g()"<br>} |
1行目:「templates.cfg」の編集
25行目:Nagios画面からPNP画面へのリンク表示(ホスト)の追加
62行目:Nagios画面からPNP画面へのリンク表示(サービス)の追加
◆設定反映
1 | # systemctl restart nagios.service |
Nagiosサービスを再起動して、設定を反映する。
ブラウザでNagios監視画面にアクセスし確認する。
併せて、性能統計グラフが表示されることを確認する。
◆不要ファイルの削除
リネームされた各設定ファイルを削除
1 2 | # rm -f /usr/local/nagios/etc/*.cfg~ # rm -f /usr/local/nagios/etc/objects/*.cfg~ |
必ず「~(チルダ)」を付けるのを忘れないでください。
不安であれば、それぞれのディレクトリへ移動し、一つ一つコピペして削除するといいと思います。
これで、アップデートした際の要領がまとまったので迷わなくなりそうです…