簡體中文     繁體中文

Icinga快速安裝與配置

1.1. 緒論
1.2. 前提條件
1.3. 安裝軟件包
1.4. 創建帳戶信息
1.5. 編譯和安裝Icinga(包括IDOUtils)
1.5.1. 編譯和安裝
1.6. 定制配置
1.6.1. 啓用idomod event broker 模塊
1.7. 數據庫創建和IDOUtils
1.8. 配置經典的Web界面
1.9. 編譯和安裝Icing插件
2.0. 調整SELinux的設置
2.1. 啓動IDOUtils和Icinga
2.1.1. 配置Icinga開機啓動
2.1.2. 登錄到經典的Web界面
2.2. 其它修改
2.3. 客戶端主機的配置
2.3.1 客戶端編譯和安裝Icinga插件
2.3.2 客戶端編譯和安裝Nrpe
2.3.2 配置客戶端Nrpe

1.1. 簡述

說明

如果沒有安裝Icinga,你可使用適用於您的操作系統的軟件包.

如果你打算從源代碼安裝,那麼請使用官方發佈的壓縮包.

提示

除非你有問題,需要通過目前的開發版本來解決,否則請不要使用git快照.

本指南旨在為您提供簡單的如何從源(代碼)安裝Icinga的說明,並在20分鐘內監控您的本地計算機.

這裡不會對進階安裝選項進行討論 - 只需基本操作大多數的用戶就可以開始使用.

目前提供三種不同的Linux發行版的例子: Fedora, UbuntuopenSuSE. 類似發行版也可以正常使用. 這應該包括 RedHat, CentOS, DebianSLES.

最終您會得到結果是甚麼

如果您按照這些說明操作,最終結果:

  • Icinga和插件將安裝到 /usr/local/icinga

  • 配置Icinga監視您本地系統的幾個方面 (CPU負載, disk使用率, 例如.)

  • Icinga經典web界面可以通過http://localhost/icinga/ 或 http://yourdomain.com/icinga訪問

  • Icinga使用IDOUtils加載數據庫

1.2. 前提條件

部分安裝過程中,你需要具有root權限.

