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をインストールします。

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

```bash
$ sudo yum install gcc httpd glibc glibc-common gd
```

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

```bash
$ sudo yum install mysql-server
```

## Icingaのリポジトリ追加

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

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

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

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

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

```bash
$ 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
```

```bash
$ 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

```bash
$ 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
```

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

```bash
$ sudo icinga -v /etc/icinga/icinga.cfg
```

```
Total Warnings: 0
Total Errors:   0
```
と表示されていればOK。

```bash
$ 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](https://qiita-image-store.s3.amazonaws.com/227/10729/861e1492-8392-74ab-4924-7154413bbb7b.png)

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

# pnp4nagiosのインストール

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

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

```bash
# 依存パッケージ
$ 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`の設定を弄ってください。

```bash
$ 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

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

```bash
$ 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にする
```

```bash
$ 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$
}
```

```bash
$ sudo sed -i'' 's|^ *LOG_FILE *=.*|LOG_FILE = /var/log/icinga/perfdata.log|' /usr/local/pnp4nagios/etc/process_perfdata.cfg
```

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

```bash
$ sudo service icinga restart
$ sudo service httpd restart
```

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

http://[domain]/pnp4nagios/

ID: nagiosadmin PW: nagiosadmin

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

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

## Icingaとの連携

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

```bash
$ 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

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

```bash
$ sudo chkconfig npcd --add
$ sudo chkconfig npcd on
$ sudo service npcd start
$ sudo service icinga restart
$ sudo service httpd restart
```

### 確認

```bash
$ 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](https://qiita-image-store.s3.amazonaws.com/227/10729/0b36c9bb-1eab-e791-400b-837da1f83b64.png)


![icinga_pnp4nagios_2.png](https://qiita-image-store.s3.amazonaws.com/227/10729/537f5a18-5ae6-4505-1e2a-feba3a726a2c.png)

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

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

# Icinga-webのインストール

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

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

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

## 設定

### MySQL

```bash
$ 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
```

```bash
$ sudo service httpd restart
$ sudo service icinga restart
```

### 確認

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

ID: root PW: password

![icinga-web.png](https://qiita-image-store.s3.amazonaws.com/227/10729/b8a50177-ea2d-3b46-c1ad-725e70874529.png)

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

## 補足

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

```bash
$ 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