您的位置:首页 > 移动开发 > IOS开发

cacti&nagios安装和整合详解(亲身部署加排错版)

2011-06-15 17:02 543 查看
. 系统环境

Red Hat Enterprise Linux AS release 4 (Nahant Update 8)
Kernel \r on an \m(如果版本不同,有的包不同!)
. 先部署LAMP平台,为cacti/nagios做展示;
apache:httpd-2.2.11.tar.gz
安装编译:

# tar zxf httpd-2.2.11.tar.gz
# cd httpd-2.2.11
#./configure --prefix=/usr/local/apache --enable-so --enable-rewrite --enable-mods-shared=most//使支持dso模式,使支持URL重写,告诉编译器将所有标准模块都编译为DSO模块
# make && make install

修改主配置文件:

vim /usr/local/apache/conf/httpd.conf
DirectoryIndex index.php index.html //修改默认启动页

DocumentRoot "/usr/local/apache/htdocs/cacti" //指定主目录
ServerName 192.168.175.100:80
查找:AddType application/x-compress .Z
在其下加入:
AddType application/x-tar .tgz
AddType application/x-httpd-php .php

AddType application/x-httpd-php .php .php5

AddType image/x-icon .ico

保存退出后,启动服务看是否正确显示页面!

mkdir /usr/local/apache/htdocs/cacti
/usr/local/apache/bin/apachectl start
[root@localhost ~]# curl http://192.168.175.100 <html><body><h1>It works!</h1></body></html>
启动正常

mysql:我原来用的是源码安装,但由于后面安装udoutils无法关联上mysql且可能是缺包缺库的问题,故改用rpm包(用于rrd文件的存储)
安装需包:

perl-DBD-MySQL-2.9004-3.1.i386.rpm
perl-DBI-1.40-9.i386.rpm
libdbi-dbd-mysql-0.6.5-10.RHEL4.1.i386.rpm
mysql-4.1.22-2.el4.i386.rpm
mysql-bench-4.1.22-2.el4.i386.rpm
mysqlclient10-3.23.58-4.RHEL4.1.i386.rpm
mysqlclient10-devel-3.23.58-4.RHEL4.1.i386.rpm
mysql-devel-4.1.22-2.el4.i386.rpm
mysql-server-4.1.22-2.el4.i386.rpm
php-mysql-4.3.9-3.26.i386.rpm
rpm -ivh libdbi-dbd-mysql-0.6.5-10.RHEL4.1.i386.rpm mysql-4.1.22-2.el4.i386.rpm mysql-bench-4.1.22-2.el4.i386.rpm mysqlclient10-3.23.58-4.RHEL4.1.i386.rpm mysqlclient10-devel-3.23.58-4.RHEL4.1.i386.rpm mysql-devel-4.1.22-2.el4.i386.rpm mysql-server-4.1.22-2.el4.i386.rpm perl-DBD-MySQL-2.9004-3.1.i386.rpm perl-DBI-1.40-9.i386.rpm --force

配置启动:

mysql_install_db
service mysqld start

查看进程是否启动:

# ps -ef | grep mysqld
# mysql -uroot -p

php:php-5.2.10.tar.gz
安装编译:
先装一些支持cacti的和php相关的包:(zlib-1.2.3.tar.gz,libpng-1.2.16.tar.gz,freetype-2.3.4.tar.gz,jpegsrc.v6b.tar.gz,fontconfig-2.4.2.tar.gz,gd-2.0.35.tar.gz,libxml2-2.6.32.tar.gz,php-5.2.10.tar.bz2)
安装zlib(zlib-1.2.3.tar.gz)

tar zxf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure --prefix=/usr/local/zlib
make && make install

安装libpng(libpng-1.2.16.tar.gz)
这里的makefile不是用./configure生成,而是直接从scripts/里拷一个

