harry’s memorandum

おれおれメモ

NagiosからforkしたIcingaをインストールしてみた

昨年Nagiosコミュニティの一部のグループが、NagiosからforkしてIcingaプロジェクトを発足させました。
Icinga faqによるとforkした理由は「開発ペースが遅く提案も受け入れてくれないから分岐しまーす」ということだそうです。

In contrast, the core of this system – the Nagios software itself- is maintained by a single developer in the United States and hence is developed at a slower pace. The Nagios community has previously attempted to clear this bottleneck with suggestions to broaden the developer base. Long awaited improvements such as the regular integration of community patches, the connection to databases or the web interface were hoped to be accelerated. Unfortunately, these attempts came to little success and effective community commitment has gradually deflated.

IcingaはNagiosと互換性を保ちつつ、数百のBugfixと新しいWebインタフェースやAPIなどを導入しているそうです。

Over time, Icinga has implemented hundreds of patches, bug fixes and new features which the community has long asked for. Now with a new architecture supported by an API and a new web interface – Icinga now boasts features and capabilities that make it a real monitoring force to reckon with.

Icinga vs. Nagios – What’s the difference?

構成

IcingaとIDOUtilsのインストール

nagiosとほとんど変わりありません。インストールガイドを参照しつつ。

  • 必要なパッケージをインストール
$ yum install --enablerepo=remi gd gd-devel libjpeg libjpeg-devel libpng libpng-devel httpd httpd-devel
$ yum install --enablerepo=remi php php-cli php-pear php-xmlrpc php-xsl php-pdo php-gd php-ldap php-mysql php-soap php-mbstring pcre pcre-devel mysql mysql-server libdbi libdbi-devel libdbi-drivers libdbi-dbd-mysql
$ yum install --enablerepo=remi openssl-devel mysql-devel gnutls-devel postgresql-devel net-snmp-devel net-snmp-utils radiusclient-ng fping
  • 必要なユーザとグループを作成
$ /usr/sbin/useradd -m icinga
$ passwd icinga
$ /usr/sbin/groupadd icinga
$ /usr/sbin/groupadd icinga-cmd
$ /usr/sbin/usermod -a -G icinga-cmd icinga
$ /usr/sbin/usermod -a -G icinga-cmd apache
  • Icingaをコンパイル

あとで新しいWebインターフェイスもインストールするのでIDOUtilsを有効にします。

$ ./configure --with-command-group=icinga-cmd --enable-idoutils --prefix=/home/icinga
$ make
$ make all
$ make install
$ make fullinstall
$ make install-api
  • データベースに接続するモジュールのcfgファイルをコピー
$ cd /home/icinga/etc
$ cp -p idomod.cfg-sample  idomod.cfg
$ cp -p ido2db.cfg-sample  ido2db.cfg
  • ido2db.cfgを修正

socket_typeをtcpに変更。

$ vim ido2db.cfg

#socket_type=unix
socket_type=tcp
  • idomod.cfgを修正

output_typeをtcpに変更してoutputをlocalhost

$ vim idomod.cfg

output_type=tcpsocket
output=127.0.0.1
  • icinga.cfgを修正

broker_moduleを有効にする。

$ vi icinga.cfg

broker_module=/home/icinga/bin/idomod.o config_file=/home/icinga/etc/idomod.cfg
  • データベースを作成
$ mysql -u root -p
mysql> CREATE DATABASE icinga;
mysql> GRANT USAGE ON *.* TO 'icinga'@'localhost' IDENTIFIED BY 'icinga' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;
mysql> GRANT SELECT , INSERT , UPDATE , DELETE ON icinga.* TO 'icinga'@'localhost';
mysql> FLUSH PRIVILEGES ;
mysql> quit
  • icingaソースにあるmysql.sqlをインポート
$ cd /path/to/source/icinga-1.0.3/module/idoutils/db/mysql/
$ mysql -u root -p icinga < mysql.sql
  • Apache基本認証の設定
$  htpasswd -c /home/icinga/etc/htpasswd.users icingaadmin
  • nagios-pluginのインストール
$ ./configure --prefix=/home/icinga --with-nagios-user=icinga
$ make install
  • Icingaとido2dbの自動起動
$ sudo chkconfig --add icinga
$ sudo chkconfig --add ido2db
$ sudo chkconfig --level 345  icinga on
$ sudo chkconfig --level 345  ido2db on

Icingaとido2dbを起動して、http://localhost/icingaにアクセスして正しく稼働していることを確認。

$ /etc/init.d/icinga start
$ /etc/init.d/ido2db start

Icinga Web Frontendのインストール

ClassicWebで問題なければ、NewWebのインストールや設定は必要ないです。*1
細かいところはインストールガイドを参照。

  • /etc/php.iniのtimezoneを設定
$ vi /etc/php.ini

date.timezone = Asia/Tokyo
  • ./configureしてインストール

make testdepsで問題がないことを確認します。

$ ./configure \
  --prefix=/home/icinga-web \
  --with-web-user=apache \
  --with-web-group=apache \
  --with-web-path=/icinga-web \
  --with-web-apache-path=/etc/httpd/conf.d \
  --with-db-type=mysql \
  --with-db-host=localhost \
  --with-db-port=3306 \
  --with-db-name=icinga_web \
  --with-db-user=icinga_web \
  --with-db-pass=icinga_web \
  --with-icinga-api=/home/icinga/share/icinga-api
$ make install
$ make install-apache-config
$ make install-javascript
$ make install-done
$ make testdeps
  • icinga_webのデータベースを作成
$ mysql -u root -p
mysql> CREATE DATABASE icinga_web;
mysql> GRANT USAGE ON *.* TO 'icinga_web'@'localhost' IDENTIFIED BY 'icinga_web' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, INDEX ON icinga_web.* TO 'icinga_web'@'localhost';
mysql> FLUSH PRIVILEGES ;
mysql> quit
  • データベースを初期化

失敗したらエラーを潰して make db-drop ; make db-initializeします。

$ make db-initialize
  • Icinga api の設定

IDOUtilsやCommand Pipeの設定を変更したい場合は修正します。

$ vi /home/icinga-web/app/modules/Web/config/module.xml

Command Pipeだと icinga-io.xmlを修正。 (2011.05.24)

$ vi /home/icinga-web/app/modules/Web/config/icinga-io.xml
  • キャッシュを削除してapacheを再起動
$ rm -f /home/icinga-web/app/cache/config/*.php
$ /etc/init.d/httpd restart
  • icinga-webにアクセス

rootログインの初期パスワードは'password'です。

http://localhost/icinga-web

f:id:dharry:20100923051924p:image

インストールは結構面倒です。WebUIもきれいでステータスマップなどかっこよくなったのですが、ちょっと重い。

*1:今のところNewWebは重いだけで、ClassicWebのほうがいいです。新しい機能はNewWebで実装するようなので入れても損はないかな