Nagios&Cacti集成
作为系统管理员,我最担心那些重要的在线系统在我不知情的情况下停机或者停止网络服务,而且那些发生故障的服务或主机有时候可能要好长一段时间才知道(这种情况多发生在节假日),只要一到节假日,很多系统管理员就紧张不已。要改变这种被动局面,我在这里推荐网络监控软件Nagios,个人认为它最大的好处是可以发故障报警短信—只要Nagios监控的对象发生故障,系统就会自动发送短信到手机上。Nagios是一个用来监控主机、服务和网络的开放源码软件,很多大的公司或组织都在使用它。
Cacti和Nagios是现在使用比较多的网络监控软件了,对于这两款监控软件的区别,应该说是侧重点的不同。
Cacti比较着重于直观数据的监控,易于生成图形,用来监控网络流量、cpu使用率、硬盘使用率等可以说在合适不过。
而Nagios则比较注重于主机和服务的监控,并且有很强大的发送报警信息的功能。
把两者结合起来,既可以使报警机制高效及时,又可以很容易的查看各项数据的情况。
一、Cacti安装配置
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。
2. 安装Cacti
wget https://www.doczj.com/doc/d34356286.html,/downloads/cacti-0.8.7e.tar.gz
tar xzf cacti-0.8.7e.tar.gz // 解压缩
mv ~/cacti/cacti-0.8.7e /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/"
AllowOverride None
Order Allow,Deny
Allow from all
重启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文件
vim /usr/share/cacti/include/config.php
更改如下内容
$database_username = "cacti";
$database_password = "cacti";
到这里,安装基本上完成了。
在浏览器中输入:http://yourserver/cacti/会见到cacti的安装界面,进行new install,基本上都没有什么需要修改的,稍微看一下,next就好了。初次登录,用户名和密码都是admin,会提示修改密码。
3. 安装Cacti Plugins Arch
wget https://www.doczj.com/doc/d34356286.html,/downloads/plugins/cacti-plugin-0.8.7e-PA-v2.6.zip
tar xzvf plugins/cacti-plugin-0.8.7e-PA-v2.6.zip
plugin arch的安装有两种方法,第一种是运行patch文件修改现有的内容:
cd /usr/share/cacti/
patch -p1 -N < cacti-plugin-arch/cacti-plugin-0.8.7e-PA-v2.9.diff
rm -rf cacti-plugin-arch
第二种是使用已经patch好的文件覆盖源文件:
cd cacti-plugin-arch/files-0.8.7e/
cp -rf * /usr/share/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的安装了。
二、Nagios安装配置
1.安装nagios主程序
wget https://www.doczj.com/doc/d34356286.html,/sourceforge/nagios/nagios-3.2.1.tar.gz tar -zxvf nagios-3.2.1.tar.gz
cd nagios-3.2.1 //为了避免编译错误,先创建nagios用户和组,以及/usr/local/nagios目录,同时指定nagios的目录属组。
groupadd nagios
useradd nagios -g nagios
mkdir /usr/local/nagios
chown -R nagios:nagios /usr/local/nagios
./configure --prefix=/usr/local/nagios --with-gd-lib=/usr/local/lib --with-gd-inc=/usr/local/include --with-nagios-user=nagios
--with-nagios-group=nagios
make all // 编译
make install // 安装nagios主要程序,cgi和html文件等
make install-init // 安装nagios启动脚本
make install-config // 将配置文件的例子复制到nagios配置文件里
make install-commandmode // 配置nagios目录权限。
make install-webconf // (因为这个命令执行的时候,会在/etc/httpd/conf.d/创建
nagios.conf文件)。
验证程序是否被正确安装
看是否存在etc,bin,sbin,share,var五个目录
bin Nagios执行程序所在目录,nagios文件即为主程序
etc Nagios配置文件位置
sbin Nagios cgi文件所在目录,执行外部命令所需文件所在的目录
share Nagios网页文件所在的目录
var Nagios日志文件,spid等文件所在的目录
nagios本身并没有监控的功能,所有的监控是由插件完成的,插件将监控的结果返回给nagios,nagios分析这些结果,以web的方式展现给我们,同时提供相应的报警
功能(这个报警的功能也是由插件完成的)。
2.安装nagios的插件
wget https://www.doczj.com/doc/d34356286.html,/sourceforge/nagiosplug/nagios-plugins-1.4.14.tar.gz #tar –zxvf nagios-plugins-1.4.tar.gz
# cd nagios-plugins-1.4.1
# ./configure -–prefix=/usr/local/nagios // 编译到nagios的安装目录
# make && make install
安装完成后,会在/usr/local/nagios/ 目录下面生成libexe插件目录,nagios所有的插件都会在这个目录里面。
3. 配置nagios
1)、vim /etc/apache/conf.d/nagios.conf
#setting for nagios
ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin
//Cgi文档所在目录
AuthType Basic
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthUserFile /usr/local/nagios/etc/htpasswd //验证文档路径
Require valid-user
Alias /nagios /usr/local/nagios/share
//nagios页面文档目录
AuthType Basic
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName "nagios Access"
AuthUserFile /usr/local/nagios/etc/htpasswd //验证文档路径
Require valid-user
上述文本块的作用是对nagios的目录进行用户验证,只有合法的授权用户才能够访问nagios的页面文档。第二步是生成用户验证文档:就会生成web的合法访问用户sery;命令交互执行,需要输入2次密码,然后就在文档/usr/local/nagios/etc/htpasswd写入一行-第一个字段是刚生成的用户名,第二个是加密后的密码,假如还要添加更多的用户,执行命令 htpasswd 就无需选项“-c”,否则就会覆盖任何已生成的行。
配置完成后,执行/usr/local/apache/bin/apachctl –t 检查apache配置文档是否有语法错误,无误后用/usr/local/apache/bin/apachctl start &把apache启动,然后从另外的机器的浏览器输入nagios 的访问地址(如:http://ip/nagios/)。
2)nagios配置
修改配置文档
Nagios的主配置文档是nagios.cfg,我们就从这个文档开始修改。用vi编辑nagios.cfg,注释行 #cfg_file=/usr/local/nagios/etc/localhost.cfg,然后把下面几行的注释去掉:
cfg_file=/usr/local/nagios/etc/contactgroups.cfg //联系组配置文档路径
cfg_file=/usr/local/nagios/etc/contacts.cfg //联系人配置文档路径
cfg_file=/usr/local/nagios/etc/hostgroups.cfg //主机组配置文档路径
cfg_file=/usr/local/nagios/etc/hosts.cfg //主机配置文档路径
cfg_file=/usr/local/nagios/etc/services.cfg //服务配置文档路径
cfg_file=/usr/local/nagios/etc/timeperiods.cfg //监控时段配置文档路径改check_external_commands=0为check_external_commands=1这行的作用是允许执行在web 界面下重启nagios、停止主机/服务检查等操作。把command_check_interval的值从默认的1改成 command_check_interval=10s(根据自己的情况定这个命令检查时间间隔,不要太长也不要太短)。主配置文档要改的基本上就是这些,通过上面的修改,发现/usr/local/nagios/etc 并没有文档hosts.cfg等一干文档,怎么办?稍后手动创建他们。
第2个要修改的配置文档是cgi.cfg,他的作用是控制相关cgi脚本。先确保use_authentication=1。曾看过不少的文章,都是建议把use_authentication的值配置成”0”来取消验证,这是个十分糟糕的想法。接下来修改default_user_name=sery ,再后面的修改在下表列出:
authorized_for_system_information=nagiosadmin,sery
authorized_for_configuration_information=nagiosadmin,sery
authorized_for_system_commands=nagiosadmin,sery //多个用户之间用逗号隔开authorized_for_all_services=nagiosadmin,sery
authorized_for_all_hosts=nagiosadmin,sery
authorized_for_all_service_commands=nagiosadmin,sery
authorized_for_all_host_commands=nagiosadmin,sery
那么上述用户名打那里来的呢?是执行命令/usr/local/apache/bin/htpasswd –c /usr/local/nagios/etc/htpasswd sery 所生成的,这个要注意,不能随便加没有存在的验证用户,为了安全起见,不要添加过多的验证用户。
第3个修改的配置文件是commands.cfg,这个文件的主要功能是用来发送报警短信和报警邮件,对其的修改如下所示:
#host-notify-by-sms //发送短信报警
define command {
command_name host-notify-by-sms
command_line /usr/local/bin/sms_send "Host
$HOSTSTATE$ alert for $HOSTNAME$! on '$DATETIME$' " $CONTACTPAGER$
}
#service notify by sms //发送短信报警
define command {
command_name service-notify-by-sms
command_line /usr/local/bin/sms_send "'$HOSTADDRESS$'
$HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$" $CONTACTPAGER$
}
主机和服务的邮件报警通知已经在文件中,不须更改。
第1个需要修改的配置文件timeperiods.cfg,其内容如下:
define timeperiod{
timeperiod_name 24x7
alias 24 Hours A Day, 7 Days 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
}
这个文件的定义明晰易懂,不多做说明。另建议7X24小时监控。
第2个需要修改的配置文件是contacts.cfg,其格式如下:
define contact {
contact_name sa //不要有空格
alias system administrator
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands service-notify-by-sms,service-
notify-by-email //这个命令读配置文件miscommands.cfg
host_notification_commands host-notify-by-email,host-noti
fy-by-sms //这个命令读配置文件miscommands.cfg
email sery@https://www.doczj.com/doc/d34356286.html,
pager 133******** //手机号,收报警短信
} //不要把这个符号写掉了
define contact {
contact_name sery
alias system administrator
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands service-notify-by-sms,service-
notify-by-email
host_notification_commands host-notify-by-email,host-noti
fy-by-sms
email sery@https://www.doczj.com/doc/d34356286.html,
pager 133********
}
上面的文件定义了2个联系人,如果有更多联系人的话,照这个格式在后面追加即可。服务通知选项(service_notification_options)与主机通知选项
(host_notification_options)的几个选项在这里说明一下:w-warning ,
u-unknown,c-critical,r-recovery;d-down,u-unreachable,注意一下,主机报警和服务报警有些差异。
紧接着需要手动创建的配置文件是contactgroups.cfg文件,这个文件是依照上一个文件contacts.cfg来的,contactgroups文件相对简单一些,其格式如下:
define contactgroup {
contactgroup_name sagroup //不要用空格
alias system administrator group
members sa,sery //本例有2个成员
}
多个成员之间用逗号做分界符,如果有更多的联系组,就依相同的格式在文件中追加余下的组。
关键的角色终于登场,这就是配置文件hosts.cfg。下面是我定义的两个主机的基本样式:
#define monitor host
define host {
host_name nagios-server
alias nagios server
address 61.x..x.49
contact_groups sagroup //多个联系组用逗号分隔,数据来
源于contactgroups.cfg
check_command check-host-alive
max_check_attempts 5
notification_interval 10 //值可调,大小什么值合适需自己测
定
notification_period 24x7
notification_options d,u,r
}
define host {
host_name 24-25
alias server 24-25
address 202.X.24.25
contact_groups sagroup
check_command check-host-alive //down机就发报警通知
max_check_attempts 5
notification_interval 10
notification_period 24x7
notification_options d,u,r
}
更多的主机依此格式逐个追加进来。小技巧,如果是连续的ip段,最好自己写个脚本生成hosts.cfg文件,为了以后维护方便,尽可能在文件中使用易读的注释。
再一个重量级的配置文件是services.cfg,没有这个文件,什么监控也没用。下面给出一个样式文件:
#service definition
define service {
host_name nagios-server //来源:hosts.cfg
service_description check-host-alive
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup //来源:contactgroups.cfg
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check-host-alive //检查主机是否存活
}
define service {
host_name 74-210
service_description check_tcp 80
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_tcp!80 //检查tcp 80端口服务是否正常
}
书写时要注意的是,check_tcp与要监控的服务端口之间要用”!”做分隔符。如果服务太多,以应该考虑用脚本来生成。
主机组配置文件hostgroups.cfg,这是一个可选的项目,它建立在文件hosts之上,其格式如下:
define hostgroup {
hostgroup_name sa-servers
alias sa servers
members nagios-server,24-25,24-26 //用逗号间隔多个主
机
}
多个主机组依上面的格式逐个追加上去。
运行程式/usr/local/nagios –v /usr/local/nagios/etc/nagios.cfg来检查任何配置文档的正确性。运行完毕将在输出尾部出现:
Total Warnings: 0
Total Errors: 0
Things look okay - No serious problems were detected during the pre-flight check
假如出现错误,肯定是cfg配置文档的问题,自己调试解决就能够了。
使用NRPE监控Linux上的“本地信息”对系统为Linux的主机进行如下监控: CPU负载,磁盘容量,登陆用户数,总进程数,僵尸进程数,swap分区使用情况
在被监控主机上:
groupadd nagios // 创建nagios组账号。
usermod nagios -g nagios // 创建nagios用户并加入组。
wget https://www.doczj.com/doc/d34356286.html,/sourceforge/nagiosplug/nagios-plugins-1.4.14.tar.gz tar zxvf nagios-plugins-1.4.14.tar.gz
cd nagios-plugins-1.4.14
./configure --prefix=/usr/local/nagios
make
make install
chown nagios.nagios /usr/local/nagios
chown -R nagios.nagios /usr/local/nagios/libexec/
至于NRPE的作用,下面的博客讲的很详细了。
https://www.doczj.com/doc/d34356286.html,/13184/41893
wget https://www.doczj.com/doc/d34356286.html,/download/nagios/nrpe-2.8.1.tar.gz
tar zxvf nrpe-2.8.1.tar.gz
cd nrpe-2.8.1
./configure //NRPE port: 5666
make all
make install-plugin
之前说过监控机需要安装check_nrpe这个插件,被监控机并不需要,我们在这里安装它是为了测试的目的
make install-daemon //安装daemon
make install-daemon-config //安装配置文件
ls /usr/local/nagios/
bin/ etc/ libexec/ share/ //现在nagios目录会有4个目录了
在被监控机器上测试一下NRPE是否正常工作。
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 //测试NRPE是否正常工作
NRPE v2.8.1 //正常的结果会显示当前NRPE的版本号
/usr/local/nagios/libexec/check_nrpe –h查看这个命令的用法
可以看到用法是check_nrpe –H 被监控的主机 -c要执行的监控命令
注意:-c后面接的监控命令必须是nrpe.cfg文件中定义的.也就是NRPE daemon只运行nrpe.cfg 中所定义的命令
查看NRPE的监控命令
cd /usr/local/nagios/etc
vi nrpe.cfg
command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20 -c 10 -p /dev/hda1 command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200
// [***]中是命令名,也就是check_nrpe的-c参数可以接的内容,=后面是实际执行的插件程序。
比如,我现在要监控硬盘的情况,加入以下内容:
command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20 -c 10 -p /dev/sda1 command[check_hda3]=/usr/local/nagios/libexec/check_disk -w 20 -c 10 -p /dev/sda3
所以以上nrpe.cfg配置的命令用法如下:
check_nrpe -H127.0.0.1 -c check_hda1
DISK OK - free space: /boot 77 MB (82% inode=99%);| /boot=16MB;78;88;0;98
check_nrpe -H127.0.0.1 -c check_hda3
DISK OK - free space: / 134960 MB (97% inode=99%);| /=3322MB;145789;145799;0;145809
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_users //检测登陆用户数
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_load //CPU负载
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_zombie_procs //僵尸进程
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_total_procs //总进程数
//check_load -w 15,10,5 -c 30,25,20
//在unix里面负载的均值通常表示是1分钟,5分钟,15分钟内平均有多少进程处于等待状态
//当1分钟多于15个进程等待,5分钟多于10个,15分钟多于5个则为warning状态
//当1分钟多于30个进程等待,5分钟多于25个,15分钟多于20个则为critical状态
在运行Nagios的监控主机上
因为之前已经将Nagios运行起来了,现在要做的是:
安装check_nrpe插件,在commands.cfg中创建check_nrpe中的命令,只有在commands.cfg 中定义过的命令才能在services.cfg中使用。
创建对被监控主机的监控项目
tar zxvf nrpe-2.8.1.tar.gz
cd nrpe-2.8.1
./configure
make all
make install-plugin //只运行这一步即可,只需要check_nrpe插件
这一步,记得在被监控机器上的/usr/local/nagios/etc/nrpe.conf里面加上监控机器的IP地址!
/usr/local/nagios/libexec/check_nrpe -H 192.168.4.30 //测试一下监控机使用check_nrpe
与被监控机运行的nrpedaemon之間的通信
NRPE v2.8.1 //看到已经返回了正确的NRPE的版本信息,说明一切正常
在commands.cfg中增加对check_nrpe的定义
vi /usr/local/nagios/etc/commands.cfg
# 'check_nrpe' command definition
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
//command_name check_nrpe 定义命令名称为check_nrpe, 在services.cfg中要使用这个名称
//command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ 定义实际运行的插件程序
接下来可以在services.cfg中定义对主机CPU负载的监控。
注意机器必须是LINUX系统,并且安装了NRPE.
vi services.cfg
define service {
host_name mail1
service_description check-load
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nrpe!check_load
}
在被监控机上增加check_swap命令的定义
vi /usr/local/nagios/etc/nrpe.cfg
增加下面这一行
command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%
//如果在被监控机上是以daemon运行的nrpe,则需要手动重启
//如果在被监控机上是以xinetd运行的,则不需要
在监控机上增加这个监控项目:
vi /etc/services.cfg
define service {
host_name mail1
service_description check-swap
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nrpe!check_swap
}
建议再检查一下配置是否正确再启动服务!
启动nrpc,并测试
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
echo “/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d &> /dev/null”>> /etc/rc.local
netstat -atulnp | grep 'nrpe'
tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN 3308/nrpe
/usr/local/nagios/libexec/check_nrpe -H 192.168.0.6 // linux客户端的IP地址:192.168.0.6 NRPE v2.81
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
/etc/init.d/nagios restart
参考学习地址:
https://www.doczj.com/doc/d34356286.html,/10037/20520
https://www.doczj.com/doc/d34356286.html,/13184/41778
三、Cacti&Nagios集成
1.安装NPC,Settings和Thold
cd /usr/share/cacti/plugins
wget https://www.doczj.com/doc/d34356286.html,/downloads/plugins/settings-0.5.tar.gz
wget https://www.doczj.com/doc/d34356286.html,/downloads/plugins/thold-0.4.1.tar.gz
wget https://www.doczj.com/doc/d34356286.html,/plugins/npc.tar.gz
分别解压
tar xzf settings.tar.gz
tar xzf thold.tar.gz
tar xzf npc.tar.gz
接下来在global.php中加载settings和thold
vi /usr/share/cacti/include/global.php
添加下面内容
$plugins= array();
$plugins[] = 'npc';
$plugins[] = 'settings';
$plugins[] = 'thold';
回到网页中,记得要去user managerment里面,给予相应用户的permissions,具体做法是,点页面左边的菜单User Managerment,然后在右边点击某个用户(如admin),然后在Realm Permissions中选中相应的选项即可。而NPC,直接进入网页,点击左边的Plugin Management,然后在右边的Uninstalled中install NPC,在Installed中enable NPC,在Web里面配置一下NPC,点击左边的Settings,点到NPC
的tab,勾上Remote Commands,Nagios Command File Path中输入/usr/local/nagios/var/rw/nagios.cmd,Nagios URL中输入http://yourserver/nagios/,然后Save一下。
点击(console)菜单栏 user management------->admin
在realm permission---plugin management(打勾)
插件
返回(console)菜单栏,点击configuration--settings--NPC,修改一下三个参数
返回(console)菜单栏,点击插件链接区-NPC
这里要说一下Thold这个plugin,这个plugin的作用就是对某项数据设定一个范围,超过这个范围就会发alarm,比如说我监控cpu,设定cpu使用率大于90%就发mail给我。
2.下载Cacti-spine最新版本,(要同使用的cacti版本相匹配)
安装net-snmp源包
wget https://www.doczj.com/doc/d34356286.html,/projects/net-snmp/files/net-snmp/5.4.3/ net-snmp-5.4.3.tar.gz tar zxvf net-snmp-5.4.3.tar.gz
cd net-snmp-5.4.3
./configure --prefix=/usr/local/net-snmp
make ;make install
cp EXAMPLE.conf /usr/local/net-snmp/share/snmp/snmpd.conf
ln -s /usr/local/net-snmp/bin/* /usr/local/bin/
/usr/local/net-snmp/sbin/snmpd -c /usr/local/net-snmp/share/snmp/snmpd.conf echo“/usr/local/net-snmp/sbin/snmpd -c /usr/local/net-snmp/share/snmp/snmpd.conf ”>>
/etc/rc.local
3.安装spine
wge t https://www.doczj.com/doc/d34356286.html,/downloads/spine/cacti-spine-0.8.7e.tar.gz
tar zxvf cacti-spine-0.8.7e.tar.gz
cd cacti-spine-0.8.7e
./configure --prefix=/usr/local/cacti-spine --with-snmp=/usr/local/net-snmp make && make install
cd /usr/local/cacti-spine/etc/
cp spine.conf.dist spine.conf
vi spine.conf
service apache2 restarat
crontab -e(设置轮询刷新时间)
接着在cacti页面上面设置poller选择spine,如下图设置
这样就结束了.
启动:
/usr/share/cacti/plugins/spine/bin/spine -C /usr/share/cacti/plugins/spine/etc/spine.conf
不报错就说明OK了
4. 安装NDoutils
NDoutils算是Nagios的mysql mod吧,可以把Nagios的情况同步到mysql里面,这也是整个安装步骤中最关键的。因为只有同步到mysql里,才可以让NPC得到相关的信息。
一开始还是先安装一个package,因为NDoutils要用到mysql的一些源文件。
apt-get install libmysql++-dev
然后下载NDoutils并编译
wget https://www.doczj.com/doc/d34356286.html,/sourceforge/nagios/ndoutils-1.4b7.tar.gz 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 ndo2db.cfg ndomod.cfg /etc/nagios/
修改一下相关的配置
vim /usr/local/nagios/etc/ndo2db.cfg
更改以下内容
db_name = cacti
db_prefix = npc_
db_user = cacti
db_pass = cacti
debug_level = 1
debug_file=/usr/local/nagios/var/ndo2db.debug
vim /usr/local/nagios/etc/ndomod.cfg
output=/var/nagios/ndo.sock
buffer_file=/usr/local/nagios/var/ndomod.tmp
这里是用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 restart
四、Nagios&Cacti错误提示解决方法
1. Cannot find ssl headers:
在Debian Linux安装nagios时,先安装nrpe,在执行/configure时,现在下面的错误:Cannot find ssl headers(缺少openssl-devel)。
解决方法:aptitude install libssl-dev
2. cacti插件npc提示nagios Status off:
cacti插件npc提示nagios Status off
权限检查
vi /usr/local/nagios/etc/ndo2db.cfg
ndo2db_user=nagios
ndo2db_group=nagios
chown -R nagios.nagios /usr/local/nagios/
查看日志
tail -100 /var/log/messages
tail -100 /usr/local/nagios/var/nagios.log
tail -100 /usr/local/nagios/var/ndo2db.debug
3.调用外部命令错误,可能权限不够
临时解决:
chown -R nagios.nagcmd /usr/local/nagios/var/rw
chmod -R 777 /usr/local/nagios/var/rw
为什么说临时解决 ? 因为重启nagios后,权限会还原,还是没权限执行。
解决:
在安装 nagios 时,就要把用户选对,然后再安装。
./configure --with-group=nagios --with-user=nagios --with-command-group=nagcmd --with-gd-lib=/usr/lib --with-gd-inc=/usr/include make all make install make install-init make install-config make install-commandmode
rw nagios.cmd 权限是 nagios.nagios,还需要把 web用户加入到 nagios组里这样才