tar zxf libpng-1.2.16.tar.gz
cd libpng-1.2.16
cd scripts/
mv makefile.linux ../makefile
cd ..
make && make install

安装freetype(freetype-2.3.4.tar.gz)

tar zxf freetype-2.3.4.tar.gz
cd freetype-2.3.4
./configure --prefix=/usr/local/freetype
make && make install

安装jpeg(jpegsrc.v6b.tar.gz)
这里configure一定要带--enable-shared参数,不然,不会生成共享库

tar zxf jpegsrc.v6b.tar.gz
cd jpeg-6b/
mkdir /usr/local/libjpeg
mkdir /usr/local/libjpeg/include
mkdir /usr/local/libjpeg/bin
mkdir /usr/local/libjpeg/lib
mkdir /usr/local/libjpeg/man
mkdir /usr/local/libjpeg/man/man1
./configure --prefix=/usr/local/libjpeg --enable-shared --enable-static
make && make install

安装Fontconfig(fontconfig-2.4.2.tar.gz)

tar zxf fontconfig-2.4.2.tar.gz
cd fontconfig-2.4.2
./configure --with-freetype-config=/usr/local/freetype
make && make insall//这一步报错了,我就那么过去了,后面能起来,但不知道有无影响!
解决方法: /configure --with-freetype-config=/usr/local/freetype/bin/freetype-config
应该用freetype下的可执行程序来编译!

安装GD(gd-2.0.34.tar.gz)

tar -zxvf gd-2.0.34.tar.gz
cd gd-2.0.34
./configure --prefix=/usr/local/libgd --with-png --with-freetype=/usr/local/freetype --with-jpeg=/usr/local/libjpeg
make && make install

编辑/etc/ld.so.conf文件,添加以下几行到此文件中:

# vi /etc/ld.so.conf
 /usr/local/zlib/lib
 /usr/local/freetype/lib
 /usr/local/libjpeg/lib
 /usr/local/libgd/lib
# ldconfig -v //并执行ldconfig命令,使用动态装入器装载找到共享库

安装libxml(libxml2-2.6.32.tar.gz)

# tar -zxvf libxml2-2.6.32.tar.gz
# cd libxml2-2.6.32
# ./configure --prefix=/usr/local/libxml2
# make
# make install

安装net-snmp(net-snmp-5.2.4.tar.gz)

# tar -zxvf net-snmp-5.2.4.tar.gz
# cd net-snmp-5.2.4
# ./configure --prefix=/usr/local/net-snmp --enable-developer
# make
# make install
# ln -s /usr/local/net-snmp/bin/* /usr/local/bin/
# cp EXAMPLE.conf /usr/local/net-snmp/share/snmp/snmpd.conf
# vi /usr/local/net-snmp/share/snmp/snmpd.conf //修改snmpd.conf(修改COMMUNITY、允许抓取snmp数据的主机、抓取数据范围等)。
以下是我的
############snmpd.conf配置#################
sec.name source community
com2sec local localhost public
##########################################
被监控端指向监控端IP。
# sec.name source community

com2sec mynetwork 192.168.8.222 public

##########################################

# /usr/local/net-snmp/sbin/snmpd //启动SNMP服务
弄好之后,可以先用命令测试下配置是否有误:
#snmpwalk -v 2c -c public 192.168.8.222
如抓到包则成功;如显示Timeout等字样,则失败,可以用cat /var/log/snmpd.log查看

安装php(php-5.2.10.tar.bz2)

# tar jxf php-5.2.10.tar.bz2
# cd php-5.2.10
# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/var/lib/mysql --with-gd=/usr/local/libgd --enable-gd-native-ttf --with-ttf --enable-gd-jis-conv --with-freetype-dir=/usr/local/freetype --with-jpeg-dir=/usr/local/libjpeg --with-png-dir=/usr --with-zlib-dir=/usr/local/zlib --enable-xml --enable-mbstring --enable-sockets --with-snmp --with-pdo-mysql --enable-short-tags
# make
# make install
# cp php.ini-recommended /usr/local/php/lib/php.ini //复制php配置文件
# ln -s /usr/local/php/bin/* /usr/local/bin/ //建立符合链接
# /usr/local/apache/bin/apachectl restart //重新启动apache服务

