前回で、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
-
タグ: Cloud Shell構築, GA4, GA分析自動化, Gemini CLI, Google アナリティクスMCP, LLM連携, コラム, データ対話型分析, モデルコンテキストプロトコル, 自然言語分析
2025年7月発表!自然言語でGA4を分析できる「Google アナリティクスMCPサーバー」を構築する方法 -
タグ: AIエージェント, GA360, Gemini in Looker, Google Cloud Next, Next Tokyo, Vertex AI Search, イベントレポート, コラム, データ分析高度化, データ利活用, 検索体験向上, 生成AI活用
【Next Tokyoレポート】主役は生成AI!GA360×生成AIの最新活用法を紹介 -
タグ: ASEAN展開, Direct Engine, インドネシア, オフショア開発, グローバル協業, コラム, ジャカルタ, スラバヤ, ビジネス熱気, ファンデザイン室, 出張レポート, 文化共存
【出張レポート】インドネシアで見た、熱気と未来への可能性|株式会社イー・エージェンシー公式note -
タグ: AI実証実験, AI高速処理, ECサイトパーソナライズ, Groq API, HTML自動生成, UX最適化, Web制作, コラム, リアルタイムAIパーソナライズ, 技術進化
【ウェブ制作】AIを使ってウェブサイトをリアルタイムにパーソナライズしてみたい!|株式会社イー・エージェンシー公式note -
タグ: GA4トレーニング, GA4初心者, Udemy講座, gmpプレミアムサロン, アクセス解析学習, コラム, スマホ学習, データ活用, 探索レポート, 解析スキルアップ
プロに学ぶ、夏のGA4スキルアップ。アクセス解析の基本講座が1,500円【8/31まで】 -
タグ: AIと人の協業, AI活用事例, Google Gemini, gemini, カスタム議事録, コラム, プロンプト設計, 会議効率化, 文字起こし, 業務効率化, 議事録効率化
【もう議事録は書かない】Geminiを使って、文字起こしからカスタム議事録を作成|株式会社イー・エージェンシー公式note