Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

Icinga 1をインストール

Icingaとは

Icinga(アイシンガ)はNagiosからforkしたモニタリングシステム。

バージョンの違い

Icinga 1

  • Nagiosの設定ファイル、プラグイン、アドオンと互換性がある
  • Nagios時代の数多くのBugfixや機能が追加されている

Icinga 2

  • コアから作り替えられており、Icinga 1およびNagiosとは互換性がない

今回はNagiosとの互換性がある、Icinga 1をインストールします。

Icinga Classicのインストール

UIがNagiosに近いIcinga Classicをインストールします。

依存パッケージのインストール

$ sudo yum install gcc httpd glibc glibc-common gd

MySQL Serverを使うので入れます。
別途MySQLサーバがある場合は、mysql clientでも良いです。

$ sudo yum install mysql-server

Icingaのリポジトリ追加

Icingaのリポジトリを追加してパッケージをインストールします。

$ cd /etc/yum.repos.d/
$ sudo wget http://packages.icinga.org/epel/ICINGA-release.repo

Icingaパッケージをインストールします。

$ sudo yum install icinga icinga-gui icinga-idoutils icinga-idoutils-libdbi-mysql nagios-plugins nagios-plugins-mysql

nrpe, nagiosプラグインが使えるので、併せてインストールします。

$ sudo yum install nrpe nagios-plugins-nrpe
$ sudo yum install nagios-plugins-all

設定

MySQL

/etc/my.cnf
# 以下を追加
[mysqld]
character-set-server = utf8

[client]
default-character-set = utf8
$ sudo chkconfig mysqld --add
$ sudo chkconfig mysqld on
$ sudo service mysqld start
$ /usr/bin/mysqladmin -u root password 'new-password'

$ echo "CREATE DATABASE icinga; \
GRANT USAGE ON icinga.* TO 'icinga'@'localhost' IDENTIFIED BY 'icinga' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0; \
GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE, CREATE VIEW, INDEX, EXECUTE ON icinga.* TO 'icinga'@'localhost'; \
FLUSH PRIVILEGES;" | mysql -u root -p -h localhost

$ mysql -u root -p -h localhost icinga < /usr/share/doc/icinga-idoutils-libdbi-mysql-*/db/mysql/mysql.sql

Icinga

$ sudo sed -i'' 's/^ *enable_environment_macros *=.*/enable_environment_macros=1/' /etc/icinga/icinga.cfg
$ sudo sed -i'' 's/^ *date_format *=.*/date_format=iso8601/' /etc/icinga/icinga.cfg

正しく設定されたかの確認をします。

$ sudo icinga -v /etc/icinga/icinga.cfg
Total Warnings: 0
Total Errors:   0

と表示されていればOK。

$ sudo chkconfig httpd --add
$ sudo chkconfig httpd on
$ sudo chkconfig icinga --add
$ sudo chkconfig icinga on
$ sudo chkconfig ido2db --add
$ sudo chkconfig ido2db on
$ sudo service httpd start
$ sudo service icinga start
$ sudo service ido2db start

ブラウザから確認して次のような画面が表示されればOKです。

http://[Domain]/icinga/
ID: icingaadmin PW: icingaadmin

icinga_top.png

nagiosと似ていますが、見やすくなっていると思います。

pnp4nagiosのインストール

取得したパフォーマンスデータをグラフ表示させてみます。

pnp4nagiosはソースからインストールします。

# 依存パッケージ
$ sudo yum install php php-gd rrdtool rrdtool-perl perl-Time-HiRes

$ cd /usr/local/src
$ sudo wget http://downloads.sourceforge.net/project/pnp4nagios/PNP-0.6/pnp4nagios-0.6.25.tar.gz
$ sudo tar zxvf pnp4nagios-0.6.25.tar.gz
$ cd pnp4nagios-0.6.25
$ sudo ./configure --with-nagios-user=icinga --with-nagios-group=icinga
$ sudo make all
$ sudo make fullinstall

設定

Apache

Basic認証設定をするか、生成された/etc/httpd/conf.d/pnp4nagios.confの設定を弄ってください。

$ sudo mkdir -p /usr/local/nagios/etc
$ sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users icingaadmin
New password: icingaadmin
Re-type new password: icingaadmin

PHP

タイムゾーンが設定されていなければ設定します。

$ sudo sed -i'' "s|^[ ;]*date.timezone *=.*|date.timezone='Asia/Tokyo'|" /etc/php.ini

pnp4nagios

Nagios用の設定になっているのでIcinga用に変更します。

/usr/local/pnp4nagios/etc/config_local.php
- $conf['nagios_base'] = "/nagios/cgi-bin";
+ $conf['nagios_base'] = "/icinga/cgi-bin";