三.安装cacti.nagios及相关包
安装RRDTool(rrdtool-1.2.23.tar.gz)
由于rrdtool-1.2.23需要一些库文件支持,故需先安装配置支持的环境,然后编译安装。直接运行以下bash脚本就可以完成安装:
注 意:将cgilib-0.5.tar.gz、zlib-1.2.3.tar.gz、libpng-1.2.16.tar.gz、freetype- 2.3.5.tar.gz、libart_lgpl-2.3.17.tar.gz、rrdtool-1.2.23.tar.gz放到/usr/local /_temp/rrdtool目录下,将脚本保存为/usr/local/_temp/rrdtool/rrdtoolinstall.sh,并给执行权 限chmod u+x /usr/local/_temp/rrdtool/rrdtoolinstall.sh。
以下链接是我重新打好的一个rrdtool-1.2.23的安装包,里面包括了所有用到的库文件和安装脚本,下载解压后执行脚本sh rrdinstall.sh即可以完成RRDTool的安装。

#!/bin/sh
BUILD_DIR=`pwd`
INSTALL_DIR=/usr/local/rrdtool
########install cgilib-0.5#####################3#####
cd $BUILD_DIR
tar zxf cgilib-0.5.tar.gz
cd cgilib-0.5
make CC=gcc CFLAGS="-O3 -fPIC -I."
mkdir -p $BUILD_DIR/lb/include
cp *.h $BUILD_DIR/lb/include
mkdir -p $BUILD_DIR/lb/lib
cp libcgi* $BUILD_DIR/lb/lib
########install zlib-1.2.3#####################3#####
cd $BUILD_DIR
tar zxf zlib-1.2.3.tar.gz
cd zlib-1.2.3
env CFLAGS="-O3 -fPIC" ./configure --prefix=$BUILD_DIR/lb
make
make install

########install libpng-1.2.16#####################3#####
cd $BUILD_DIR
tar zxvf libpng-1.2.16.tar.gz
cd libpng-1.2.16
env CPPFLAGS="-I$BUILD_DIR/lb/include" LDFLAGS="-L$BUILD_DIR/lb/lib" CFLAGS="-O3 -fPIC" \
./configure --disable-shared --prefix=$BUILD_DIR/lb
make
make install
########install freetype-2.3.5#####################3#####
cd $BUILD_DIR
tar zxvf freetype-2.3.5.tar.gz
cd freetype-2.3.5
env CPPFLAGS="-I$BUILD_DIR/lb/include" LDFLAGS="-L$BUILD_DIR/lb/lib" CFLAGS="-O3 -fPIC" \
./configure --disable-shared --prefix=$BUILD_DIR/lb
make
make install
########install libart_lgpl-2.3.17#####################3#####
cd $BUILD_DIR
tar zxvf libart_lgpl-2.3.17.tar.gz
cd libart_lgpl-2.3.17
env CFLAGS="-O3 -fPIC" ./configure --disable-shared --prefix=$BUILD_DIR/lb
make
make install
########install rrdtool-1.2.23#####################3########
cd $BUILD_DIR
tar zxf rrdtool-1.2.23.tar.gz
cd rrdtool-1.2.23
./configure --prefix=$INSTALL_DIR --disable-python --disable-tcl && make && make install

######################################################

# ln -s /usr/local/rrdtool/bin/* /usr/local/bin/ //完成后建立符号连接
# rrdtool -v //查看rrdtool版本,测试rrdtool是否安装成功

安装cacti(cacti-0.8.7e.tar.gz)

