blog

クラウド監視Nagiosのインストール手順

はじめに\n最近、クラウド監視に関連するツールを作っていて、Gangliaのインストール手順を書きました。\n\nこの記事の目的: Nagiosを触ったことがない人でも、この記事のステップに従って自分...

Mar 16, 2016 · 33 min. read
シェア

序文

最近、クラウド監視関連のツールに取り組んでいて、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.モニタリングページ

Read next

データベースに関してStranger Scrambleが踏んでしまった穴について語る(Redis編)

他人のライバル』では、大規模にRedisを使いませんでした。ただ、Redisがこのアーキテクチャに適していると直感的に感じたからです。このゲームでは、データの処理を支援するデータベースに依存しておらず、データの総量は大きいものの、増加する速度は限られています。1台のサーバーでは処理能力に限界があり、ゲームを分割することもできないため、いつでもどこでもログインしているプレイヤーには1つの世界しか見えません。そのため、ゲームシステムから独立したデータセンターを用意する必要があります。Redisが最適な選択と思われます。

Mar 15, 2016 · 6 min read