免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 18949 | 回复: 18

(原创)在Ubuntu上整合Cacti与Nagios进行网络监控 [复制链接]

论坛徽章:
0
发表于 2008-06-27 11:17 |显示全部楼层
Cacti和Nagios是现在使用比较多的网络监控软件了,对于这两款监控软件的区别,应该说是侧重点的不同。
Cacti比较着重于直观数据的监控,易于生成图形,用来监控网络流量、cpu使用率、硬盘使用率等可以说很在合适不过。
而Nagios则比较注重于主机和服务的监控,并且有很强大的发送报警信息的功能。
把两者结合起来,既可以使报警机制高效及时,又可以很容易的查看各项数据的情况。
由于工作的关系,我在前一家公司主要是用FreeBSD来架构网络监控程序,最早使用的是MRTG,然后开始用RRDTOOL,后来发现了Cacti,爱不释手啊。
而现在的公司,一开始是老板要求用Nagios来进行主机和服务监控,但是后来觉得Nagios设置起来实在不方便,所以改用了Cacti,并且使用Plugin来构建报警机制,但是效果不甚理想。
于是就在找一个比较合适的解决办法,前一段在网上看到Nagios For Cacti的Plugin终于有了更新,决定试一下看看。
一开始是使用FreeBSD做系统,但是由于Nagios 3.0的安装一直出问题,而正好最近在使用Ubuntu,所以改到Ubuntu上试试看,现在正在使用中。
由于之前开始做的时候找了很多资料,但是还没有看到国内的网站上有,所以贴出来和大家交流一下。
安装过程一共分为六个部分


1. 安装必须的软件
2. 安装Cacti
3. 安装Cacti Plugins Arch
4. 安装NPC,Settings和Thold
5. 安装Nagios
6. 安装NDoutils


[ 本帖最后由 joechang 于 2008-7-1 13:54 编辑 ]

论坛徽章:
0
发表于 2008-06-27 11:18 |显示全部楼层
1. 安装必须的软件

先说一下我的安装环境。
我使用的公司空出来的Dell PowerEdge 1750服务器,Ubuntu的版本是Ubuntu Server 8.0.4。

用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。
安装完成后,下面就开始Cacti的安装了。


[ 本帖最后由 joechang 于 2008-6-27 11:33 编辑 ]

论坛徽章:
0
发表于 2008-06-27 11:19 |显示全部楼层
2. 安装Cacti

mkdir ~/cacti 我习惯把下载的东西都放在home下面
cd ~/cacti
wget http://www.cacti.net/downloads/cacti-0.8.7b.tar.gz 下载Cacti的最新版本,现在是0.8.7b
tar xzf cacti-0.8.7b.tar.gz 解压缩
mv ~/cacti/cacti-0.8.7b /usr/share/cacti 将cacti移动到/usr/share下面

cd /usr/share/cacti
chown -R root:wwwdata rra/ log/ 官方的写法是wwwdata:wwwdata,这里我改成了root:wwwdata,原因一会儿再说

编辑/etc/crontab并添加下面一行
*/5 * * * * root php /usr/share/cacti/poller.php > /dev/null 2>&1
官方的并不是用root用户运行,但是在我试的几次里,用其他用户的话,以后在用ICMP Ping对host进行downed device detection的时候,会出现下面的错误
Warning: socket_create() [function.socket-create]: Unable to create socket [1]: Operation not permitted in /usr/share/cacti/lib/ping.php on line 158
Warning: socket_set_block() expects parameter 1 to be resource, boolean given in /usr/share/cacti/lib/ping.php on line 160
查询后发现是php要以root的权限运行才可以,php不熟,所以我索性把整个poller都用root运行,这也是为什么上面chown改成root:wwwdata的原因。

然后编辑/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,会提示修改密码。


[ 本帖最后由 joechang 于 2008-6-27 12:07 编辑 ]

论坛徽章:
0
发表于 2008-06-27 11:20 |显示全部楼层
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.assembla.com/spaces/n ... c-2.0.0b.166.tar.gz
然后分别解压
tar xzf settings.tar.gz
tar xzf thold.tar.gz
tar.xzf npc-2.0.0b.166.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%或者小于10%就发mail给我。这个对于流量的监控很好用,我主要是用来监控公司网络流量和file server的硬盘空间。


