Nagios監視項目追加設定

VPSのCentOS7にインストールしたNagios(過去記事:「NagiosをYUMでインストール」)に監視項目の追加及びダウンタイムスケジューリング設定要領の備忘録です。

◆追加監視項目

下記の6項目を追加し設定します。

1 メモリ使用状況
2 ログインユーザ数
3 NTP誤差状況
4 clamd
5 MySQL
6 ネットワーク使用状況

◆仕組み

私の環境では、ローカルホスト(当サーバ)の監視なので、「nagios.cfg」で指定される「localhost.cfg」と「commands.cfg」の設定ファイルを使用して設定します。

「commands.cfg」に追加するコマンドセクションを設定し、「localhost.cfg」に定義済みコマンドを使用して追加監視項目サービスを設定します。

Nagiosの各設定ファイル(cfgファイル)で使用できるマクロ($USERx$、$ARGx$など)の一覧は「Standard Macros in Nagios」で確認することができます。

◆監視項目設定

・メモリ使用状況

1行目:Nagios Exchangeからメモリ使用状況を監視するためのプラグインをダウンロード
2行目:ダウンロードしたプラグインを「plugins」ディレクトリに移動
3行目:実行権限を付与

1行目:監視サービスプラグインが格納されているディレクトリに移動
2行目:「check_mem」プラグインのヘルプ参照

1行目:「commands.cfg」にコマンド定義を追加
3行目:メモリチェックの定義であることのコメント
7行目:コマンドを特定するための名前を指定
8行目:実行するコマンドライン

1行目:「localhost.cfg」にサービス定義を追加
5行目:useディレクティブで、「generic-service」テンプレートから設定を継承するように指定
6行目:host_nameでサービスを割り当てるホストオブジェクトを指定
7行目:service_descriptionはサービスに対する説明
8行目:check_commandでサービス監視状態を確認するコマンドを指定
   メモリ使用量80%以上で警告、90%以上で異常、スワップ使用量80%以上で警告、90% 以上で異常で設定
11~17行目:追加した「check_mem」でSwapも確認できるためコメントアウト

・ログインユーザ数

1行目:「localhost.cfg」にあるログインユーザ数の値を編集
8行目:ログインユーザ数を3以上で警告、5以上で異常で設定

・ NTP誤差状況

1行目:「check_ntp」プラグインのヘルプ参照

1行目:「commands.cfg」にコマンド定義を追加
8行目:ntpのチェックを実行するコマンドライン

1行目:「localhost.cfg」にサービス定義を追加
8行目:ホストにNTPサーバ「ntp.nict.jp」、誤差が1秒で警告、2秒で異常に設定

・clamd

1行目:「check_clamd」プラグインのヘルプ参照

1行目:「commands.cfg」にコマンド定義を追加
8行目:clamdと接続テストを実行するコマンドライン

1行目:「localhost.cfg」にサービス定義を追加
8行目:ホストにclamdソケットをフルパスで設定

・MySQL

1行目:「check_mysql」プラグインのヘルプ参照

1行目:「commands.cfg」にコマンド定義を追加
8行目:MySQLサーバと接続テストを実行するコマンドライン

1行目:「localhost.cfg」にサービス定義を追加
8行目:ホストの指定は必須ではなく、デフォルトでローカル・データベースに接続するた め、ユーザ名とパスワードのみ設定

・ ネットワーク使用状況

1行目: Nagios Exchangeからネットワーク使用状況を監視するためのプラグインをダウンロード
2行目:ダウンロードしたプラグインを「plugins」ディレクトリに移動
3行目:実行権限を付与

1行目:「check_traffic_pnp4nagios.sh」プラグインのヘルプ参照

1行目:「check_traffic_pnp4nagios.sh」の編集
3行目:コメントアウト
4行目:追加し、一時ディレクトリを指定
6行目:コメントアウト
7行目:6行目を変数を使用した記述に変更
9,10,16,17行目:コメントアウト
11,12,18,19行目:ifconfigコマンド実行時の出力フォーマットに合わせた変更

