2014年6月24日火曜日

NagiosにNagiosgraphを導入して、グラフを表示する方法


Naigosと、Nagiosgraph(http://nagiosgraph.sourceforge.net/)をインストールして、Naigosが取得したデータをグラフで見れるようにします。
以下の様なグラフを表示して、数値を「見える化」してみます。


OSはCentOS6.5です。

# cat /etc/redhat-release
CentOS release 6.5 (Final)

Naigosをインストール

Naigosをyumでインストールしちゃいます。
一緒に、Nagiosgraphで必要になるPerlモジュールも一緒にインストールしておきます。
# yum --enablerepo=epel -y install nagios nagios-plugins nagios-plugins-all gd-devel perl-CGI rrdtool-perl perl-GD perl-Time-HiRes perl-Data-Dumper nagios-plugins-nrpe

nagios管理ユーザーのBASIC認証を設定します。
# htpasswd /etc/nagios/passwd nagiosadmin
New password:[パスワードを入力]
Re-type new password:[パスワードを入力]
Updating password for user nagiosadmin
nagiosをスタートして、自動起動の設定をしておきます。
# service nagios start
# chkconfig nagios on

httpdをスタート。
# service httpd start

ブラウザでアクセスしてみましょう。
http://サーバー名/nagios/

ちゃんとnagiosが立ち上がっているでしょうか?

左の[Services]をクリックしてlocalhostの状態を確認してみましょう。

うまくnagiosが起動しました。
http://サーバー名/ のapacheのウェルカムページが
「HTTP WARNING: HTTP/1.1 403 Forbidden - 5237 bytes in 0.001 second response time 」
となっているので、この項目がWARNINGになっています。
正しい挙動です。

設定ファイルなどは /etc/nagios ディレクトリ以下に設置されています。
便宜設定しておきましょう。

Nagiosgraphをインストール


最新版を公式ページ(http://nagiosgraph.sourceforge.net/)で確認します。
ここでは、バージョン1.5.1を使います。

Nagiosgraphをダウンロードして解凍。
# cd /usr/local/src
# wget http://downloads.sourceforge.net/project/nagiosgraph/nagiosgraph/1.5.1/nagiosgraph-1.5.1.tar.gz
# tar xvf nagiosgraph-1.5.1.tar.gz
# cd nagiosgraph-1.5.1

インストール時に、いくつかパスを聞かれますが、ここでは「Destination directory (prefix)」のみ入力します。
あと、いくつか「y」を入力して、その他は、Enterでスキップしていきます。
※色を変えた箇所が入力した箇所です。
最後に、自動でnagiosとapacheの設定ファイルを書き換えます。
書き換えたファイルは、バックアップが作成されます。
# ./install.pl --layout redhat
checking required PERL modules
  Carp...1.11
  CGI...3.51
  Data::Dumper...2.124
  Digest::MD5...2.39
  File::Basename...2.77
  File::Find...1.14
  MIME::Base64...3.08
  POSIX...1.17
  RRDs...1.3008
  Time::HiRes...1.9721
checking optional PERL modules
  GD...2.44
  Nagios::Config... ***FAIL***
checking nagios installation
  found nagios exectuable at /usr/sbin/nagios
  found nagios init script at /etc/init.d/nagios
checking web server installation
  found apache executable at /usr/sbin/httpd
  found apache init script at /etc/init.d/httpd
Destination directory (prefix)? [/] /usr/local/nagiosgraph
Location of configuration files (etc-dir)? [/etc/nagiosgraph]
Location of executables? [/usr/libexec/nagiosgraph]
Location of CGI scripts? [/usr/lib/nagiosgraph/cgi-bin]
Location of documentation (doc-dir)? [/usr/share/doc/nagiosgraph]
Location of examples? [/usr/share/nagiosgraph/examples]
Location of CSS and JavaScript files? [/usr/share/nagiosgraph/htdocs]
Location of utilities? [/usr/share/nagiosgraph/util]
Location of state files (var-dir)? [/var/spool/nagiosgraph]
Location of RRD files? [/var/spool/nagiosgraph/rrd]
Location of log files (log-dir)? [/var/log/nagiosgraph]
Path of log file? [/var/log/nagiosgraph/nagiosgraph.log]
Path of CGI log file? [/var/log/nagiosgraph/nagiosgraph-cgi.log]
Base URL? [/nagiosgraph]
URL of CGI scripts? [/nagiosgraph/cgi-bin]
URL of CSS file? [/nagiosgraph/nagiosgraph.css]
URL of JavaScript file? [/nagiosgraph/nagiosgraph.js]
URL of Nagios CGI scripts? [/nagios/cgi-bin]
Path of Nagios performance data file? [/tmp/perfdata.log]
username or userid of Nagios user? [nagios]
username or userid of web server user? [apache]
Modify the Nagios configuration? [n] y
Path of Nagios configuration file? [/etc/nagios/nagios.cfg]
Path of Nagios commands file? [/etc/nagios/objects/commands.cfg]
Modify the Apache configuration? [n] y
Path of Apache configuration directory? [/etc/httpd/conf.d]
configuration:
  ng_prefix            /usr/local/nagiosgraph
  ng_etc_dir           /etc/nagiosgraph
  ng_bin_dir           /usr/libexec/nagiosgraph
  ng_cgi_dir           /usr/lib/nagiosgraph/cgi-bin
  ng_doc_dir           /usr/share/doc/nagiosgraph
  ng_examples_dir      /usr/share/nagiosgraph/examples
  ng_www_dir           /usr/share/nagiosgraph/htdocs
  ng_util_dir          /usr/share/nagiosgraph/util
  ng_var_dir           /var/spool/nagiosgraph
  ng_rrd_dir           /var/spool/nagiosgraph/rrd
  ng_log_dir           /var/log/nagiosgraph
  ng_log_file          /var/log/nagiosgraph/nagiosgraph.log
  ng_cgilog_file       /var/log/nagiosgraph/nagiosgraph-cgi.log
  ng_url               /nagiosgraph
  ng_cgi_url           /nagiosgraph/cgi-bin
  ng_css_url           /nagiosgraph/nagiosgraph.css
  ng_js_url            /nagiosgraph/nagiosgraph.js
  nagios_cgi_url       /nagios/cgi-bin
  nagios_perfdata_file /tmp/perfdata.log
  nagios_user          nagios
  www_user             apache
  modify_nagios_config y
  nagios_config_file   /etc/nagios/nagios.cfg
  nagios_commands_file /etc/nagios/objects/commands.cfg
  modify_apache_config y
  apache_config_dir    /etc/httpd/conf.d
  apache_config_file
Continue with this configuration? [y] y

nagiosの設定ファイルをチェック
# /usr/sbin/nagios -v /etc/nagios/nagios.cfg

nagiosをリスタート
# service nagios restart

※ Apache/2.4以上の場合は下記設定を変更しておきます。2箇所あります。
/etc/httpd/conf.d/nagiosgraph.conf
Order allow,deny
Allow from all
->
Require all granted

httpdをリスタート
# service httpd restart

しばらくすると、以下のディレクトリにグラフ用のrrdファイルが作成されていきます。
# cd /var/spool/nagiosgraph/rrd
# ls -al
合計 12
drwxr-xr-x 3 nagios root   4096  6月 24 16:54 2014 .
drwxr-xr-x 3 root   root   4096  6月 24 16:48 2014 ..
drwxrwxr-x 2 nagios nagios 4096  6月 24 16:55 2014 localhost
そうすると、以下のURLでnagiosgraphのURLが確認できるようになります。ブラウザでアクセスしてみましょう。
http://サーバー名/nagiosgraph/cgi-bin/show.cgi

エラーがでたり、うまくいかなかったらnagiosのログを確認しましょう。
# tail -f /var/log/nagios/nagios.log

nagiosのテンプレートファイルを編集して、nagiosのコンソール画面からグラフを見れるようにします。
以下を追記。
# vim /etc/nagios/objects/templates.cfg
define service {
       name graphed-service
       action_url /nagiosgraph/cgi-bin/show.cgi?host=$HOSTNAME$&service=$SERVICEDESC$' onMouseOver='showGraphPopup(this)' onMouseOut='hideGraphPopup()' rel='/nagiosgraph/cgi-bin/showgraph.cgi?host=$HOSTNAME$&service=$SERVICEDESC$&period=week&rrdopts=-w+450+-j
       register 0
     }

サーバの監視ファイルのuseにgraphed-serviceを追加していきます。
カンマ区切りで追加しますが、スペースを空けるとエラーになるので注意です。
それぞれの監視項目に、graphed-serviceを追加しておきましょう。
# vim /etc/nagios/objects/localhost.cfg
define service{         use                             local-service,graphed-service         host_name                       localhost         service_description             PING         check_command                   check_ping!100.0,20%!500.0,60%         } define service{         use                             local-service,graphed-service         host_name                       localhost         service_description             Root Partition         check_command                   check_local_disk!20%!10%!/         }

nagiosの設定ファイルをチェック
# /usr/sbin/nagios -v /etc/nagios/nagios.cfg

nagiosをリスタート
# service nagios restart

ブラウザでアクセスしてみましょう。

四角いグラフアイコンが追加されたのがわかります。
Total Processesなど、グラフの出やすい項目で、ちゃんと描画されているか確認してみましょう。

logrotateを設定


# vim /etc/logrotate.d/nagiosgraph
/var/log/nagiosgraph/*log {
    daily
    dateext
    create
    missingok
    compress
    rotate 30
}

# logrotate -dv /etc/logrotate.d/nagiosgraph
# logrotate -fv /etc/logrotate.d/nagiosgraph


まとめ。

Nagiosで取得した情報をNagiosgraphによってグラフ化しました。
久しぶりに、Nagiosgraphのページを見たらアップデートされていたので導入をしてみました。
Nagiosgraphは、リリースされてから時間がたつのですが、案外、日本語の情報がなかったので、再度、導入方法についてまとめた意味はあったかと思います。
こういった監視ツールは、SaaSサービスも含め色々リリースされている昨今ですが、まだまだNagiosも行けるなーと感じました。

※こちらも参考にしてみてください。
Nagiosgraphのタイムアウトを解決する
http://takeshiyako.blogspot.jp/2014/07/nagiosgraph.html