序文
最近、クラウド監視関連のツールに取り組んでいて、Gangliaのインストール手順について書いたので、Nagiosのインストール手順を文書化するために戻ってきました。
この記事の目的: nagiosを触ったことがなくても、この記事の手順に従って、nagiosモニタリングクラスタを構築することができます。
1.Nagiosの紹介
Nagiosは、Linux / Unixプラットフォーム上で動作し、システムのステータスやネットワーク情報を監視するために使用することができるオープンソースの監視システムです。Nagiosは、指定されたローカルまたはリモートのホストとサービスを監視し、例外通知を提供することができます。電子メールまたはSMSのアラーム***時間サイトオペレータに通知するために、システムまたはサービスの状態の異常で、通常の電子メールまたはSMSの通知の後、回復の状態です。
2.関連環境
3.展開計画
Nagiosマスターノードには、次のものがインストールされている必要があります。
- nagios
- nagios-plugin
- nrpe
- php
- apache
Nagiosスレーブノードは持っている必要があります。
- nagios-plugin
- nrpe
設置経路の計画
| 項 | IP |
| nagios のインストールパス | /usr/local/nagios |
| duangr-1 | /usr/local/php |
| CentOS 6.4 | /usr/local/apache2 |
4.コード取得
5.前提的信頼
5.1 ホスト環境のチェック
# rpm -q gcc glibc glibc-common gd gd-devel xinetd openssl-devel
gcc-4.4.7-3.el6.x86_64
glibc-2.14.1-6.x86_64
glibc-common-2.14.1-6.x86_64
gd-2.0.35-11.el6.x86_64
package gd-devel is not installed
package xinetd is not installed
openssl-devel-1.0.0-27.el6.x86_64
不足している場合は、まずインストールしてください。 インストールパッケージは、以下のイメージサイトからダウンロードできます。
- http://..et/
取り付け後、以下のように再度確認してください:
# rpm -q gcc glibc glibc-common gd gd-devel xinetd openssl-devel
gcc-4.4.7-3.el6.x86_64
glibc-2.14.1-6.x86_64
glibc-common-2.14.1-6.x86_64
gd-2.0.35-11.el6.x86_64
gd-devel-2.0.35-11.el6.x86_64
xinetd-2.3.14-38.el6.x86_64
openssl-devel-1.0.0-27.el6.x86_64
#p#
6.コンパイルとインストール
6.1 ユーザ nagios の作成(全ノード)
useradd nagios -d /usr/local/nagios
passwd nagios (パスワードのカスタマイズ)
6.2 nagiosマスターのインストール
tar -zxf nagios-4.0.2.tar.gz
cd nagios-4.0.2
./configure --prefix=/usr/local/nagios
make all
make install && make install-init && make install-commandmode && make install-config
サービスとしてnagiosを追加
chkconfig --add nagios
chkconfig nagios off
chkconfig --level 35 nagios on
chkconfig --list nagios
nagios 0: 1:关闭 2:关闭 3:启用 4:关闭 5:启用 6:关闭
6.3 nagiosプラグインのインストール
tar -zxf nagios-plugins-1.5.tar.gz
cd nagios-plugins-1.5
./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios
make && make install
mysql関連のコンパイル・エラーが発生する場合は、mysqlのデフォルトのインストール・パスが変更されていることが原因なので、with-mysqlを調整して作り直しましょう。
./configure --prefix=/usr/local/nagios --with-mysql=/usr/local/mysql
make && make install
6.4 NRPEのインストール(全ノードのインストール)
tar -zxf nrpe-2.15.tar.gz
cd nrpe-2.15
./configure --enable-command-args
make all
make install-plugin
以下の手順は、監視対象ノードでのみ実行する必要があります。
make install-daemon && make install-daemon-config && make install-xinetd
6.4.1 監視ノードの設定
監視対象ノードの場合は、NRPEをデーモンとして実行するように設定する必要があります。
1./etc/xinetd.d/nrpeファイルを変更して、nagiosマスターノードサーバーが
vi /etc/xinetd.d/nrpe
only_from = .1 192.
2.etc/servicesの最後に追加します:
nrpe 5666/tcp # NRPE
3、パラメータのサポート追加
vi /usr/local/nagios/etc/nrpe.cfg
dont_blame_nrpe=1
4.xinetdの起動
service xinetd restart
5.nrpeがリッスンしていることを確認します。
netstat -at | grep nrpe
6.nrpeが正常に動作しているかのテスト
/usr/local/nagios/libexec/check_nrpe -H localhost
NRPE v2.15
6.4.2 マスターノードの構成
サービスマスターノードを監視している場合、すべての監視ノードのNRPE設定が完了した後、以下のテストを順番に行うことができます。
/usr/local/nagios/libexec/check_nrpe -H 192.
NRPE v2.15
/usr/local/nagios/libexec/check_nrpe -H 192.
NRPE v2.15
6.5 Apacheのインストール(マスターノードのインストール)
tar -zxf httpd-2.2.23.tar.gz
cd httpd-2.2.23
./configure --prefix=/usr/local/apache2
make && make install
6.6 PHPのインストール(マスターノードのインストール)
cd /export/home/tools/soft/php
tar -zxf php-5.4.10.tar.gz
cd /php-5.4.10
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs
make && make install
6.7 apache による PHP の Web 公開
vi /usr/local/apache2/conf/httpd.nf
....
Listen 80
....
<IfModule dir_module>
DirectoryIndex index.html index.php
AddType application/x-httpd-php .php
</IfModule>
....
#setting for nagios
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
<Directory "/usr/local/nagios/sbin">
AuthType Basic
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthUserFile /usr/local/nagios/etc/htpasswd
Require valid-user
</Directory>
Alias /nagios "/usr/local/nagios/share"
<Directory "/usr/local/nagios/share">
AuthType Basic
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName "nagios Access"
AuthUserFile /usr/local/nagios/etc/htpasswd
Require valid-user
</Directory>
ウェブアクセス用のユーザー名とパスワードの追加
/usr/local/apache2/bin/htpasswd -c /usr/local/nagios/etc/htpasswd admin
apacheの起動
/usr/local/apache2/bin/apachectl start
#p#
7.Nagiosの設定
7.1 遠隔監視ノードの設定
7.1.1 設定ファイルの変更
# su - nagios
$ vi /usr/local/nagios/etc/nrpe.cfg
以下の構成に変更します:
command[check_users]=/usr/local/nagios/libexec/check_users -w $ARG1$ -c $ARG2$
command[check_load]=/usr/local/nagios/libexec/check_load -w $ARG1$ -c $ARG2$
command[check_disk]=/usr/local/nagios/libexec/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
command[check_procs]=/usr/local/nagios/libexec/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$
command[check_procs_args]=/usr/local/nagios/libexec/check_procs $ARG1$
command[check_swap]=/usr/local/nagios/libexec/check_swap -w $ARG1$ -c $ARG2$
上記の監視コマンドは機能します。
- http://..com/centos/.4/os/x86_64/Packages/
- check_users ログインユーザー数の監視
- check_load CPU負荷の監視
- check_disk ディスク使用量の監視
- check_swap SWAPパーティションの使用状況の監視
7.1.2 xinetdサービスの再起動
上記のコマンドを設定したら、xinetdサービスを再起動します。
service xinetd restart
7.1.3 チェックサムの設定
監視コマンドの設定に問題がないか確認します。
/usr/local/nagios/libexec/check_nrpe -H localhost -c check_users -a 5 10
/usr/local/nagios/libexec/check_nrpe -H localhost -c check_load -a 15,10,5 30,25,20
/usr/local/nagios/libexec/check_nrpe -H localhost -c check_disk -a 20% 10% /
/usr/local/nagios/libexec/check_nrpe -H localhost -c check_procs -a 200 400 RSZDT
/usr/local/nagios/libexec/check_nrpe -H localhost -c check_swap -a 20% 10%
7.2 モニタリングサービスマスターノードの設定
7.2.1 cgi.cfg(CGIアクセスを制御するための設定ファイル)
(nagiosユーザで)
vi /usr/local/nagios/etc/cgi.cfg
以下を修正し、adminユーザーの権限を追加します:
default_user_name=admin
authorized_for_system_information=nagiosadmin,admin
authorized_for_configuration_information=nagiosadmin,admin
authorized_for_system_commands=nagiosadmin,admin
authorized_for_all_services=nagiosadmin,admin
authorized_for_all_hosts=nagiosadmin,admin
authorized_for_all_service_commands=nagiosadmin,admin
authorized_for_all_host_commands=nagiosadmin,admin
7.2.2 nagios.cfg(nagiosメイン設定ファイル)
(nagiosユーザで)
vi /usr/local/nagios/etc/nagios.cfg
#cfg_file=/export/home/nagios/etc/objects/localhost.cfg (コメントアウト)
cfg_dir=/export/home/nagios/etc/servers
メイン設定ファイルでは、監視スクリプトの保存パスを ./デフォルトでは存在しないため、手動で作成する必要があります。
nagiosはserversディレクトリにある接尾辞が.cfgのファイルを設定ファイルとして読み込みます。
cd /usr/local/nagios/etc
mkdir servers
cd servers
7.2.3 監視ホストグループの定義
監視用のホストグループを宣言し、監視対象のホスティング環境で言及されている3つのホストをすべて追加します。
vi /export/home/nagios/etc/servers/group.cfg
以下の内容の新しい文書:
define hostgroup{
hostgroup_name duangr-server
alias duangr Server
members duangr-1,duangr-2,duangr-3
}
上記の構成について説明してください:
- check_swap SWAPパーティションの使用状況の監視
- alias: ホストグループのエイリアス。
- members: ホストグループのメンバー、複数のホスト名はカンマで区切ります。また、ホスト名は define host の host_name と一致していなければなりません。
ホストの定義については後述します。
7.2.4 監視ホストの定義
具体的なホストの定義から始めましょう。
7.2.4.1 ローカルホストの監視設定
まずローカルホスト duangr-1 を定義します。
vi /export/home/nagios/etc/servers/duangr-1.cfg
以下の内容の新しい文書:
define host{
use linux-server
host_name duangr-1
alias duangr-1
address 192.
}
define service{
use local-service
host_name duangr-1
service_description Host Alive
check_command check-host-alive
}
define service{
use local-service
host_name duangr-1
service_description Users
check_command check_local_users!20!50
}
define service{
use local-service
host_name duangr-1
service_description CPU
check_command check_local_load!5.0,4.0,3.0!10.0,6.0,4.0
}
define service{
use local-service
host_name duangr-1
service_description Disk Root
check_command check_local_disk!20%!10%!/
}
define service{
use local-service
host_name duangr-1
service_description Disk Home
check_command check_local_disk!20%!10%!/export/home
}
define service{
use local-service
host_name duangr-1
service_description Zombie Procs
check_command check_local_procs!5!10!Z
}
define service{
use local-service
host_name duangr-1
service_description Total Procs
check_command check_local_procs!250!400!RSZDT
}
define service{
use local-service
host_name duangr-1
service_description Swap Usage
check_command check_local_swap!20!10
}
このホストは、モニタリング・サービスのマスター・ノードがあるホストでもあるので、check_local_*コマンドを使ってモニタリングすることができます。
このファイルには一般的な監視項目が設定されています。
7.2.4.2 リモートホスト監視の設定
リモートホスト duangr-2 と duangr-3 を再定義します。
リモート・ホスト監視を定義するには、まずcheck_nrpeコマンドを定義する必要があります。
vi /usr/local/nagios/etc/objects/commands.cfg
文書の***側に以下を追加してください:
# 'check_nrpe' command definition
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -t 30 -c $ARG1$
}
define command{
command_name check_nrpe_args
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -t 30 -c $ARG1$ -a $ARG2$
}
duangr-2ホストの監視設定を定義します。
$ vi /usr/local/nagios/etc/servers/duangr-2.cfg
以下の内容の新しい文書:
define host{
use linux-server
host_name duangr-2
alias duangr-2
address 192.
}
define service{
use local-service
host_name duangr-2
service_description Host Alive
check_command check-host-alive
}
define service{
use local-service
host_name duangr-2
service_description Users
check_command check_nrpe_args!check_users!5 10
}
define service{
use local-service
host_name duangr-2
service_description CPU
check_command check_nrpe_args!check_load!15,10,5 30,25,20
}
define service{
use local-service
host_name duangr-2
service_description Disk Root
check_command check_nrpe_args!check_disk!20% 10% /
}
define service{
use local-service
host_name duangr-2
service_description Disk /export/home
check_command check_nrpe_args!check_disk!20% 10% /export/home
}
define service{
use local-service
host_name duangr-2
service_description Procs Zombie
check_command check_nrpe_args!check_procs!5 10 Z
}
define service{
use local-service
host_name duangr-2
service_description Procs Total
check_command check_nrpe_args!check_procs_args!"-w400 -c600"
}
define service{
use local-service
host_name duangr-2
service_description Swap Usage
check_command check_nrpe_args!check_swap!20% 10%
}
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 以下は、主にクラウドプラットフォームに関連する一般的な監視プロセスである。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; crondプロセスを監視する
define service{
use local-service
host_name duangr-2
service_description PS: crond
check_command check_nrpe_args!check_procs_args!"-c1:1 -Ccrond"
}
;; zookeeper プロセスを監視する
define service{
use local-service
host_name duangr-2
service_description PS: QuorumPeerMain
check_command check_nrpe_args!check_procs_args!"-c1:1 -Cjava -aserver.quorum.QuorumPeerMain"
}
;;stormのスレーブノードのプロセスを監視する
define service{
use local-service
host_name duangr-2
service_description PS: supervisor
check_command check_nrpe_args!check_procs_args!"-c1:1 -Cjava -adaemon.supervisor"
}
;; stormのマスターノードのプロセスを監視する
define service{
use local-service
host_name duangr-2
service_description PS: nimbus
check_command check_nrpe_args!check_procs_args!"-c1:1 -Cjava -adaemon.nimbus"
}
;; MetaQプロセスを監視する
define service{
use local-service
host_name duangr-2
service_description PS: MetaQ
check_command check_nrpe_args!check_procs_args!"-c1:1 -Cjava -ametamorphosis-server-w"
}
;; Redisのプロセスを監視する
define service{
use local-service
host_name duangr-2
service_description PS: redis-server
check_command check_nrpe_args!check_procs_args!"-c1:1 -Credis-server"
}
;; hadoopマスターノードNameNodeプロセスを監視する
define service{
use local-service
host_name duangr-2
service_description PS: NameNode
check_command check_nrpe_args!check_procs_args!"-c1:1 -Cjava -aserver.namenode.NameNode"
}
;; HadoopマスターノードSecondaryNameNodeプロセスを監視する
define service{
use local-service
host_name duangr-2
service_description PS: SecondaryNameNode
check_command check_nrpe_args!check_procs_args!"-c1:1 -Cjava -aserver.namenode.SecondaryNameNode"
}
;; hadoopマスターノード上のResourceManagerプロセスを監視する
define service{
use local-service
host_name duangr-2
service_description PS: ResourceManager
check_command check_nrpe_args!check_procs_args!"-c1:1 -Cjava -aserver.resourcemanager.ResourceManager"
}
;; hadoopスレーブノードの監視 DataNodeプロセス
define service{
use local-service
host_name duangr-2
service_description PS: DataNode
check_command check_nrpe_args!check_procs_args!"-c1:1 -Cjava -aserver.datanode.DataNode"
}
;;hadoopスレーブノードのNodeManagerプロセスを監視する
define service{
use local-service
host_name duangr-2
service_description PS: NodeManager
check_command check_nrpe_args!check_procs_args!"-c1:1 -Cjava -aserver.nodemanager.NodeManager"
}
注意:duangr-2はリモート・ホストなので、check_nrpe_argsコマンドを使って監視します。
このファイルは一般的な監視項目に設定されていますが、hadoop、storm、zookeeper、metaq、redisのプロセス監視も含まれています。
duangr-3ホストの監視設定を定義します。
vi duangr-3.cfg
内容はduangr-2.cfgに似ていますが、ホスト名、エイリアス、アドレスを変更するだけです。
7.2.4.3 メール監視
モニターメールアドレスの定義
vi /usr/local/nagios/etc/objects/contacts.cfg
define contact{
contact_name nagiosadmin ; Short name of user
use generic-contact ; Inherit default values from generic-contact template (defined above)
alias Nagios Admin ; Full name of user
email yourname@domain.com
; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
}
監視メールの受信者の設定に加えて、次のことも確認してください:
- このホストはメールサーバーと相互運用可能です。
- このホストの SendMail は、外部 SMTP サービスを使用して電子メールを送信できます。
7.2.4.4 チェックサムの設定
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
7.2.4.5 開始
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
nagiosはすでにサービスであり、以下のアクションを実行することもできます:
service nagios start/stop/restart/status
#p#
8.モニタリングページ