1行目:「commands.cfg」にコマンド定義の追加
8行目:NICの送受信状態を確認するコマンドライン

1行目:「localhost.cfg」にサービス定義を追加
8行目:インターフェイス名「venet0」の単位時間あたりの使用量が80Mbit以上で警告、90Mbit以上で異常に設定

1行目:「nagios」のサービスを再起動

◆Downtime Scheduling Utility設定

サーバ運用時、閑散時間にバックアップやウィルスチェックの定時実行を設定しています。
その時間帯においては処理によってサーバが一時的に高負荷となってしまうため、Nagiosが警告・異常を検知する場合があります。
日々、定時で実行される場合は、毎回同じ時間にNagiosの警告・異常を受信するのは煩わしくなってしまうので、Downtime Scheduling Utilityを導入し、CRON設定して自動化する。

・ダウンロード

Nagios Exchangeからnagios_downをダウンロードし、サーバへWinSCPなどでアップロードします。

・ファイルの展開

1~4行目:「tar.gz」の拡張子が付いていたので、tarコマンドで展開しようとしたところ、tarアーカイブではないエラー
6行目:fileコマンドでファイルタイプを確認
7行目:gzipの圧縮ファイルと判明
10行目:gunzipで解凍
12行目:tarコマンドで展開

tar.gzでまとめたファイルをさらにgzipで圧縮していたファイルのようです。

・ファイルの編集

1行目:展開した「nagios_down.php」ファイルをコピー
2行目:ダウンロード及び展開したファイルを削除
3行目:「nagios_down.php」ファイルを編集
5行目:コメントアウト
6行目:「nagios.cmd」のパスを指定して追加
8行目:「nagios.cmd」が格納されるディレクトリを作成

1行目:CRON設定ファイルを作成
3行目:例として、毎日4:00~6:00の間は、CPU負荷の監視は実施しない設定

◆エラー対処

cron daemonからエラーメールを受信したので対処しました。

・「PHP Warning」に対する対処

1行目:PHP設定ファイルの編集
3行目:コメントアウト
4行目:通知及び警告メッセージを出力しないように追加

・「PHP Fatal error」に対する対処

1行目:「nagios_down.php」ファイルの編集
3行目:コメントアウト(ereg関数は、PHP5.3から非推奨となり、PHP7.0で削除されている)
4行目:「preg_match」関数に変更し追加

・「check_mem」の監視で取得する値の不具合に対する対処

Nagiosの監視Webを表示すると、「check_mem」のSWAPがTotal、Usedともに同じ値となっており、常に100%となっている不具合を対処しました。

1行目:「check_mem」ファイルの確認(抜粋)
3行目:配列変数で実行するコマンドを分解して実行して確認していく

短く区切って順に長くしながら実行していくとこの状態が確認できる

最終的に実行すると各値がスペース区切りで表示される
しかし、egrepで6項目取得しているはずが最後の7個目に謎の0が表示されている
とりあえず、影響はしないので放置する

次に「check_mem」の配列内の値を取得する部分(上記「check_mem(抜粋)」)5~29行目を確認します。

ここで、「swapTotal」及び「swapFree」を取得する配列番号が、それぞれ5と6になっているが、配列番号は0から始まるため4と5がそれぞれの値となるはずである。

1行目:「array[5]」を「array[4]」に修正
3行目:「array[6]」を「array[5]」に修正

1行目: 「nagios」のサービスを再起動

しばらくして、Nagiosの監視Webを再確認すると正常に取得されているのが確認できました。

追加した監視項目もそれぞれ正常に表示されており、監視状態が整いました。
あとは、運用状態に合わせて監視する閾値をそれぞれ微調整していく必要があります。

いいね! & シェア お願いします。

コメントは受け付けていません。