Nagiosでシステム監視 その2 監視対象を設定

2013年1月10日 | 平井 澄人

前回で、Nagiosサーバのセットアップは出来ました。 今回は、サーバから、外部システムの監視を考えてみたいと思います。

a1380_000513

外部システム=サーバやルータなど、の監視対象をまとめてノードと呼ぶことにします。ノードの各監視項目ですか、大きく分けて二種類になります。
外部から監視できる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

 701c2a5186787e99d55888a9ae47824b

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サーバで監視できるようになりました。

396b44325ecb374484d64200f9005c1b

設定ファイルに関して

この後、今回編集した設定ファイルをいじって通知先を変更したり、追加で監視項目を追加していったりしてより強固な監視にしていきます。
Nagiosの設定はテンプレート的に汎用的な定義を作っておいてそれを継承する、という設定のやり方が基本になっています。 ※設定ファイルの中にuseというのが頻出しますが、このuseでテンプレート的な定義を継承しています。 use ~たどっていくと「generic-service」というものが元になっています。このgeneric-serviceはtemplates.cfg の中に設定されています。こちらが、これらに監視の細かい設定がされています。

弊社でも日々監視対象が増えておりますので監視設定の見直し(継承とグループ化をうまく使えば効率よく設定でき、設定漏れも防げる)を少しづつ進めながら運用しています。

関連記事

PICK UP

ライター

東京でサイト運用の仕事をしています。旅行好き。

お問い合わせ

サービスに関するご相談は
こちらよりお気軽にお問い合わせください。

e-Agencyの様々な情報をSNSでお届けします!