Nagios+Cacti详细配置及应用.docx
《Nagios+Cacti详细配置及应用.docx》由会员分享,可在线阅读,更多相关《Nagios+Cacti详细配置及应用.docx(60页珍藏版)》请在冰豆网上搜索。
Nagios+Cacti详细配置及应用
Nagios+Cacti详细配置及应用
系统:
RedHat5.5版本,内核:
2.6.18;
系统安装好后,先把VNC配置好,开启远程桌面;然后配置好YUM源,方便安装软件包。
(不会的可以看我以前的博文或网上搜索相关文档)
本文所使用的软件包:
Nagios:
nagios-3.3.1.tar、nagios-plugins-1.4.15.tar、nrpe-2.12.tar以及windows的客户端NSClient++-0.3.9-Win32.msi(可以到Nagios官网下载最新版)
Nagios插件:
nconf-1.3.0-0.tgz、pnp4nagios-0.6.16.tar.gz、
Cacti:
cacti-0.8.7i-PIA-3.1.tar.gz、cacti-spine-0.8.7i.tar.gz
其它软件包:
rrdtool-1.4.5.tar.gz、ndoutils-1.4b9.tar.gz、net-snmp-5.7.1.tar.gz、npc-2.0.4.tar.gz、php-json-ext-1.2.1.tar.bz2、sendEmail-v1.56.tar.gz
(注意:
Cacti0.8.7i有两种发布包,一种常规的,另外一种自带PluginArchitecture(PIA),要用第二种,因为此后的cacti版本默认集成PIA,再也没有单独的PIA包可供升级使用了。
)
在根目录下新建目录tools,用来存放软件包;我这里Nagios所用到的软件包及相关插件都放在/tools/nagios目录中;Cacti所用到的软件包及相关插件都放在/tools/cacti目录中;其它则放在/tools目录下。
一、安装前的准备工作
安装nagios部署过程中需要依赖到得其他软件和库文件
1.yum groupinstall -y 'Development Libraries' 'Development Tools" 'Legacy Software Development' 'X Software Development'
1.yum -y install httpd gcc glibc glibc-common *gd* php php-mysql mysql mysql-server mysql-devel openssl-devel
2.# 安装Nagios必须的基本组件的运行依赖于httpd、mysql、gd以及编译用到的gcc
二、Nagios监控端程序的安装及配置
1.添加nagios用户和组
1.groupadd nagcmd
2.#添加与nagios运行相关服务的组
3.useradd -m nagios
4.#添加nagios用户
5.usermod -a -G nagcmd nagios
6.#将nagios用户追加附加组
7.usermod -a -G nagcmd apache
8.#将apache用户追加nagcmd组使之工作时具有足够的权限
2.编译安装nagios3.3.1
1.cd/usr/local/src/
2.tar xzf /tools/nagios/nagios-3.3.1.tar.gz
3.cd nagios
4.# ./configure --with-command-group=nagcmd --enable-event-broker
5.#默认安装路径在/usr/local/nagios/
6.
7.makeall
8.makeinstall<使用makeinstall来安装主程序,CGI和HTML文件>
9.makeinstall-init<使用makeinstall-init在/etc/rc.d/init.d安装启动脚本>
10.makeinstall-config<使用makeinstall-cofig来安装示例配置文件,安装的路径是/usr/local/nagios/etc>
11.makeinstall-commandmode<使用makeinstall-commandmode来配置目录权限>
12.make install-webconf <在/etc/httpd/conf.d/nagios.conf生成web相关配置文件,用于定义nagios使用的CGI选项,web的身份认证等>
13.<可以通过&符号把命令连接起来执行:
make all && make install && make install-init && make install-config && make install-commandmode && make install-webconf >#安装主程序、添加初始化程序、生成配置文件、生成web配置文件
1.htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
2.New password:
3.Re-type new password:
4.Adding password for user nagios
5.#为nagios的web页面创建账号密码,对访问进行身份认证
6.service httpd restart
7.chkconfig httpd on
8.#启动httpd,并设置开机启动
PS:
此处用户名尽量使用默认nagiosadmin,否则就需要修改cgi.cfg文件中所有关于认证选项的用户
3.编译安装nagios-plugins
nagios的所有监控工作都是由nagios-plugins插件完成的,因此,在启动nagios之前还需要为其安装nagios-plugins。
1.cd/usr/local/src
2.tar xzf /tools/nagios/nagios-plugins-1.4.15.tar.gz
3.cd nagios-plugins-1.4.15
4../configure --with-nagios-user=nagios --with-nagios-group=nagios --with-mysql
5.#添加mysql依赖
6.
7.make && make install
8.#编译并安装
Ps:
作者在安装nagios-cn-3.2.3.tar过程中,在此处编译完成发现mysql关联库文件本跳过。
经分析原因是由于在编译nagios时修改了nagios的默认安装路径(非/usr/local/nagios)。
解决办法:
1.cp /usr/lib/mysql/mysql_config /usr/lib/pkgconfig/
2.#将mysql的配置文件放在这个目录下使之能够在编译过程中读到相关配置选项
3.再进行编译安装nagios-plugins
4.测试配置文件语法并尝试启动nagios
1.chkconfig --add nagios
2.chkconfig nagios on
3.#添加nagios到开机启动项
4.vim /etc/profile
5.PATH=$PATH:
/usr/local/nagios/bin
6.#向profile加入这一行,指明nagios命令的path
7.pwd
8.<#/usr/local/src/nagios-plugins-1.4.15>
9.. /etc/profile <一直都在nagios-plugins-1.4.15这个目录下>
10.nagios -v /usr/local/nagios/etc/nagios.cfg
11.#检查配置文件的语法
12.service nagios start
13.#如语法监测为报错则尝试开启服务
5.SELinux及防火墙设置<注意:
此时需要关闭SELINUX或针对nagios对SELIUNX进行配置>
Linux默认打开了selinux并且运行于强制安全模式,这将导致在打开nagios的web界面时会出现InternetServerError的错误。
也可以不更改selinux的运行模式,解决办法为:
1.方法一、直接关闭selinux
2.getenforce
3.#查看selinux的运行状态是否运行于强制模式,如果是enforcing则是开启状态;
4.setenforce 0
5.#更改selinux运行于宽容\关闭模式;
6.但是这个设置重启后就会失效,如需要重启后保持该设置需要修改/etc/sysconfig/selinux,将其中的SELINUX=enforcing更改为SELINUX=permissive并重启系统。
当然你也可以改成disable禁用selinux。
7.方法二、修改相关文件的type
8.chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/
9.chcon -R -t httpd_sys_content_t /usr/local/nagios/share/
10.#进行这些操作就可以在selinux开启的状态下正常访问nagios
11.如果开启防火墙,应该允许访问apache(一般为80端口)并允许nagios去抓取被监控机信息(一般nrpe为5666端口)。
或关闭防火墙。
12.如果有防火墙应该开放80和5666端口:
13.iptalbes–IINPUT–ptcp–mstate–stateNEW–dport80–jACCEPT
14.iptalbes–IINPUT–ptcp–mstate–stateNEW–dport5666–jACCEPT
15.serviceiptablessave
16.serviceiptablesrestart
17.或者可以直接修改iptables配置文件(注意修改前要先关闭防火墙,修改后要save,然后启动防火墙)。
18.
6.到这里nagios的安装也就基本完成了,你可以通过web来访问了。
http:
//10.10.208.116/nagios 会弹出对话框要求输入用户名密码,输入nagiosadmin,密码nagios123!
@#,就可以进入nagios的主页面了。
注意:
如果htpasswd生成的密码没有使用的默认的nagiosadmin则会导致无法正常显示监控信息,将cgi.cfg中use_authentication=1改成0虽能显示主机信息但在手动刷新服务状态时报错
解决方法:
将cgi.cfg中认证用户改成htpasswd生成的用户;或按照cgi.cfg认证功能用户从新生成htpasswd。
三、配置检测主机是否存活(监控本机—Nagios服务器)
nagios目录功能的简要说明:
bin Nagios执行程序所在目录,nagios文件即为主程序
etc Nagios配置文件位置
etc/objects对象配置文件
etc/servers对象配置文件目录,被控主机的配置文件放在这个目录中,是手动创建的
sbin NagiosCgi文件所在目录,也就是执行外部命令所需文件所在的目录
share Nagios网页文件所在的目录
var Nagios日志文件、spid等文件所在的目录
var/archives 日志归档目录
var/rw 用来存放外部命令文件
1.配置文件概述。
如果安装上面的步骤,安装完成后,配置文件在安装时放在了/usr/local/nagios/etc/目录下。
[root@NC-1~]#cd/usr/local/nagios/
[root@NC-1nagios]#ls
binetcincludelibexecsbinsharevar
[root@NC-1nagios]#cdetc/
[root@NC-1etc]#ls-l-h
total88K
-rw-rw-r--1nagiosnagios12KMar1110:
16cgi.cfg(CGI配置文件)
-rw-r--r--1rootroot26Mar1110:
19htpasswd.users(Apache的验证密码文件)
-rw-rw-r--1nagiosnagios43KMar1110:
16nagios.cfg(主配置文件)
drwxrwxr-x2nagiosnagios4.0KMar1110:
16objects(资源配置文件目录)
-rw-rw----1nagiosnagios1.4KMar1110:
16resource.cfg(资源配置文件)
[root@NC-1etc]#
我们修要修改的的是nagios.cfg和objects目录下的文件,来检测主机是否存活。
2.主配文件nagios.cfg的配置。
主配置文件的内容很多,对于这个版本,我们需要修改和添加的主要是对象配置文件和目录,即:
cfg_file=;cfg_dir=;
[root@NC-1etc]#vimnagios.cfg
#Youcanspecifyindividualobjectconfigfilesasshownbelow:
cfg_file=/usr/local/nagios/etc/objects/commands.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/contactgroups.cfg(手动添加此行,联系人组定义文件)
cfg_file=/usr/local/nagios/etc/objects/hostgroups.cfg(手动添加此行,主机组定义文件)
cfg_file=/usr/local/nagios/etc/objects/servicegroups.cfg(手动添加此行,服务组定义文件)
#Definitionsformonitoringthelocal(Linux)host
#cfg_file=/usr/local/nagios/etc/objects/localhost.cfg(注释掉此行,默认的监控本机的配置,在servers目录中重新创建本机配置文件)
cfg_dir=/usr/local/nagios/etc/servers(去掉注释符号或手动添加此行,用来存放监控的主机和服务的配置文件)
3.对象定义文件。
对象定义文件是管理员经常需要修改的配置文件,用于定义主机、服务、主机组、服务组、联系人、联系人组、命令等等,也就是要定义监控的对象和监控的方法。
对象定义文件有两种基本写法,例如监控一台Linux服务器。
方法一:
将该主机定义写入主机定义文件,将要监控的服务写到服务定义文件中,前提是在Nagios的主配置文件里需要定义这两个配置文件。
方法二:
将该主机的配置写入到一个如【主机名】.cfg文件里,然后再Nagios的主配置文件里定义这个配置文件。
这两种方法的选择要根据实际情况,方法一由于主机数的增加会增加配置文件的管理难度,文件内容多,容易出现配置错误等问题。
方法二由于是每个监控主机一个配置文件,这样虽然清晰明了,但对于想结构化管理的用户不太方便。
PS:
笔者所用的是方法二。
4.创建上述的相关配置和目录,监控Nagios服务器本机,以及配置文件中的参数简要说明。
[root@NC-1/]#cd/usr/local/nagios/etc/
[root@NC-1etc]#mkdirservers
上述中把Nagios的localhoat.cfg配置文件注释掉了,现在到objects目录中把这个文件复制到servers目录中,并重命名为local-nagios.cfg;
[root@NC-1etc]#cpobjects/localhost.cfgservers/local-nagios.cfg
[root@NC-1etc]#lsservers/
local-nagios.cfg
修改local-nagios.cfg文件,并简略说明;
定义你要监控的对象,这里定义的“host_name”被应用到其它的所有配置文件中,这个是我们配置Nagios必须修改的配置文件。
[root@NC-1etc]#vimservers/local-nagios.cfg
#Defineahostforthelocalmachine
definehost{
uselinux-server;继承模板的名字.
host_nameLocal-nagios;设置主机的名字,该名字会出现在hostgroups.cfg和services.cfg中。
注意,这个名字可以不是该服务器的主机名。
aliasNagios+Cacti;别名
address127.0.0.1;主机的IP地址
}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#DefineanoptionalhostgroupforLinuxmachines(注释掉组的定义,因为后续会创建主机组的配置文件)
#definehostgroup{
#hostgroup_namelinux-servers;设置组的名字
#aliasLinuxServers;组的别名
#membersLocal-nagios;组的成员主机名,与上述中的host设定的名字一致;
#}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#Defineaserviceto"ping"thelocalmachine(通过Ping检测主机的存活状态)
defineservice{
uselocal-service;继承模板的名字
host_nameLocal-nagios;定义的主机名称,与上述中的host设定的名字一致
service_descriptionPING;定义所监控服务的描述/名称,至于怎么描述合理,就只有发挥你的主观能动性了。
check_commandcheck_ping!
100.0,20%!
500.0,60%;检查的命令,在command.cfg中定义,有些命令是默认就定义好的
}
#监控主机资源,根>分区
defineservice{
uselocal-service;Nameofservicetemplatetouse
host_nameLocal-nagios
service_descriptionRootPartition
check_commandcheck_local_disk!
20%!
10%!
/;用感叹号<!
>分开
}
#监控主机资源,
defineservice{
uselocal-service;Nameofservicetemplatetouse
host_nameLocal-nagios
service_descriptionCurrentUsers
check_commandcheck_local_users!
20!
50
}
#监控主机资源,系统进程总数
defineservice{
uselocal-service;Nameofservicetemplatetouse
host_nameLocal-nagios
service_descriptionTotalProcesses
check_commandcheck_local_procs!
250!
400!
RSZDT
}
#监控主机资源,系统负荷
defineservice{
uselocal-service;Nameofservicetemplatetouse
host_nameLocal-nagios
service_descriptionCurrentLoad
check_commandcheck_local_load!
5.0,4.0,3.0!
10.0,6.0,4.0
}
#监控主机资源,交换分区SWAP
defineservice{
uselocal-service;Nameofservicetemplatetouse
host_nameLocal-nagios
service_descriptionSwapUsage
check_commandcheck_local_swap!
20!
10
}
#监控SSH服务
defineservice{
uselocal-service;Nameofservicetemplatetouse
host_nameLocal-nagios
service_descriptionSSH
check_commandcheck_ssh
notifications_enabled0
}
#监控HTTP服务
defineservice{
uselocal-service;Nameofservicetemplatetouse
host_nameLocal-nagios
service_descriptionHTTP
check_commandcheck_http
notifications_enab