Database JUNKY

MySQL,MariaDBを中心としたブログです

Nagiosの監視結果をグラフ化は nagiosgraphがお勧め!!

運用上でNagiosを使っている人にすごくこれ、便利なのです。日々の観測を、グラフ化してくれるツールになります。私的には結構設定が難しく、次回設定する時に理解できるようにしようと、メモがわりに掲載しております。なので、色々間違ってたらごめんなさい。 ただインストールするとこれがまた便利です!!

f:id:hit10231023:20180309111041p:plain

f:id:hit10231023:20180116184008p:plain

f:id:hit10231023:20180116183724j:plain


動作環境

以下の環境でテストしました。

ここでは Nagiosサーバのインストールには触れませんが、基本 yumでこれだけだと思いますw

yum --enablerepo=epel -y install nagios nagios-plugins nagios-plugins-all
yum --enablerepo=epel -y install gd-devel
yum --enablerepo=epel -y install nagios-nrpe
yum --enablerepo=epel -y nagios-plugins-nrpe

nagiosgraph インストール方法

ソースをダウンロード

https://sourceforge.net/projects/nagiosgraph/files/nagiosgraph/

からとりあえず最新版をダウンロードしました。

上記では、最新版が、1.5.2でしたのでこちらでインストールしてみます。 なお、当方のNagiosのバージョンは、Nagios® Core™ Version 3.5.1 でした。 バージョン依存するという話もあるみたいなので、一応メモがわりに載せました。

download

ソースのダウンロードをします

# cd /usr/local/src
wget http://downloads.sourceforge.net/project/nagiosgraph/nagiosgraph/1.5.2/nagiosgraph-1.5.2.tar.gz

解凍

ソースを解凍し、解凍したディレクトリに移動します

tar xvf nagiosgraph-1.5.2.tar.gz
cd nagiosgraph-1.5.2

インストール

nagiosgraph をインストールします。いくつか質問項目がでてきますが、大概はデフォルトのままでいいと思います 当方、amazonlinuxの環境で、レイアウトは、redhatで行いました(あっているかどうかわからないけど。。)

# ./install.pl --layout redhat
checking required PERL modules
  Carp...1.26
  CGI...3.63
  Data::Dumper...2.145
  Digest::MD5...2.52
  File::Basename...2.84
  File::Find...1.20
  MIME::Base64...3.13
  POSIX...1.30
  RRDs...1.4008
  Time::HiRes...1.9725
checking optional PERL modules
  GD...2.49
  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

確認事項

ほとんどが空ENTERかYで進めました。当方で入力した部分は、

Destination directory

くらいかな?。。あとは、y くらい、apcheや、nagiosのセットアップ環境は、まちまちだと思いますので、内容をよく確認してやったほうがベターだと思います

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

apacheの設定

nagiosgraphインストール時の指定により、以下のnagiosgraph.confが自動的に、/etc/httpd/conf.d内に生成されます。ここは、各自の環境に合わせて適宜設定を変更してください

# pwd
/etc/httpd/conf.d
# cat nagiosgraph.conf
-------
ScriptAlias /nagiosgraph/cgi-bin "/usr/lib/nagiosgraph/cgi-bin"
<Directory "/usr/lib/nagiosgraph/cgi-bin">
   Options ExecCGI
   AllowOverride None
   Order allow,deny
   Allow from all
   AuthName "Nagios Access"
   AuthType Basic
   AuthUserFile /etc/nagios/passwd
   Require valid-user
</Directory>
# enable nagiosgraph CSS and JavaScript
Alias /nagiosgraph "/usr/share/nagiosgraph/htdocs"
<Directory "/usr/share/nagiosgraph/htdocs">
   Options None
   AllowOverride None
#   Order allow,deny
#   Allow from all
   require all granted
</Directory>

nagiosgraphのテンプレート編集

インストールしただけだとグラフは表示されません。グラフのテンプレートをnagiosサーバに設定する必要があります。nagiosyumでインストールした場合、おそらくテンプレートは以下に入っていると思います。 (もしかしたらインストール時にすでに入っているかもなんで、一応中身確認したほうがよさそう。。)

下記テンプレートを追記します

# cat << '_EOT_' >> /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
     }
_EOT_

グラフ化する監視を追加

nagis-serverの話になってしまいますが、おそらく、各ホストの設定は、 /etc/nagios/servers に入れているかと思います。 ここがすこし面倒なんのですが、グラフ化したい監視項目に上記で設定したテンプレートを適用する必要があります

以下、例ですが、当方が設定した例になります。

db.cfg