- $conf['date_fmt'] = "d.m.y G:i";
+ $conf['date_fmt'] = "Y.m.d G:i";  // 日付形式をYYYY.MM.DDにする
/usr/local/pnp4nagios/etc/config.php
- $conf['nagios_base'] = "/nagios/cgi-bin";
+ $conf['nagios_base'] = "/icinga/cgi-bin";

- $conf['date_fmt'] = "d.m.y G:i";
+ $conf['date_fmt'] = "Y.m.d G:i";  // 日付形式をYYYY.MM.DDにする
$ cd /usr/local/pnp4nagios/etc/
$ sudo mv rra.cfg-sample rra.cfg
$ sudo mv nagios.cfg-sample icinga.cfg
$ sudo mv misccommands.cfg-sample misccommands.cfg

$ sudo sed -i'' 's/^ *user *=.*/user = icinga/' /usr/local/pnp4nagios/etc/npcd.cfg
$ sudo sed -i'' 's/^ *group *=.*/group = icinga/' /usr/local/pnp4nagios/etc/npcd.cfg
$ sudo sed -i'' 's/^ *log_type *=.*/log_type = file/' /usr/local/pnp4nagios/etc/npcd.cfg
$ sudo sed -i'' 's/^ *load_threshold *=.*/load_threshold = 10.0/' /usr/local/pnp4nagios/etc/npcd.cfg
$ sudo sed -i'' 's|^ *log_file *=.*|log_file = /var/log/pnp4nagios/npcd.log|' /usr/local/pnp4nagios/etc/npcd.cfg
/usr/local/pnp4nagios/etc/misccommands.cfg
# コメント外す
#
# Bulk with NPCD mode
#
define command {
       command_name    process-service-perfdata-file
       command_line    /bin/mv /usr/local/pnp4nagios/var/service-perfdata /usr/local/pnp4nagios/var/spool/service-perfdata.$TIMET$
}

define command {
       command_name    process-host-perfdata-file
       command_line    /bin/mv /usr/local/pnp4nagios/var/host-perfdata /usr/local/pnp4nagios/var/spool/host-perfdata.$TIMET$
}
$ sudo sed -i'' 's|^ *LOG_FILE *=.*|LOG_FILE = /var/log/icinga/perfdata.log|' /usr/local/pnp4nagios/etc/process_perfdata.cfg

設定が完了したらIcingaとApacheを再起動します。

$ sudo service icinga restart
$ sudo service httpd restart

正しく設定されたか確認します。

http://[domain]/pnp4nagios/

ID: nagiosadmin PW: nagiosadmin

正しく設定されている場合はすべてグリーンOKになるので、index.phpを削除してください。

$ sudo rm /usr/local/pnp4nagios/share/install.php

Icingaとの連携

pnp4nagiosとIcingaを連携してIcingaからグラフ表示できるようにします。
今回は、Bulk with NPCD モードでの設定を紹介します。
※最もパフォーマンスが良い。

$ sudo sed -i'' 's/^ *process_performance_data *=.*/process_performance_data=1/' /etc/icinga/icinga.cfg
$ sudo sed -i'' "s|^ *# *host_perfdata_file *=.*|host_perfdata_file=/usr/local/pnp4nagios/var/host-perfdata|" /etc/icinga/icinga.cfg
$ sudo sed -i'' "s|^ *# *service_perfdata_file *=.*|service_perfdata_file=/usr/local/pnp4nagios/var/service-perfdata|" /etc/icinga/icinga.cfg
$ sudo sed -i'' 's/^ *# *host_perfdata_file_mode *=.*/host_perfdata_file_mode=a/' /etc/icinga/icinga.cfg
$ sudo sed -i'' 's/^ *# *service_perfdata_file_mode *=.*/service_perfdata_file_mode=a/' /etc/icinga/icinga.cfg
$ sudo sed -i'' 's/^ *# *host_perfdata_file_processing_interval *=.*/host_perfdata_file_processing_interval=30/' /etc/icinga/icinga.cfg
$ sudo sed -i'' 's/^ *# *service_perfdata_file_processing_interval *=.*/service_perfdata_file_processing_interval=30/' /etc/icinga/icinga.cfg
$ sudo sed -i'' 's/^ *# *host_perfdata_file_processing_command *=.*/host_perfdata_file_processing_command=process-host-perfdata-file/' /etc/icinga/icinga.cfg
$ sudo sed -i'' 's/^ *# *service_perfdata_file_processing_command *=.*/service_perfdata_file_processing_command=process-service-perfdata-file/' /etc/icinga/icinga.cfg
/etc/icinga/icinga.cfg
- #host_perfdata_file_template=[HOSTPERFDATA]\t$TIMET$\t$HOSTNAME$\t$HOSTEXECUTIONTIME$\t$HOSTOUTPUT$\t$HOSTPERFDATA$
- #service_perfdata_file_template=[SERVICEPERFDATA]\t$TIMET$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$

