Last Updated on 2021年7月4日 by かんりにん
nagios ダウンタイムの定期スケジューリング
nagios標準のダウンタイム機能は一回限りのスケジュール設定のみが可能で、
"毎晩03時~05時は非通知"といった、定期的なスケジューリング機能を持っていない。
この機能を追加するプラグイン"Recurring schedule"。
- 参考サイト
お世話になっています!- 公式サイト
https://exchange.icinga.org/exchange/downtime_sched%3A+recurring+downtime+scheduler - ダウンロード元
http://www.monitoringexchange.org/attachment/download/Utilities/AddOn-Projects/Downtimes/downtime_sched/downtime-3.1.tar-gz
2014.08.20現在、リンクが変わってました。新しいリンク先はこちら↓
https://exchange.icinga.org/exchange/downtime_sched%3A+recurring+downtime+scheduler/files/2/downtime-3.2.tar.gz
- 公式サイト
1)インストール †
アーカイブを展開するとcgiや実行スクリプト、設定ファイルが
一通りそろっている親切設計。
$ wget http://www.monitoringexchange.org/attachment/download/Utilities/AddOn-Projects/Downtimes/downtime_sched/downtime-3.1.tar-gz $ tar zxvf downtime-3.1.tar-gz # chown -R nagios.nagios downtime-3.1
2)各ファイルの配置と編集 †
※変更内容は環境ごとに異なるので、自分の環境をチェックして
都度読み替えること。
1.downtime_job.pl †
# cp downtime_job.pl /usr/local/nagios/bin/ # vi /usr/local/nagios/bin/downtime_job.pl
- [編集内容]
31c31 < my($NAGDIR) = "/u02/nagios" ; # Nagios root directory --- > my($NAGDIR) = "/usr/local/nagios" ; # Nagios root directory 40c40 < my($CMDFILE) = "$NAGDIR/log/rw/nagios.cmd"; # Nagios CMD file --- > my($CMDFILE) = "$NAGDIR/var/rw/nagios.cmd"; # Nagios CMD file 42c42 < $OBJECTS = "$NAGDIR/log/objects.cache" # Nagios 2/3 objects file --- > $OBJECTS = "$NAGDIR/var/objects.cache" # Nagios 2/3 objects file 45c45 < $STATUSDAT = "$NAGDIR/log/status.dat" # Nagios status file --- > $STATUSDAT = "$NAGDIR/var/status.dat" # Nagios status file 47c47 < $RETENTIONDAT = "$NAGDIR/log/retention.dat" # Nagios retained status file --- > $RETENTIONDAT = "$NAGDIR/var/retention.dat" # Nagios retained status file 50c50 < $DOWNDAT = "$NAGDIR/log/downtime.dat" # Nagios 2 existing downtime --- > $DOWNDAT = "$NAGDIR/var/downtime.dat" # Nagios 2 existing downtime 54,56c54,56 < $STATUSLOG = "$NAGDIR/log/status.log"; # Nagios status log file < $HGCFG = "$NAGDIR/etc/hostgroups.cfg";# hostgroup definitions < $DOWNLOG = "$NAGDIR/log/downtime.log"; # existing sched downtime --- > $STATUSLOG = "$NAGDIR/var/log/status.log"; # Nagios status log file > $HGCFG = "$NAGDIR/etc/objects/hostgroup.cfg";# hostgroup definitions > $DOWNLOG = "$NAGDIR/var/log/downtime.log"; # existing sched downtime
2.downtime_sched.cgi †
# cp -p downtime_sched.cgi /usr/local/nagios/sbin/ # vi /usr/local/nagios/sbin/downtime_sched.cgi
- [編集内容]
20c20 < my($NAGIOS) = "/u02/nagios"; --- > my($NAGIOS) = "/usr/local/nagios"; 25c25 < my($STATUSLOG) = "$NAGIOS/log/status.log";# if defined, check validity --- > my($STATUSLOG) = "$NAGIOS/var/status.log";# if defined, check validity 27c27 < my($OBJECTS) = "$NAGIOS/log/objects.cache";# if defined, use nagios2 cache --- > my($OBJECTS) = "$NAGIOS/var/objects.cache";# if defined, use nagios2 cache
3.schedule.cfg 作成 †
etc/以下にスケジューリング設定用の空ファイルを用意する。
設定内容はcgiから生成されるので、作成当初は空でよい。
httpd実行ユーザーが書き込むので、オーナー権限を合わせる。
この環境ではapacheユーザーがhttpdを実行しているので、オーナーにapacheユーザーを指定。
# touch /usr/local/nagios/etc/schedule.cfg # chown apache.nagios /usr/local/nagios/etc/schedule.cfg # chmod 664 /usr/local/nagios/etc/schedule.cfg
4.side.phpへリンクを追加 †
アーカイブ内にリンク用タグのファイルが用意されているので、nagiosのside.phpの適切な場所へ
追加する。
# cd /usr/local/nagios/share/ # cp -p side.php side.php.20101201 # vi side.php
- [追記内容]
122a123 > <ul> <li><a href="/nagios/cgi-bin/downtime_sched.cgi" target="<?php echo $link_target;?>" rel="noopener">Recurring Downtime</a></li> </ul>
5.crontab登録 †
こちらもアーカイブ内にある"crontab"ファイルを参照に、
nagios実行ユーザーのcrontabに登録しておき、作業完了。
以下は毎時0分にチェックする設定例。
nagiosユーザーでcrontab -eしても、/etc/crontabに書き出しても、どちらでもOK。
- nagiosユーザーでcrontabを設定する場合
# su - nagios $ crontab -e
- [設定内容]
0 * * * * /usr/local/nagios/bin/downtime_job.pl >/usr/local/nagios/var/log/downtime.log 2>&1
- [設定内容]
- /etc/crontabに設定する場合
$ su - # vi /etc/crontab
- [設定内容]
0 * * * * nagios /usr/local/nagios/bin/downtime_job.pl >/usr/local/nagios/var/log/downtime.log 2>&1
設定後、問題なければ運用にのせる。
- [設定内容]
3)動作テスト †
スクリプト単体でのテスト。
キックするとチェックが実施される。
"Error"が出力されなければOK。
# /usr/local/nagios/bin/downtime_job.pl Reading in configuration Reading in status log to get list of services Reading in list of already scheduled downtime Checking for downtime due in next 10080 minutes #
4)管理画面からの設定。 †
1.設定(抜粋) †
nagios管理画面から"Recurring Downtime"をクリックし、設定。
3段階の範囲でダウンタイムを設定できる。
該当するものを選択し、ホスト、サービス、コメント、開始時間、有効時間、曜日、
一か月内の実行日を指定し、保存する。
- Recurring Hostgroup Downtime
ホストグループ指定でdowntimeを指定。 - Recurring Host Downtime
ホスト指定でdowntimeを指定。 - Recurring Service Downtime
ホスト別にサービス指定でdowntimeを指定。※これが一番多く使いそう。
2.設定内容の確認 †
登録内容は/usr/local/nagios/etc/schedule.cfgに出力されるので確認しておく。
- また、本機能で設定した内容はnagiosのデフォルト機能の"downtime"に反映される。
設定後、次のcron実行時にデフォルトの"downtime"にスケジュールが追加されるので
確認しておく。
※ただし、こちらは直近の設定のみが出力される。