# tar -zxvf cacti-0.8.7e.tar.gz
# mv cacti-0.8.7e /usr/local/apache/htdocs/cacti
# cd /usr/local/apache/htdocs/cacti/cacti-0.8.7e
# mv * ../

# vi /usr/local/apache/htdocs/cacti/include/config.php
config.php文件中需要修改的内容

$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "zs";
$database_username = "cacti";
$database_password = "cacti";
$database_port = "3306";

# vi /usr/local/apache/htdocs/cacti/include/global.php

global.php文件中修改的内容
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "zs";
$database_username = "cacti";
$database_password = "cacti";
$database_port = "3306";

# useradd cacti //添加cacti用户
# chown -R cacti /usr/local/apache/htdocs/cacti/rra
# chgrp -R cacti /usr/local/apache/htdocs/cacti

创建cacti数据库:

# mysql -uroot -p //登录mysql 配置cacti数据库
mysql> create database cacti;
mysql> grant all on cacti.* to cacti@localhost identified by "cacti";
mysql>exit
# mysql -uroot -p -D cacti –h localhost < /usr/local/apache/htdocs/cacti/cacti.sql //导入cacti数据库初始化脚本

# su cacti //为cacti用户添加cron任务
# crontab -e //编辑定时任务
*/5 * * * * /usr/local/bin/php /usr/local/apache/htdocs/cacti/poller.php > /dev/null 2>&1
# /usr/local/bin/php /usr/local/apache/htdocs/cacti/poller.php

完成cacti安装:
IE输入http://zs









cacti安装成功!
安装 (nagios-3.2.3.tar.gz)及其插件(nagios-plugins-1.4.15.tar.gz)

useradd nagios
mkdir /usr/local/nagios
chown -R nagios.nagios /usr/local/nagios
tar zxf nagios-3.2.3.tar.gz
cd nagios-3.2.3
./configure --prefix=/usr/local/nagios --with-gd-lib=/usr/local/lib --with-gd-inc=/usr/local/include
make all
make install //来安装主程序,CGI和HTML文件
make install-init //在/etc/rc.d/init.d安装启动脚本
make install-config //来安装示例配置文件
make install-commandmode //来配置目录权限
cd ..
tar zxf nagios-plugins-1.4.15.tar.gz
cd nagios-plugins-1.4.15
./configure --with-nagios-user=nagios --with-nagios-group=nagios --enable-redhat-pthread-workaround --prefix=/usr/local/nagios
make && make install

设置nagios登录帐号密码:
vim /usr/local/apache/conf/httpd.conf

ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin
<Directory "/usr/local/nagios/sbin">
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd
//用于此目录访问身份验证的文件
Require valid-user
</Directory>
Alias /nagios /usr/local/nagios/share
<Directory "/usr/local/nagios/share">
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd
//用于此目录访问身份验证的文件
Require valid-user
</Directory>

修改完毕后重启apache
apachectl restart
增加验证用户:
也就是通过web访问nagios的时候,必须要用这个用户登陆.在这里我们增加用户test:密码为123456

/usr/local/apache/bin/htpasswd -mbc /usr/local/nagios/etc/htpasswd test 123456
查看认证文件的内容
less /usr/local/nagios/etc/htpasswd
test:gQTtXNdyB21jw 前半部分是用户名test,后面是加密后的密码

配置nagios
修改nagios的主配置文件nagios.cfg