+ host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$
+ service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tSERVICESTATE::$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTATETYPE$
/etc/icinga/objects/commands.cfg
# コメントアウト
# 'process-host-perfdata' command definition
#define command{
#       command_name    process-host-perfdata
#       command_line    /usr/bin/printf "%b" "$LASTHOSTCHECK$\t$HOSTNAME$\t$HOSTSTATE$\t$HOSTATTEMPT$\t$HOSTSTATETYPE$\t$HOSTEXECUTIONTIME$\t$HOSTOUTPUT$\t$HOSTPERFDATA$\n" >> /var/spool/icinga/host-perfdata.out
#       }


# 'process-service-perfdata' command definition
#define command{
#       command_name    process-service-perfdata
#       command_line    /usr/bin/printf "%b" "$LASTSERVICECHECK$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICESTATE$\t$SERVICEATTEMPT$\t$SERVICESTATETYPE$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$\n" >> /var/spool/icinga/service-perfdata.out
#       }

# 以下、追加
define command {
       command_name    process-service-perfdata-file
       command_line    /bin/mv /usr/local/pnp4nagios/var/service-perfdata /usr/local/pnp4nagios/var/spool/service-perfdata.$TIMET$
}

define command {
       command_name    process-host-perfdata-file
       command_line    /bin/mv /usr/local/pnp4nagios/var/host-perfdata /usr/local/pnp4nagios/var/spool/host-perfdata.$TIMET$
}
/etc/icinga/objects/templates.cfg
define host{
        name                            generic-host
        ...(省略)...
        register                        0
        action_url                      /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_  ; 追加

...(省略)...

define service{
        name                            generic-service
        ...
        register                        0
        action_url                      /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$  ; 追加

npcd

$ sudo sed -i'' 's|^ *config=.*|config="/usr/local/pnp4nagios/etc/npcd.cfg"|' /etc/init.d/npcd
$ sudo chown -R icinga:icinga /var/log/pnp4nagios
$ sudo chkconfig npcd --add
$ sudo chkconfig npcd on
$ sudo service npcd start
$ sudo service icinga restart
$ sudo service httpd restart

確認

$ ls /usr/local/pnp4nagios/var/host-perfdata
/usr/local/pnp4nagios/var/host-perfdata
$ ls /usr/local/pnp4nagios/var/service-perfdata
/usr/local/pnp4nagios/var/service-perfdata
# タイミングによってはファイルがない場合もある
$ ls /usr/local/pnp4nagios/var/spool/
host-perfdata.1424428761  perfdata.1424428761  service-perfdata.1424428761

http://[Domain]/icinga/ にアクセスして下図のように歯車が表示されるので、クリックするとグラフ表示されるはずです。
画像表示されるまでに多少時間がかかります。

icinga_pnp4nagios_1.png

icinga_pnp4nagios_2.png

画像表示されなかったらログを確認して設定を見直してください。

$ tail -f /var/log/icinga/perfdata.log

Icinga-webのインストール

Icinga ClassicよりもリッチなUIであるIcinga-webをインストールします。

Icingaリポジトリがあるのでyumでインストールできます。

$ sudo yum install icinga-web icinga-web-mysql icinga-web-module-pnp

設定

MySQL

$ echo "CREATE DATABASE icinga_web; \
GRANT USAGE ON icinga_web.* TO 'icinga_web'@'localhost' IDENTIFIED BY 'icinga_web' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0; \
GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE, CREATE VIEW, INDEX, EXECUTE ON icinga_web.* TO 'icinga_web'@'localhost'; \
FLUSH PRIVILEGES;" | mysql -u root -p -h localhost
$ mysql -u root -p -h localhost icinga_web < /usr/share/doc/icinga-web-*/schema/mysql.sql
$ sudo service httpd restart
$ sudo service icinga restart

確認

http://[Domain]/icinga-web/

ID: root PW: password

icinga-web.png

UIがリッチになったが表示が重かったり、少々使いづらいです。

補足

icinga-webをyumでインストールした場合、pnp4nagiosも依存関係でインストールされます。
そのため、先にソースでインストールしたpnp4nagiosの設定が上書きされることがあります。
変更された箇所をもう一度修正する必要があり、下記のコマンドをもう一度実行します。

$ sudo sed -i'' 's|^ *config=.*|config="/usr/local/pnp4nagios/etc/npcd.cfg"|' /etc/init.d/npcd
$ sudo chown -R icinga:icinga /var/log/pnp4nagios
$ sudo service npcd restart

補足2

Icinga-webでエラーが出たので対応方法を投稿しました。
http://qiita.com/shu1/items/33951764f1edfde7a5ec

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
4
Help us understand the problem. What are the problem?