define service{
        use                             generic-service,graphed-service         ; Name of service template to use
        host_name                       db01
        service_description             USERS
        check_command                   check_nrpe!check_users
        max_check_attempts              3    ; knock out count
        normal_check_interval           3
        retry_check_interval            5
        notification_interval           5
        register                        1
        contact_groups                  admins_stats
        }

define service {
         host_name                       db01
         service_description             LOAD
         use                             generic-service,graphed-service
         check_command                   check_nrpe!check_load
         max_check_attempts              2    ; knock out count
         normal_check_interval           1
         retry_check_interval            3
         notification_interval           2
         register                        1
         contact_groups                  admins_stats
         }

use句の中に、generic-service,graphed-serviceの2つを列挙しているものがあると思います。また、graphed-serviceを設定していないものも載せました。

httpdを再起動

/etc/init.d/httpd restart

nagiosの構文チェック、および再起動

# nagis -v /etc/nagios/nagios.conf
# /etc/init.d/nagios restart

グラフが出ているか確認

さっそくグラフが表示できるか確認してみましょう。上記の設定で、グラフのテンプレートを設定したものは以下のようにグラフのアイコンが表示されていると思います

f:id:hit10231023:20180116183739j:plain
サービス一覧

このグラフのアイコンをクリックすると表示されます。

f:id:hit10231023:20180116183724j:plain
グラフ画面

補足:グラフが表示されない時は??

いざ動かしてみると・・ webブラウザにこんなエラーが出る時があります

JavaScript is disabled.
nagiosgraph.js is not installed or wrong version.

  • 設定を間違っている
  • 旧バージョンが実は入っていた

ということほとんどだと思うのですが、このメッセージに翻弄され結構ハマったので 次回、はまらないようにメモしておきます。

javascriptが最新か調べる

javascriptが最新か?というか、nagiosgraph.jsが最新バージョンのものかってことですね。これは、Nagiosサーバが入っている、ディスクをfindで見つけてください。当方は案の定、旧バージョンが入っていました汗

# find / -name nagiosgraph.js
/root/nagiosgraph-1.5.1/share/nagiosgraph.js
/usr/local/src/nagiosgraph-1.5.2/share/nagiosgraph.js
/usr/share/nagiosgraph/htdocs/nagiosgraph.js

ここで私は、以下のコマンドで、WEB上のディレクトリに上書きコピーしました。

# cp -a /usr/local/src/nagiosgraph-1.5.2/share/nagiosgraph.js /usr/share/nagiosgraph/htdocs
# cp -a /usr/local/src/nagiosgraph-1.5.2/share/nagiosgraph.css /usr/share/nagiosgraph/htdocs

/etc/nagiosgraph/nagiosgraph.conf を確認

cgicssでキーワードを検索して、 http.conf もしくは、 nagiosgraph.conf で指定しているパスと一致しているか確認します。ちなみにですが、 ここで指定している設定は、Nagiosグラフに出力される時は、静的htmlなので、もし間違えたら、たぶん作り直しだと思います。

# cat /etc/nagiosgraph/nagiosgraph.conf | egrep "\.js|\.css"
javascript = /nagiosgraph/nagiosgraph.js
stylesheet = /nagiosgraph/nagiosgraph.css

httpd (/etc/httpd/conf.d/nagiosgraph.conf)を確認

apacheの設定は以下のようにしました。

ScriptAlias /nagiosgraph/cgi-bin "/usr/lib/nagiosgraph/cgi-bin"
<Directory "/usr/lib/nagiosgraph/cgi-bin">
   Options ExecCGI
   AllowOverride None
   Order allow,deny
   Allow from all
   AuthName "Nagios Access"
   AuthType Basic
   AuthUserFile /etc/nagios/passwd
   Require valid-user
</Directory>
# enable nagiosgraph CSS and JavaScript
Alias /nagiosgraph "/usr/share/nagiosgraph/htdocs"
<Directory "/usr/share/nagiosgraph/htdocs">
   Options None
   AllowOverride None
#   Order allow,deny
#   Allow from all
   require all granted
</Directory>

もしくは、rrdを残念ながら一旦消して再起動

rrdディレクトリには、nagiosgraphのデータが入っておりますが、バージョン毎に微妙に形式が違うのか、旧バージョンの残骸が残っている場合、残念ながらエラーになります。ここの判断は、おのおのの環境で違うと思うのですが、私の場合はきれいさっぱり消しました。

cd /var/spool/nagiosgraph/rrd
rm -rf *

apache,nagios の再起動

上記いずれかの変更を加えた場合は、あとで混乱しないように、再起動かけておきましょう

/etc/init.d/httpd restart
/etc/init.d/nagios restart