cd /usr/local/nagios/etc(不要新建,用原来的改,不然监控主机会一直DOWN)
cp nagios.cfg nagios.cfg.bak
vim nagios.cfg
注释行#cfg_file=/opt/nagios/etc/objects/localhost.cfg
cfg_file=/usr/local/nagios/etc/objects/contactgroups.cfg //联系组配置文件路径
cfg_file=/usr/local/nagios/etc/objects/hostgroups.cfg //主机组配置文件路径
cfg_file=/usr/local/nagios/etc/objects/hosts.cfg //主机配置文件路径
cfg_file=/usr/local/nagios/etc/objects/services.cfg //服务配置文件路径
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg //联系人配置文件路径
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg //监视时段配置文件路径
cfg_file=/usr/local/nagios/etc/objects/templates.cfg//模板配置文件路径
cfg_file=/usr/local/nagios/etc/objects/commands.cfg //命令配置文件路径
注:有些文件不存在,手动创建即可。
将check_external_commands=0改为check_external_commands=1
\\这行的作用是允许在web界面下执行重启nagios、停止主机/服务检查等操作
将command_check_interval的值从默认的1改成command_check_interval=10s
\\根据自己的情况定这个命令检查时间间隔,不要太长也不要太短

修改CGI脚本控制文件cgi.cfg

cp cgi.cfg cgi.cfg.bak
vim cgi.cfg
use_authentication=1
default_user_name=test
authorized_for_system_information=nagiosadmin,test
authorized_for_configuration_information=nagiosadmin,test
authorized_for_system_commands=nagiosadmin,test
authorized_for_all_services=nagiosadmin,test
authorized_for_all_hosts=nagiosadmin,test
authorized_for_all_service_commands=nagiosadmin,test
authorized_for_all_host_commands=nagiosadmin,test

修改监视时段配置文件timeperiods.cfg

cp timeperiods.cfg timeperiods.cfg.bak
> timeperiods.cfg
vim timeperiods.cfg
define timeperiod{
timeperiod_name 24x7 //时间段的名称,这个地方不要有空格
alias 24 Hours A Day,7Days A Week
sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00
saturday 00:00-24:00
}

定义了一个监控时间段,它的名称是24x7,监控的时间是每天全天24小时
定义联系人,创建配置文件contacts.cfg

cp contacts.cfg contacts.cfg.bak
> contacts.cfg
vim contacts.cfg
define contact{
contact_name test //联系人的名称,这个地方不要有空格
alias sys admin
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
email zs@test.com
pager 1338757xxxx
address1 xxxxx.xyyy@icq.com
address2 555-555-5555
}

创建了一个名为test的联系人,下面列出其中重要的几个选项做说明

service_notification_period 24x7
服务出了状况通知的时间段,这个时间段就是上面在timeperiods.cfg中定义的.
host_notification_period 24x7
主机出了状况通知的时间段, 这个时间段就是上面在timeperiods.cfg中定义的
service_notification_options w,u,c,r
当服务出现w—报警(warning),u—未知(unkown),c—严重(critical),或者r—从异常情况恢复正常,在这四种情况下通知联系人.
host_notification_options d,u,r
当主机出现d­­­­—当机(down),u—返回不可达(unreachable),r—从异常情况恢复正常,在这3种情况下通知联系人
service_notification_commands notify-service-by-email
服务出问题通知采用的命令notify-by-email,这个命令是在commands.cfg中定义的,作用是给联系人发邮件.至于commands.cfg之后将专门介绍
host_notification_commands notify-host-by-email
同上,主机出问题时采用的也是发邮件的方式通知联系人
email zs@test.com
很明显,联系的人email地址
pager 1338757xxxx
联系人的手机,如果支持短信的通知的话,这个就很有用了.
alias是联系人别名,address是地址 意义不大.
按照上面的方式简单的复制修改就可以创建多个联系人了.
将多个联系人组成一个联系人组,创建文件contactgroups.cfg

touch contactgroups.cfg
vim contactgroups.cfg
define contactgroup{
contactgroup_name sagroup //联系人组的名称,同样不能空格
alias System Administrators //别名
members test //组的成员,来自于上面定义的contacts.cfg,如果有多个联系人则以逗号相隔
}

定义被监控主机,创建文件hosts.cfg

touch hosts.cfg
vim hosts.cfg
define host{
host_name zs
alias zs
address 192.168.175.100
check_command check-host-alive
max_check_attempts 5
check_period 24x7
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options d,u,r
}