再繼續安裝之前,請確保你已經安裝以下軟件包. 如果安裝IDOUtils,需要使用libdb和libdbi-drivers的開發庫. 下面的例子將顯示如何安裝icinga和IDOUtils.

  • Apache或Nginx

  • GCC 編譯器

  • C/C++ 開發庫

  • GD 開發庫

  • libdbi/libdbi-drivers, 如MySQL或PostgreSQL數據庫(如果不安裝IDOUtils請跳過此部分)

    說明

    PostgreSQL: 由於INSERT語句的變化 PostgreSQL 8.1 無法再運作(2010年11月以來已經 結束產品生命期), 所以請使用8.2或高於8.4的版本. 字符串轉義在PostgreSQL 9.x處於實驗階段(請參閱 issue #1974).

1.3. 安裝軟件包

1.3.1 您可以運行以下命令(以root或使用sudo)安裝這些軟件包.

備注

如果沒有發現相應軟件包,請使用您的包管理器的搜索選項來獲得新的不同版本之間的變化名稱:

  • yum search <package name> ( Fedora/RHEL/CentOS )

  • apt-cache search <package name> ( Debian/Ubuntu )

  • zypper search <package name> ( openSuSE/SLES )

  • Fedora/RHEL/CentOS:

     #> yum install httpd gcc glibc glibc-common gd gd-devel
     #> yum install libjpeg libjpeg-devel libpng libpng-devel
    備注

    您可能需要使用到libjpeg-turbo和libjpeg-turbo-devel代替

    • MySQL:

       #> yum install mysql mysql-server \
          libdbi libdbi-devel libdbi-drivers libdbi-dbd-mysql
    • PostgreSQL:

       #> yum install postgresql postgresql-server \
          libdbi libdbi-devel libdbi-drivers libdbi-dbd-pgsql
  • Debian/Ubuntu:

     #> apt-get install apache2 build-essential libgd2-xpm-dev
     #> apt-get install libjpeg62 libjpeg62-dev libpng12 libpng12-dev
    備注

    Debian 6.0 / Ubuntu 10.10開始使用libpng-12-0包, dev-package名稱不變.

    • MySQL:

       #> apt-get install mysql-server mysql-client libdbi1 libdbi-dev libdbd-mysql
    • PostgreSQL:

       #> apt-get install postgresql libdbi0 libdbi0-dev libdbd-pgsql
  • openSuSE:

    請使用YaST安裝包 gd, gd-devel, libjpeg, libjpeg-devel, libpng, libpng-devel 和, optionally, net-snmp, net-snmp-devel 和 perl-Net-SNMP.

    使用zypper:

     #> zypper install gd gd-devel libjpeg libjpeg-devel libpng libpng-devel
     #> zypper install net-snmp net-snmp-devel perl-Net-SNMP
    備注

    開發包可能位於SDK DVDs.

    • MySQL:

      使用YaST安裝RDBMS包,你要使用,例如. "mysql", "mysql-devel", "mysql-client" 和 libdbi 包s "libdbi", "libdbi-devel", "libdbi-drivers" 和 "libdbi-dbd-mysql", 或 alternatively zypper.

       #> zypper install mysql mysql-devel mysql-client \
          libdbi libdbi-devel libdbi-drivers libdbi-dbd-mysql
            
      備注

      在OpenSuSE 11 (SLES 11)中 "mysql-devel" 已更改為 "libmysqlclient-devel".

    • PostgreSQL:

      使用YaST安裝RDBMS包,你要使用, 例如. "postgresql", "postgresql-devel", "postgresql-server" 和libdbi包 "libdbi", "libdbi-devel" and "libdbi-drivers", 或 alternatively zypper.

       #> zypper install postgresql postgresql-devel postgresql-server
       #> zypper install libdbi libdbi-devel libdbi-drivers
    備注

    使用舊的OpenSuSE (SLES)版本,包括版本10目前可能還沒有任何libdbi包. 所以你必須下載並編譯源代碼. 您可以使用如mysql或pgsql代替所需的. 請記住,Oracle驅動程序還無法工作和請使用ocilib代替libdbi.

    1.3.2 使用源碼安裝

    首先需要確認gd是否支持TTC,如果不支持請重新編譯gd

    1. 編譯GD(freetype+libjpeg+libpng+fontconfig)

       #> tar zxvf libiconv-1.14.1.tar.gz
       #> cd libiconv-1.14.1
       #>./configure --prefix=/usr/local/libiconv 
       #> make 
       #> make install 
       #> /sbin/ldconfig
       #> tar xvzf gd-2.0.35.tar.gz
       #> cd gd-2.0.35
       #> ./configure --prefix=/usr/local/gd2  --with-libiconv-prefix=/usr/local/libiconv
       #> make
       #> make install
    2. 安裝libdbi. 你還可以指定額外的配置選項(例如 --prefix=/usr ... )

       #> cd libdbi-0.8.3
       #> ./configure --disable-docs
       #> make
       #> make install
    3. 安裝libdbi-drivers

       #> cd libdbi-drivers-0.8.3-1
       #> ./configure --with-<rdbm> --disable-docs
       #> make
       #> make install
    4. 備注

      在64-bit版本上使用,你必須指定include-和lib-dir的路徑:

       #> ./configure --with-<rdbm> \
          --with-<rdbm>-incdir=/usr/include/<rdbm>/ \
          --with-<rdbm>-libdir=/usr/lib64/ --disable-docs

1.4. 創建帳戶信息

 $> su -l

創建一個新的Icinga帳戶,並設置一個密碼.

 #> /usr/sbin/useradd -m icinga 
 #> passwd icinga 

在某些發行版本 你需要在這一個步驟中添加組:

 #> /usr/sbin/groupadd icinga
 #> /usr/sbin/usermod -a -G icinga www-data

(或 www, wwwrun, apache取決於發行版本)

1.5. 編譯和安裝Icinga(包括IDOUtils)

提取Icinga源代碼tarball

 #> tar jxvf icinga-cn-version.tar.bz2 
 #> cd icinga-cn-version
 #> ./configure --prefix=/usr/local/icinga   --with-icinga-user=icinga -with-icinga-group=icinga \ 
  --with-command-user=icinga --with-command-group=icinga   --with-mail=/usr/bin/mutt \
  --enable-nanosleep --enable-event-broker
備注

--enable-idoutils #數據庫支持(默認)

--enable-embedded-perl #啓用嵌入式Perl解釋器

--enable-ssl #使本地的SSL支持

--with-mail #設置郵件通知使用的程序,默認為Mutt.

--enable-oraclel #啓用oraclel支持.
a.如果沒有安裝Oracle庫路徑,您需要指定--with-oracle-lib=/path/to/instantclient
b.如果ocilib沒有安裝到默認路徑(/usr/local), 您需要指定 --with-ocilib-lib=/path/to/ocilib/lib --with-ocilib-inc=/path/to/ocilib/include

此外,如果您要使用PostgreSQL將不宜使用參數--enable-pgsq, 因為它目前還不被支持.

備注

如果您想從Oracle作為MRDB, 您需要重新編譯和安裝IDOUtils!

Oracle使用IDOUtils1.5.0至少需要OCILIB3.9.2 - 不要安裝3.9.0或3.9.1,因為它們仍然有bug。

 #> make distclean
 #> ./configure --prefix=/usr/local/icinga   --with-icinga-user=icinga -with-icinga-group=icinga \ 
  --with-command-user=icinga --with-command-group=icinga   --enable-idoutils \
  --with-httpd-conf=/etc/httpd/conf.d  --enable-nanosleep --enable-event-broker

1.5.1. 編譯和安裝

 #> make all

安裝二進制文件, 初始化腳本, 配置文件樣本, 一些事件處理函數, 和設置外部命令目錄的權限.

 #> make install
 #> make install-init
 #> make install-config
 #> make install-eventhandlers
 #> make install-commandmode
 #> make install-idoutils 

或使用

 #> make fullinstall
 #> make install-config
備注

從Icinga 1.5.0開始 make install-config 不包括在 make fullinstall 中,以避免意外覆蓋您的配置文件.

只要使用 "make install" 就可以安裝IDOUtil和適用的event broker模塊.

ldd ido2db查看加載模塊

libdbi.so.1 => /lib64/libdbi.so.1

libdbi.so.1默認的路徑是/lib64或/lib

不要啓動Icinga- 還有更多的事情需要做...

1.6. 定制配置

使用 "make install-config" 安裝簡單配置文件到 /usr/local/icinga/etc/

 #> cd /usr/local/icinga/etc/
 #> vi idomod.cfg
 #> vi ido2db.cfg

如果啓用 --enable-ssl, 您需要更改 idomod.cfg文件:

 use_ssl=1
 output_type=tcpsocket
 output=127.0.0.1

如果您的數據庫沒有位於本機,您需要更改ido2db.cfg:

 use_ssl=1
 socket_type=tcp 
備注

如果在ido2db上啓用SSL, 但對於不同的idomod客戶端 - 將會出現數據丟失現象 - 需要在所有的節點上做相同的SSL配置!!!

1.6.1. 啓用idomod event broker 模塊

提示

在正常情況下,下面的模塊定義已經存在於modules/idoutils.cfg-sample

	define module{
        module_name     idomod
        module_type     neb
        path            /usr/local/icinga/lib/idomod.so
        args            config_file=/usr/local/icinga/etc/idomod.cfg
	}

所以沒有必要編輯主配置文件啓用broker_module條目!

 #> mv idoutils.cfg-sample idoutils.cfg

1.7.數據庫創建和IDOUtils

備注

如果剛安裝了一個新的數據庫系統,在您創建新數據庫之前,你必須啓動數據庫服務. 如 MySQL可能使用 /etc/init.d/mysqld start (或 /etc/init.d/mysql, 這取決於您的發行版本).

  • MySQL:

    創建數據庫,用戶, 授權:

     #> mysql -u root -p
     mysql> 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 VIEW, INDEX, EXECUTE
       ON icinga.* TO 'icinga'@'localhost';
      
     FLUSH PRIVILEGES;
    
     quit
    備注

    從Icinga 1.8 開始icinga用戶另外需要EXECUTE權限.

    向MySQL導入數據庫架構:

     #> cd /path/to/icinga-src/module/idoutils/db/mysql
     #> mysql -u root -p icinga < mysql.sql

    升級MySQL數據庫:

     #> cd /path/to/icinga-src/module/idoutils/db/mysql/upgrade
     #> mysql -u root -p icinga < mysql-upgrade-x.sql

    編輯DB配置文件自定義IDOUtils

     #> vi /usr/local/icinga/etc/ido2db.cfg
     db_servertype=mysql
     db_port=3306
     db_user=icinga
     db_pass=icinga
  • PostgreSQL:

    創建數據庫和用戶:

     #> su - postgres
     
     $ psql
     postgres=# CREATE USER icinga;
     postgres=# ALTER USER icinga WITH PASSWORD 'icinga';
     postgres=# CREATE DATABASE icinga;
     postgres=# \q
     $ createlang plpgsql icinga;

    從PostgreSQL 9.1開始 "createlang ..."已經過時.

    • Debian:

       #> vi /etc/postgresql/8.x/main/pg_hba.conf
    • Fedora/RHEL/CentOS:

       #> vi /var/lib/pgsql/data/pg_hba.conf

    編輯配置文件 例如. 這樣 (本地用戶必須信任)

     # database administrative login by UNIX sockets
     local    all        postgres                  ident
     # TYPE   DATABASE   USER       CIDR-ADDRESS   METHOD 
     #icinga
     local    icinga     icinga                    trust
     # "local" is for Unix domain socket connections only
     local    all        all                       trust
     # IPv4 local connections
     host     all        all        127.0.0.1/32   md5
     # IPV6 local connections
     host     all        all        ::1/128        md5

    重新載入和配置數據庫架構.

     #> /etc/init.d/postgresql-8.x reload
     #> cd /path/to/icinga-src/module/idoutils/db/pgsql
     #> psql -U icinga -d icinga < pgsql.sql

    升級PostgreSQL數據庫.

     #> cd /path/to/icinga-src/module/idoutils/db/pgsql/upgrade
     #> psql -U icinga  -d icinga < pgsql-upgrade-x.sql

    編輯DB配置文件自定義IDOUtils

     #> vi /usr/local/icinga/etc/ido2db.cfg
     db_servertype=pgsql
     db_port=5432
     db_user=icinga
     db_pass=icinga
  • Oracle:

    創建一個數據庫結構描述和用戶名/密碼 (請參閱Oracle文檔 http://www.oracle.com ,或咨詢您的DBA). 使用sqlplus導入數據庫結構描述 (或 您的首選方法). 複製 module/idoutils/db/oracle/* 到 $ORACLE_HOME 和編輯 icinga_defines.sql 以匹配表空間和用戶認證信息.

     #> su - oracle
     $> sqlplus dbuser/dbpass
     SQL> @oracle.sql

    編輯DB配置文件自定義IDOUtils. 請記住Oracle忽略的db主機, 代替指向 db_name 到 //DBSERVER/DBNAME

     #> vi /usr/local/icinga/etc/ido2db.cfg
      db_servertype=oracle
      db_port=1521
      db_user=icinga
      db_pass=icinga

1.8.  配置經典的Web界面

安裝Icinga附帶的經典web界面("CGIs")

 #> make cgis
 #> make install-cgis
 #> make install-html

安裝經典web配置文件到Apache的conf.d目錄下.

 #> make install-webconf

創建 icingaadmin 賬戶,登錄到Icinga經典web界面. 記住您分配給這個帳戶的密碼 -稍後你會需要它.

 #> htpasswd -c /usr/local/icinga/etc/htpasswd.users icingaadmin

如果你想改變用戶密碼,或添加另一個用戶,請使用以下命令:

 #> htpasswd /usr/local/icinga/etc/htpasswd.users <USERNAME>
備注

這取決於您的發行版本和Apache版本,您還可能使用到 htpasswd2 代替.

重新載入/重新啓動Apache使新的設置生效.

  • Fedora/RHEL/CentOS:

     #> service httpd restart
  • Ubuntu/openSuSE:

     #> service apache2 restart
  • Debian:

     #> /etc/init.d/apache2 reload

1.9. 編譯和安裝Icing插件

#> tar -jxvf nagios-cn-plugins-1.5.tar.bz2
 #> cd nagios-cn-plugins-1.5  

編譯並安裝插件安裝到目錄/usr/local/icinga

 #> ./configure --prefix=/usr/local/icinga \
    --with-package-name=icinga-plugins \
    --with-nagios-user=icinga --with-nagios-group=icinga 
 #> make 
 #> make install 
備注

#查看播件文件是否已安裝在這個目錄

ls /usr/local/icinga/libexec

1.9.1. 安裝check_nrpe 插件

#> tar -zxvf nrpe-2.14.tar.gz  
 #> cd nrpe-2.14   
 #> ./configure --prefix=/usr/local/icinga --enable-ssl 
 #> make all
 #> make install-plugin

2.0. 調整SELinux的設置

RHEL和衍生版本(如Fedora和CentOS) 出廠時激活了SELinux(Security Enhanced Linux) 並運行在"enforcing"模式. 當你嘗試調用Icinga-CGIs時,可能導致 "內部服務器錯誤" 消息.

檢查SELinux是否運行在enforcing模式

#> getenforce 

設置SELinux處於"permissive"模式

#> setenforce 0

如果要永久更改,你必須調整/etc/selinux/config中的該設置並重新啓動系統.

如果不停用SELinux或將它設置成permissive模式,您可以在enforcing/targeted模式下,使用下面的命令來運行CGIs:

 #> chcon -R -t httpd_sys_script_exec_t /usr/local/icinga/sbin/
 #> chcon -R -t httpd_sys_content_t /usr/local/icinga/share/
 #> chcon -R -t httpd_sys_script_rw_t /usr/local/icinga/var/rw/

此外你也可以看看這個 http://www.linuxquestions.org/questions/blog/sag47-492023/selinux-and-icinga-34926/.

2.1. 啓動IDOUtils和Icinga

在啓動Icinga之前必須先啓動和運行IDOUtils.

啓動 IDOUtils:

  • Fedora/RHEL/CentOS/Ubuntu/openSuSE:

     #> service ido2db start
  • Debian:

     #> /etc/init.d/ido2db start

停止 IDOUtils:

  • Fedora/RHEL/CentOS/Ubuntu/openSuSE:

     #> service ido2db stop
  • Debian:

     #> /etc/init.d/ido2db stop

驗證Icinga的配置文件樣本.

 #> /usr/local/icinga/bin/icinga -v /usr/local/icinga/etc/icinga.cfg 

一切正常將顯示OK信息。如何有任何錯誤將會顯示相應錯誤出現的未知. 啓動 Icinga.

  • Fedora/RHEL/CentOS/Ubuntu/openSuSE:

     #> service icinga start
  • Debian:

     #> /etc/init.d/icinga start

2.1.1. 配置Icinga開機啓動

添加Icinga到服務列表和在系統啓動時自動啓動 (在次之前確保您已經安裝了init腳本).

  • Fedora/RHEL/CentOS/openSuSE:

     #> chkconfig --add icinga chkconfig icinga on
  • Debian/Ubuntu:

     #> update-rc.d icinga defaults

2.1.2. 登錄到經典的Web界面

通過下面的網址,您現在應該能夠訪問到Icinga的經典Web界面. 系統將提示您先前指定的用戶名 ( 例如. icingaadmin ) 和密碼.

 http://localhost/icinga/

 http://yourdomain.com/icinga/ 

2.2. 其它修改

請確保您的系統的防火牆規則配置為允許訪問到Web服務器,如果您要遠程訪問的Icinga的經典Web界面.

 #> iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

2.3. 客戶端主機的配置

添加用戶(普通賬戶)icinga

 #> /usr/sbin/useradd icinga
 #> passwd icinga

2.3.1. 客戶端編譯和安裝Icinga插件

 #> tar jxvf nagios-cn-plugins-1.5.tar.bz2
 #> cd nagios-cn-plugins-1.5 
 #> ./configure -prefix=/usr/local/icinga \
  --with-package-name=icinga-plugins \
  --with-nagios-user=icinga --with-nagios-group=icinga 
 #> make
 #> make install
備注

#查看播件文件是否已安裝在這個目錄

ls /usr/local/icinga/libexec

2.3.2. 客戶端編譯和安裝Nrpe

 #> tar xvzf icinga-nrpe-2.14.tar.gz
 #> cd icinga-nrpe-2.14  
 #> ./configure --prefix=/usr/local/icinga --with-nrpe-user=icinga --with-nrpe-group=icinga \ 
 --with-icinga-user=icinga --with-icinga-group=icinga
 #> make all
 #> make install
 #> make install-plugin
 #> make install-daemon
 #> make install-daemon-config
 #> make install-init

2.3.3. 配置客戶端Nrpe

添加nrpe服務器地址,允許服務器對其讀取信息

 #> vi /usr/local/icinga/etc/nrpe.cfg
 #> allowed_hosts=127.0.0.1,IPADDRESS

增加command字段來添加要監控的服務

 command[check_users]=/usr/local/icinga/libexec/check_users -w 5 -c 10
 command[check_load]=/usr/local/icinga/libexec/check_load -w 15,10,5 -c 30,25,20
 command[check_hda1]=/usr/local/icinga/libexec/check_disk -w 20% -c 10% -p /dev/hda1 
 command[check_zombie_procs]=/usr/local/icinga/libexec/check_procs -w 5 -c 10 -s Z 
 command[check_total_procs]=/usr/local/icinga/libexec/check_procs -w 150 -c 200  
 command[check_ssh]=/usr/local/icinga/libexec/check_ssh -H localhost 
 command[check_swap]=/usr/local/icinga/libexec/check_swap -w 20% -c 10% 
 command[check_mysql]=/usr/local/icinga/libexec/check_mysql -H localhost -uroot -ptomcat2008 
 command[check_apache]=/usr/local/icinga/libexec/check_apachestatus -H localhost -p 80 
 command[check_ntp]=/usr/local/icinga/libexec/check_ntp -H localhost -w 0.5 -c 1 
 command[check_snmp]=/usr/local/icinga/libexec/check_snmp_service -H localhost -C monitor_energysh 

啓動Nrpe

  • Fedora/RHEL/CentOS:

     #> service icinga-nrpe start
  • Debian/Ubuntu/openSuSE:

     #> /etc/init.d/icinga-nrpe start 
     或
     #>  service icinga-nrpe start
備注

檢測服務端check_nrpe與客戶端運行的nrpedaemon之間的通信

/usr/local/icinga/libexec/check_nrpe -H ClientIPADDRESS