系统:Ubuntu
Cacti和Nagios是现在使用比较多的网络监控软件了,对于这两款监控软件的区别,应该说是侧重点的不同。
Cacti比较着重于直观数据的监控,易于生成图形,用来监控网络流量、cpu使用率、硬盘使用率等可以说很在合适不过。
而Nagios则比较注重于主机和服务的监控,并且有很强大的发送报警信息的功能。
把两者结合起来,既可以使报警机制高效及时,又可以很容易的查看各项数据的情况。
之前主要是用FreeBSD来架构网络监控程序,最早使用的是MRTG,然后开始用RRDTOOL,后来发现了Cacti,爱不释手啊。
一开始要求用Nagios来进行主机和服务监控,但是后来觉得Nagios设置起来实在不方便,所以改用了Cacti,并且使用Plugin来构建报警机制,但是效果不甚理想。
于是就在找一个比较合适的解决办法,前一段在网上看到Nagios For Cacti的Plugin终于有了更新,决定试一下看看。
一开始是使用FreeBSD做系统,但是由于Nagios 3.0的安装一直出问题,而正好最近在使用Ubuntu,所以改到Ubuntu上试试看。
1. 安装必须的软件
用root登录后(sudo passwd root)
apt-get update
apt-get install apache2 mysql-server php5 php5-cli php5-mysql php5-snmp libapache2-mod-php5 snmp rrdtool
具体来说安装的就是apache,mysql,php5,snmp和rrdtool以及一些必须的mod或extension。
vim /var/www/html/index.php在其中添加以下内容:
<?php
phpinfo();
?>
保存退出
用web浏览器访问,如果出现以下画面,则表示http支持动态php.并能与php成功连接.
接着测试与mysql的连接,先给mysql设置个管理员密码
mysqladmin -uroot password '123456' #密码设置为123456
编辑刚才的web页面
vim /var/www/html/index.php
把里面的内容改为
<?php
$link=mysql_connect("localhost","root","123456");
if(!$link) echo "FAILD!";
else echo "OK!";
?>
刷新刚才的web 浏览器页面,如果出现OK!字样,则表示成功连接
下面就开始Cacti的安装了。
2. 安装Cacti
mkdir ~/cacti 我习惯把下载的东西都放在home下面
cd ~/cacti
wget http://www.cacti.net/downloads/cacti-0.8.7g.tar.gz 下载Cacti的最新版本,现在是0.8.7g
tar xzf cacti-0.8.7g.tar.gz 解压缩
mv ~/cacti/cacti-0.8.7g /usr/share/cacti 将cacti移动到/usr/share下面
cd /usr/share/cacti
chown -R root:root rra/ log/
编辑/etc/crontab并添加下面一行
*/5 * * * * root php /usr/share/cacti/poller.php > /dev/null 2>&1
然后编辑/etc/apache2/sites-avaliable/default并添加一下内容
Alias /cacti/ "/usr/share/cacti/"
<Directory "/usr/share/cacti/">
AllowOverride None
Order Allow,Deny
Allow from all
</Directory>
重启apache
/etc/init.d/apache2 restart
接下来是mysql的配置
create一个用户cacti
mysqladmin -u root -p create cacti
导入sql文件
mysql -u root -p cacti <cacti.sql
进入mysql设置权限
mysql -u root -p
mysql>GRANT ALL ON cacti.* To cacti@localhost IDENTIFIED BY 'cacti';
mysql>flush privileges;
mysql>exit;
最后更改一下cacti的config文件
vi /usr/share/cacti/include/config.php
更改如下内容
$database_username = "cacti";
$database_password = "cacti";
到这里,cacti的安装在server上完成了
接下来在浏览器中输入
http://yourserver/cacti/
会见到cacti的安装界面,进行new install,基本上都没有什么需要修改的,稍微看一下,next就好了。
初次登录,用户名和密码都是admin,会提示修改密码。
3. 安装Cacti Plugins Arch
cd ~/
wget http://cactiusers.org/downloads/cacti-plugin-arch.tar.gz 下载cacti plugin arch,现在的版本是2.8
tar xzf cacti-plugin-arch.tar.gz
plugin arch的安装有两种方法,第一种是运行patch文件修改现有的内容:
cd /usr/share/cacti/
patch -p1 -N < cacti-plugin-arch/cacti-plugin-0.8.7g-PA-v2.8.diff
rm -rf cacti-plugin-arch
第二种是使用已经patch好的文件覆盖源文件:
cd cacti-plugin-arch/files-0.8.7d/
cp –rf * /usr/local/wwwroot/cacti 复制相关文件到 cacti下
接下来:
cd ~/cacti-plugin-arch/
mysql -u root -p cacti<pa.sql 这个文件不导入的话,将来会看不到plugin management这个页面,对其他的影响不大,但是我们要用npc(nagios plugin),一定要用这个。
接下来编辑一下文件以符合自己的设置
vi /usr/share/cacti/include/global.php
修改mysql的用户密码
$database_username = "cacti";
$database_password = "cacti";
$config['url_path'] = '/cacti/';
#vi /usr/share/cacti/include/config.php
$plugins = array();
$url_path = "/cacti/";
这样,plugin arch的安装完成了,下面就是plugin的安装了。
4. 安装NPC,Settings和Thold
这一部分相对来说比较简单。
首先就是下载这些plugin
cd /usr/share/cacti/plugins
wget http://cactiusers.org/downloads/settings.tar.gz
wget http://cactiusers.org/downloads/thold.tar.gz
wget http://www.constructaegis.com/downloads/npc-2.0.4.tar.gz
然后分别解压
tar xzf settings.tar.gz
tar xzf thold.tar.gz
tar xzf npc-2.0.4.tar.gz
接下来在global.php中加载settings和thold
vi /usr/share/cacti/include/global.php
添加下面内容
$plugins[] = 'settings';
$plugins[] = 'thold';
回到网页中,记得要去user managerment里面,给予相应用户的permissions,具体做法是,点页面左边的菜单User Managerment,然后在右边点击某个用户(如admin),然后在Realm Permissions中选中相应的选项即可。
而NPC,直接进入网页,点击左边的Plugin Management,然后在右边的Uninstalled中install NPC,在Installed中enable NPC,就可以了。
这里要说一下Thold这个plugin,这个plugin的作用就是对某项数据设定一个范围,超过这个范围就会发alarm,比如说我监控cpu,设定cpu使用率大于90%就发mail给我。
6. 安装NDoutils
NDoutils算是Nagios的mysql mod吧,可以把Nagios的情况同步到mysql里面,这也是整个安装步骤中最关键的。因为只有同步到mysql里,才可以让NPC得到相关的信息。
一开始还是先安装一个package,因为NDoutils要用到mysql的一些源文件。
apt-get install libmysql++-dev
然后下载NDoutils并编译
mkdir ~/ndoutils
cd ~/ndoutils
wget http:/ndoutils-1.4b7.tar.gz 今天我无法连到sourceforge,没法给出具体的地址,可以到这里去找,注意一定要1.4b7的。
tar xzf ndoutils-1.4b7.tar.gz
cd ~/ndoutils/ndoutils-1.4b7
./configure
make
接下来安装,不是用make install
cd ~/ndoutils/ndoutils-1.4b7/src
cp ndomod-3x.o ndo2db-3x log2ndo file2sock /usr/local/nagios/bin
cd ~/ndoutils/ndoutils-1.4b7/config
cp ndomod.cfg ndo2db.cfg /usr/local/nagios/etc/
修改一下相关的配置
vi /usr/local/nagios/etc/ndo2db.cfg
更改以下内容
db_name = cacti
db_prefix = npc_
db_user = cacti
db_pass = cacti
debug_level = 1
这里是用Cacti在mysql中使用的用户和密码以及数据库,因为我们这个npc的plugin是用在cacti中的嘛。
改一下Nagios的config文件,使NDoutils可以在Nagios中加载
vi /usr/local/nagios/etc/nagios.cfg
更改
check_external_commands = 1
command_check_interval = -1
event_broker_options = -1
添加
broker_module = /usr/local/nagios/bin/ndomod-3x.o config_file=/usr/local/nagios/etc/ndomod.cfg
然后分别启动NDoutils和Nagios
/usr/local/nagios/bin/ndo2db-3x -C /usr/local/nagios/etc/ndo2db.cfg
/etc/init.d/nagios start
最后的工作是在Web里面配置一下NPC
在Cacti中,点击左边的Settings,点到NPC的tab,勾上Remote Commands,Nagios Command File Path中输入/usr/local/nagios/var/rw/nagios.cmd,Nagios URL中输入http://yourserver/nagios/,然后Save一下。