前回で、Nagiosサーバのセットアップは出来ました。 今回は、サーバから、外部システムの監視を考えてみたいと思います。
外部システム=サーバやルータなど、の監視対象をまとめてノードと呼ぶことにします。ノードの各監視項目ですか、大きく分けて二種類になります。
外部から監視できるpingやhttpサービスの監視と外部から監視できない負荷やディスク容量など内部の監視です。
まず前者の外部からの監視を設定します。
Nagiosの設定ファイルに関して
Nagiosの設定は、グループ化やテンプレートなど、簡潔に設定できるようになっていますが、構造を理解する必要があります。 またGUIでは設定ではなくテキストベースでの編集になります。
Nagiosサーバから外部監視
Nagiosサーバでの設定
Nagiosサーバからsshポートが空いているかチェックするだけのシンプルな監視ですが、通知先や、ホスト、ホストのグループなどいくつか設定が必要です。
設定が長い気もしますが、将来的にノードを追加していくときに既にある設定を継承したり、グループ化したりできるので、結果的に管理がしやすくなります。
# cd /usr/local/nagios/etc/ # vi nagios.cfg ---以下の行のコメントを外しておきます。 cfg_dir=/usr/local/nagios/etc/servers --- # mkdir /usr/local/nagios/etc/servers # cd /usr/local/nagios/etc/servers 今回テスト的に設定する監視対象のファイル # vi test_node.cfg ############################################################################### # CONTACT GROUPS ############################################################################### define contactgroup{ contactgroup_name test_node_contact alias test_node_contact members nagiosadmin } ############################################################################### # hosts ############################################################################### define host{ name test_linux-server use linux-server notification_period 24x7 contact_groups test_node_contact } ############################################################################### # hosts ############################################################################### define host{ use test_linux-server host_name testnode.jp alias test_linux-server address [ノードのIPアドレス] } ############################################################################### # Hostgroups ############################################################################### define hostgroup{ hostgroup_name test node alias test node members testnode.jp } ############################################################################### # service ############################################################################### define service{ name server-test-service use generic-service contact_groups test_node_contact } ############################################################################### # Services Common ############################################################################### define service{ use server-test-service host_name testnode.jp service_description check_ssh check_command check_ssh } --- |
設定ファイルに不整合がないかチェック
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg |
問題無ければnagiosサーバを再起動します。
# service nagios restart |
Servicesをクリックして一覧を見てみるとこのように監視対象が一つ追加できています。
ノード内部の監視(NRPE)
ノード内部でしか取得できない値の監視には、Linux系の場合NRPE(Nagios Remote Plugin Executor)というプラグインを監視対象(ノード)にインストールしてこれを経由して取得するものが用意されています
これはTCP port 5666を使いますポート制限の設定が必要になる場合があります(暗号化はデフォルトでONになっています)。 また、サーバと監視対象の両方でviやemacsで設定ファイルを編集する必要があります。 若干煩雑ではありますが、設定を全てテキストベースで行えるので監視対象が多くなっても手早く確実に監視設定ができるようになります。ただし設定箇所が分かれるので正しく監視できるまで段階的に追っていきたいと思います。
監視対象でNRPEをセット
インストール
ノードのNRPEはyum(epeoリポジトリなど)でインストールできます。 # yum install nagios-nrpe 併せてNagiosのプラグインも一通りインストールします。 # yum install nagios-plugins-all これで一気に入ると楽ですが、依存関係などで失敗する場合、以下のように一つ一つプラグインを入れていきます。 # yum install nagios-plugins-users # yum install nagios-plugins-load # yum install nagios-plugins-disk # yum install nagios-plugins-swap # yum install nagios-plugins-ntp |
テスト
まず、ノード内で監視をテストしてみましょう。
# cat /etc/nagios/nrpe.cfg などをして中に書いてある command[check_load]=/usr/lib/nagios/plugins/check_load -w 15,10,5 -c 30,25,20 をノードのコマンドラインでテスト実行してみたいと思います。 # /usr/lib/nagios/plugins/check_load -w 15,10,5 -c 30,25,20 OK - load average: 0.07, 0.05, 0.01|load1=0.070;15.000;30.000;0; load5=0.050;10.000;25.000;0; load15=0.010;5.000;20.000;0; のようにノード内で実行すると結果が帰ってきました。 ※ロードアベレージが上がりすぎていないかの監視です |
NRPEサービスの開始
まず、nrpeの設定ファイルを編集し、NagiosサーバのIPアドレスを追加しておきます。 # vi /etc/nagios/nrpe.cfg ---allowed_hostsのところを探し、以下の行を追加します。 allowed_hosts=[NagiosサーバのIPアドレス] また、先ほどインストールしたNagiosプラグインでの監視の定義を書いておきます。 command[check_load]=/usr/lib/nagios/plugins/check_load -w 15,10,5 -c 30,25,20 が最初から書いてありましたが、以下の四つも追加することにします。 ※あらかじめ1-2で行ったテストを実行しておきます。 command[check_disk1]=/usr/lib/nagios/plugins/check_disk -w 20 -c 10 -p / command[check_disk2]=/usr/lib/nagios/plugins/check_disk -w 20 -c 10 -p /home command[check_ntp]=/usr/lib/nagios/plugins/check_ntp -H 210.188.224.14 -w 1 -c 2 command[check_swap]=/usr/lib/nagios/plugins/check_swap -w 90% -c 50% --- nrpeを再起動し # service nrpe start サーバ起動時に立ち上げるようにする # chkconfig nrpe on これで、/etc/nagios/nrpe.cfgに書かれている監視がNagiosサーバからできるようになります。 |
Nagiosサーバでの設定
インストール
サーバ側にcheck_nrpeプラグインをインストールする
# yum install nagios-plugins-nrpe |
Nagiosサーバからのテスト
$ /usr/lib/nagios/plugins/check_nrpe -H [ノードのIPアドレス] -c check_load OK - load average: 0.00, 0.00, 0.00|load1=0.000;15.000;30.000;0; load5=0.000;10.000;25.000;0; load15=0.000;5.000;20.000;0; のようにOKが返ってくれば通信成功です。外部からロードアベレージができるようになりました。 他のcheck_user,check_disk1…も全て確認しておきます。 |
NRPEの定義
# cd /usr/local/nagios/etc/objects # vi commands.cfg ---以下の行を追記 # 'check_nrpe' command definition define command{ command_name check_nrpe ☆check_nrpeがあるパスを書く command_line /usr/lib/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ } --- |
設定ファイル&再読み込み
先ほど作ったtest_node.cfgファイルにnrpeでの監視定義も追記します。
# cd /usr/local/nagios/etc/servers 今回テスト的に設定する監視対象のファイル # vi test_node.cfg ---NRPEの監視定義を行末に追加 define service{ use server-test-service host_name testnode.jp service_description check_load check_command check_nrpe!check_load } define service{ use server-test-service host_name testnode.jp service_description check_disk1 check_command check_nrpe!check_disk1 } define service{ use server-test-service host_name testnode.jp service_description check_disk2 check_command check_nrpe!check_disk2 } define service{ use server-test-service host_name testnode.jp service_description check_ntp check_command check_nrpe!check_ntp } define service{ use server-test-service host_name testnode.jp service_description check_swap check_command check_nrpe!check_swap } --- |
設定ファイルに不整合がないかテスト
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg |
出力されたものを確認して問題無ければnagiosサーバを再起動します。
# service nagios restart |
内部からでないと監視できないリソースもNagiosサーバで監視できるようになりました。
設定ファイルに関して
この後、今回編集した設定ファイルをいじって通知先を変更したり、追加で監視項目を追加していったりしてより強固な監視にしていきます。
Nagiosの設定はテンプレート的に汎用的な定義を作っておいてそれを継承する、という設定のやり方が基本になっています。 ※設定ファイルの中にuseというのが頻出しますが、このuseでテンプレート的な定義を継承しています。 use ~たどっていくと「generic-service」というものが元になっています。このgeneric-serviceはtemplates.cfg の中に設定されています。こちらが、これらに監視の細かい設定がされています。
弊社でも日々監視対象が増えておりますので監視設定の見直し(継承とグループ化をうまく使えば効率よく設定でき、設定漏れも防げる)を少しづつ進めながら運用しています。
関連記事
PICK UP
-
タグ: Webサイト多言語変換サービス, shutto翻訳, コラム, 事例紹介
株式会社明石工業様:shutto翻訳ご利用事例 -
タグ: Webサイト多言語変換サービス, shutto翻訳, コラム, 事例紹介
株式会社崎陽軒様:shutto翻訳ご利用事例 -
タグ: さぶみっと!メール配信, クラウドサービス, コラム, ニュース, 自社サービス
ITreview Grid Award 2025 Springにて「High Performer」を受賞しました!(メールマーケティングツールカテゴリー) -
タグ: eコマース, itreviewアワード, カゴ落ち対策, クラウドサービス, コラム, ニュース, 顧客満足度
ITreview Grid Award 2025 Springにてカゴ落ち対策カテゴリー部門で「High Performer」を受賞しました! -
タグ: Webサイト多言語変換サービス, shutto翻訳, インバウンド, コラム, ニュース, 顧客満足度
ITreview Grid Award 2025 Springにて、ウェブサイト翻訳ツール部門で「Leader」を5年連続で受賞しました! -
タグ: 2025年の崖, DX推進, GA4, Googleアナリティクス, IT人材育成, gmpプレミアムサロン, イー・エージェンシー, オンライン学習, コラム, データ活用, マーケティングDX, レガシーシステム, 企業変革, 社内教育, 自社DX戦略
「2025年の崖」を乗り越える!DX推進とIT人材の育成が鍵