与联系人可以组成联系人组一样,多个主机也可以组成主机组.创建文件hostgrops.cfg

touch hostgroups.cfg
vim hostgroups.cfg
define hostgroup{
hostgroup_name sa-servers //主机组名称
alias sa Servers //别名
members zs
//组的成员主机,多个主机以逗号相隔,必须是上面hosts.cfg中定义的
}

定义监控的项目,也叫服务,创建services.cfg

touch servicescfg
vim servicescfg
#service definition
define service{
host_name zs
service_description check-host-alive
check_command check-host-alive
max_check_attempts 5
normal_check_interval 3
retry_check_interval 2
check_period 24x7
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
contact_groups sagroup
}

在运行nagios之前首先做测试

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Total Warnings: 0
Total Errors: 0
出现以上字样说明配置成功!

启动nagios:
service nagios start
在IE输入http://zs/nagios





安装 (ndoutils-1.4b7)

tar zxf ndoutils-1.4b7.tar.gz
cd ndoutils-1.4b7
./configure --prefix=/usr/local/nagios --enable-mysql --disable-pgsql LDFLAGS=-L/usr/lib/mysql --with-mysql-inc=/usr/include/mysql --with-mysql-lib=/usr/lib/mysql
make
cd src
cp ndomod-3x.o ndo2db-3x log2ndo file2sock /usr/local/nagios/bin/
chown nagios.nagios /usr/local/nagios/bin/*
cd ../config
cp ndo* /usr/local/nagios/etc
chown nagios.nagios /usr/local/nagios/etc/*

vim /usr/local/nagios/etc/ndo2db.cfg

[align=left]db_name=cacti //数据库名,跟cacti公用一个库[/align]
[align=left]db_user=cacti[/align]
[align=left]db_pass=cacti[/align]

mysql -uroot -p -D cacti -h localhost < /root/cn/ndoutils-1.4b7/db/mysql.sql(59行)
vim /usr/local/nagios/etc/nagios.cfg
确定:event_broker_options=-1
broker_module=/usr/local/nagios/bin/ndomod-3x.o config_file=/usr/local/nagios/etc/ndomod.cfg
/usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg //启动ndo2db
service nagios restart
tail -20 /usr/local/nagios/var/nagios.log





出现上面的则安装成功!
安装 (cacti-plugin-arch.zip)

[align=left]#unzip cacti-plugin-0.8.7e-PA-v2.6.zip[/align]
[align=left]#cd cacti-plugin-arch[/align]
[align=left]# cp –R ../cacti-plugin-arch/* /usr/local/apache/htdocs/cacti/[/align]
#cd /usr/local/apache/htdocs/cacti/
[align=left]#mysql -uroot -p -D cacti -h localhost < /usr/local/apache/htdocs/cacti/pa.sql[/align]
[align=left]#patch -p1 -N < cacti-plugin-0.8.7e-PA-v2.6.diff //打补丁以后,web界面图片会不显示[/align]
[align=left]IE打开cacti的web界面[/align]
选择Console—User Management—admin在最下面选择Plugin Management勾选,然后Save.





安装(npc-2.0.4.tar.gz)

[align=left]#tar –zxvf npc-2.0.4.tar.gz[/align]
[align=left]#mv npc /usr/local/apache/htdocs/cacti/plugins[/align]
[align=left]#vim /usr/local/apache/htdocs/cacti/include/config.php[/align]
添加$plugins[]='npc';
然后打开cacati界面点击Console -> Plugin Management





然后点击install 和Enable,点击以后,这两个会变成灰色的,无法在点击

返回点击Console -> Settings->NPC来修改几个参数





点开npc标签,如部署成功,则显示如下图:





如果这步没有数据,那及可能是编译PHP的时候没有加上--with-pdo-mysql造成的,可以重新编译一下!

注:本文仅构造了框架,没有配置具体的监控对象!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: