Ads 468x60px

Pages

2012年1月2日 星期一

網路監控 : 活用 Nagios + ndo2db + Cacti + NPC (二)



2. 安裝 Apache, Mysql, Php
yum install httpd php php-mysql mysql mysql-server php-snmp net-snmp-utils

安裝完畢後,設定服務於 Server 啟動後,自動重啟
service httpd start     # Start httpd service
chkconfig httpd on      # Start after init

service mysqld start     # Start mysql service
chkconfig mysqld on      # Start after init

mysql 預設 root 密碼為 '' 空值,如要變更如下:
mysqladmin -uroot password '123456'  

Mysql for Cacti 配置, 資料庫名稱為 cactidb, 使用者為 cactier
mysql> CREATE DATABASE cactidb;
mysql> GRANT ALL ON cactidb.* TO cactier@'192.168.253.%' IDENTIFIED BY '123456';
mysql> FLUSH privileges;

基本配置完成,接下來安裝 rrdtool

3. 安裝 rrdtool

其中主要用到的是 rrdtool-1.2.27-3.el5.i386.rpm 和 rrdtool-devel-1.2.27-3.el5.i386.rpm 和rrdtool-php-1.2.27-3.el5.i386.rpm 這三個 packages.

yum install rrdtool rrdtool-devel rrdtool-php

4. 安裝 Cacti

效能問題:cacti 在做 polling 時,預設會使用 cmd.php 的方式去做,不過它的效能很差,所以需改用 Spine (Cactid)

Spine 使用 C 來取代呼叫 cmd.php ,在效能上提升很多。官方網頁也寫說 ,如果執行 php poller.php 時間超過 300 秒,就需要使用 Spine 。使用方法很簡單,照著官方網頁作就可以了,不在此贅述。個人是覺得 cmd.php 的方法該廢掉了,目前存在的意義只是因為 php 讓 cacti 達成跨平台的特性。

For cacti-spine package, download from here http://pkgs.repoforge.org/cacti-spine/cacti-spine-0.8.7g-1.el5.rf.x86_64.rpm , and then install cacti and spine.
yum install cacti-0.8.7g-1.el5.1.noarch.rpm
yum -y localinstall --nogpgcheck cacti-spine-0.8.7g-1.el5.rf.x86_64.rpm

根據 mysql 的設定,修改 spine.conf 的配置
DB_Host         192.168.1.100
DB_Database     cactidb
DB_User         cactier
DB_Pass         123456
DB_Port         3306

5. 安裝及配置 snmpd

# yum install net-snmp

在被監控的主機,配置 /etc/snmp/snmpd.conf
rocommunity public
#com2sec notConfigUser  default       public
com2sec readonly  default       public

syslocation Taipei
syscontact admin@yourdomain.com

測試 snmp
# snmpwalk -v 1 -c public 192.168.1.103 | less

SNMPv2-MIB::sysDescr.0 = STRING: Linux w1.yourdomain.com 2.6.18-238.1.1.el5 #1 SMP Tue Jan 4 13:32:19 EST 2011 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (32300) 0:05:23.00
SNMPv2-MIB::sysContact.0 = STRING: admin@yourdomain.com
SNMPv2-MIB::sysName.0 = STRING: w1.yourdomain.com
SNMPv2-MIB::sysLocation.0 = STRING: Taipei
...

7. 配置 Cacti

建立 cacti 資料庫
# mysql -u root -p cactidb < /usr/share/doc/cacti-0.8.7g/cacti.sql
## 將 cacti.sql 資料庫文件導入,並輸入 root 密碼即可 
編輯 /usr/share/cacti/include/config.php,對應到 mysql 的設定
$database_type = "mysql";
$database_default = "cactidb";
$database_hostname = "192.168.100.1";
$database_username = "cactier";
$database_password = "123456";
$database_port = "3306";
先暫時把 selinux 關閉,不然不能以 web 執行 install
# setenforce 0
修改目錄權限, cacti 服務以 cacti 這個 unix user 在執行
# chown -R cacti /usr/share/cacti/rra
# chown -R cacti /usr/share/cacti/log
好了,下面就可以用 web 訪問 cacti 進行配置管理了。 筆者所用的 web ip 為 192.168.100.1 從瀏覽器直接訪問以下地址 即可看到 cacti 配置畫面 http://192.168.100.1/cacti/install/ 如果看到以下畫面,則可以進行之後的配置 如果上面全是 [FOUND] ,則可以點擊 Finish 完成,當中的路徑可能與圖片不同。 Finish 後就會出現登入畫面 用戶名 admin, 密碼 admin 即可登入(第一次登作後會強迫修改密碼) 等待 5~10 分鐘後,即會有圖形出現。 8. 安裝 NDOUtils 安裝 NDOUtils,NDOUtils 用來將 Nagios 的配置信息和各 event產生的數據存入資料庫,以實現這些數據的快速檢索和處理。http://packages.sw.be/ndoutils/ndoutils-1.4-0.beta7.3.el5.rf.x86_64.rpm
# yum install postgresql-libs-8.1.22-1.el5_5.1.x86_64 postgresql-8.1.22 perl-DBD-MySQL.x86_64
# rpm -ivh ndoutils-1.4-0.beta7.3.el5.rf.x86_64.rpm
配置 mysql for ndo
mysql> create database ndodb;
mysql> grant all privileges on ndodb.* to ndouser@'192.168.100.%' IDENTIFIED BY '123456';
mysql> grant all privileges on ndodb.* to ndouser@'192.168.100.%' IDENTIFIED BY '123456';
mysql> flush privileges;
載入 ndodb
root@h { /usr/share/ndoutils  }$ ./installdb -u ndouser -p 123456 -h 192.168.100.1 -d ndodb
編輯以下配置檔
/etc/nagios/nagios.cfg
/etc/nagios/ndo2db.cfg
/etc/nagios/ndomod.cfg
## /etc/nagios/nagios.cfg
broker_module=/usr/libexec/ndomod-3x.o config_file=/etc/nagios/ndomod.cfg
## /etc/nagios/ndo2db.cfg
socket_type=unix
socket_name=/var/nagios/rw/ndo.sock
db_servertype=mysql
db_host=192.168.100.1
db_name=cacti
db_user=cacti
db_pass=123456
db_prefix=npc_
## /etc/nagios/ndomod.cfg
output_type=unixsocket
output=/var/nagios/rw/ndo.sock
Restart nagios and cacti. 9. 安裝 NTop
# yum install ntop
設定 ntop admin 密碼
# ntop -A

Wed Nov  9 18:17:35 2011  NOTE: Interface merge enabled by default
Wed Nov  9 18:17:35 2011  Initializing gdbm databases

ntop startup - waiting for user response!

Please enter the password for the admin user: 
Please enter the password again: 
Wed Nov  9 18:17:41 2011  Admin user password has been set
10. Cacti 整合 NPC, Nagios 依據你的 npc 版本,下載 http://mirror.cactiusers.org/downloads/plugins/cacti-plugin-0.8.7g-PA-v2.8.tar.gz
# {/} tar xvfz cacti-plugin-0.8.7g-PA-v2.8.tar.gz 
# {/} cd cacti-plugin-arch/
# {/cacti-plugin-arch/} cd files-0.8.7g/
# {/cacti-plugin-arch/files-0.8.7g/} cp -rp * /usr/share/cacti/
# {/cacti-plugin-arch/files-0.8.7g/} cd /usr/share/cacti/
# {/usr/share/cacti/} patch -p1 -N < ~/cacti/cacti-plugin-arch/cacti-plugin-0.8.7g-PA-v2.8.diff
Modify /usr/share/cacti/include/global.php file
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "192.168.253.6";
$database_username = "cacti";
$database_password = "e29e776dbdd150c30c55171cb3bcd452";
$database_port = "3306";
$url_path = "/"; ## depend on your apache config
回到 Browser 介面 http://service_url/cacti 选择左下的 User Managenment 之后点击 admin 在其中最后一项打钩,并保存 ... 好了,现在 cacti 就支持其他插件功能了,下面把 ntop 和 nagios 加进去就可以了 http://docs.cacti.net/_media/plugin:ntop-v0.2-1.tgz 首先去下载cacti的ntop插件,而后解压至cacti的插件目录: # tar zxvf ntop-0.1.tar.gz -C /var/www/html/cacti/plugins/ 接着配置cacti的主配置文件,启用此插件: # vim /var/www/html/cacti/include/config.php 添加如下内容: $plugins[] = 'ntop'; For NPC https://api.opensuse.org/public/source/server:monitoring/cacti-npc/npc-2.0.4.tar.gz
root@img2 { ~/cacti/npc  }$ tar xvfz npc-2.0.4.tar.gz 
root@img2 { ~/cacti/npc  }$ cd ../
root@img2 { ~/cacti  }$ cp -rp npc /usr/share/cacti/plugins

接下来到cacti的控制台中"settings"中配置此插件,将其指向实际的ntop服务器所在的URL;然后再到cacti控制台的"user Management"中的admin用户中启用此插件即可。