[ 本帖最后由 joechang 于 2008-6-27 13:45 编辑 ]

论坛徽章:
0
发表于 2008-06-27 11:21 |显示全部楼层
5. 安装Nagios

这一部分相对来说比较复杂一点,因为要自己编译程序,但是一旦会了,也是很简单的事情。
一开始先要安装Nagios需要的两个package
apt-get install build-essential libgd2-xpm-dev

添加编辑用户和组
useradd nagios
groupadd nagios
groupadd nagcmd
usermod -G nagcmd nagios
usermod -G nagcmd www-data

下载并编译安装Nagios
mkdir ~/nagios
cd ~/nagios
wget http://osdn.dl.sourceforge.net/s ... nagios-3.0.2.tar.gz

我用的是3.0.2,现在已经有3.0.3了。
tar nagios-3.0.2.tar.gz
cd ~/nagios/nagios-3.0.2
./configure --with-command-group=nagcmd
make all
make install
make install-init
make install-config
make install-commandmode
make install-webconf

然后给nagios一个web的密码
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

重启apache
/etc/init.d/apache2 restart

下面就是做个link,具体有什么用我也不清楚,但是不用不行,有知道的请告诉我。
ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios

然后安装nagios plugins,这个plugins里面主要是有很多用来check host和service的文件
cd ~/nagios
wget http://osdn.dl.sourceforge.net/s ... ugins-1.4.11.tar.gz
tar xzf nagios-plugins-1.4.11.tar.gz
./configure --with-nagios-user=nagios --with-nagios-gourp=nagios
make
make install

最后是关于nagios的mail alarm,我试了本机发送一直都没有成功,所以走了我们公司的smtp服务器,用了一个perl的script来发:

#!/usr/bin/perl

use Getopt::Std;
use Net::SMTP;

#f:mail from   s:subject  t:rcpt to
Getopt::Std::getopts('f:s:t:',\%options);

my $from=$options{f};
my $subject=$options{s};
my $to=$options{t};

while(defined($line=<STDIN>;)){
        $content.=$line;
}

open(LOG,">>/var/log/notify.log");

$smtp=Net::SMTP->new('yourSMTPserverAddress');

        $smtp->mail($from);
        $smtp->to($to);

        $smtp->data();
        $smtp->datasend("To:$to\n");
        $smtp->datasend("Subject:$subject\n");
        $smtp->datasend("Content-Type:text/plain;charset=utf-8\n");
        $smtp->datasend("\n");
        $smtp->datasend("$content\n");
        $smtp->dataend();
        $smtp->quit;

my $date_command="/bin/date";
my $date='$date_command';chop($date);
print LOG "$date:Sent Msg $content to $to\n";
close(LOG);
exit(0);

下面是我用在Nagios里面的
notify-host-by-email的command:

/usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | perl /usr/local/nagios/etc/mail1.pl -f nagios@infor.com -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" -t $CONTACTEMAIL$

关于Naigos的alarm,我研究过还可以用短消息的,但是仅限于移动用户,使用一个linux下的飞信的软件,还可以,我后面会另外发上来。



[ 本帖最后由 joechang 于 2008-6-27 14:15 编辑 ]

论坛徽章:
0
发表于 2008-06-27 11:22 |显示全部楼层
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一下。

OK,大功告成!


[ 本帖最后由 joechang 于 2008-6-27 14:31 编辑 ]

论坛徽章:
0
发表于 2008-06-27 11:48 |显示全部楼层
有些过程没有了????

论坛徽章:
0
发表于 2008-06-27 12:32 |显示全部楼层
LZ什么时候把其余部分添加上啊!
期待!

论坛徽章:
0
发表于 2008-06-27 13:29 |显示全部楼层
rhel5.1上安装总是不成功  哎  都疯了:em11: :em11: :em11:

论坛徽章:
0
发表于 2008-06-27 14:41 |显示全部楼层
关于Nagios用短信的方式发送alarm的方法,现在只有一个采用飞信来发送短信的程序。
可以参考这个网站。
http://www.it-adv.net/
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP