(原创)CentOS环境下搭建Nagios系统
2017-06-29 10:05
363 查看
/*
*可实现本机和远程机的实时监控及邮件提醒
*不足之处还望提出来共同探讨
*/
(原创不易,转载请注明出处!)
一、本次搭建的环境:
操作系统:centos6.5 minimal(64位 精简版)镜像:CentOS-6.5-x86_64-minimal.iso
Centos6.5minimal版64位iso下载链接:
http://www.centoscn.com/plus/download.php?open=2&id=2196&uhash=2af220a6805385dda088ff03
监控主机IP:192.168.220.132
主机名.域名:localhost.localdomain(默认状况)
被监控的服务器IP:192.168.220.133
主机名.域名:localhost.localdomain(默认状况)
安装包准备:先下载好截图内的安装包,后面要用,本次安装都上传到对应主机的~目录
# cd~
# ls
二、安装监控主机(服务端)
1.安装套件
1.1检查基础支持套件# rpm -q gcc glibc glibc-common gd gd-devel xinetd openssl-devel
可以看到gcc、gd、gd-devel、xinetd、openssl-devel没有安装。
1.2安装缺少的套件
该命令为全部安装,已经安装过的centos会跳过。
# yum install -y gcc glibc glibc-common gd gd-devel xinetd openssl-devel
提示:如果这步出现了 Loaded plugins: fastestmirror的错误,是因为fastestmirror是yum的一个加速插件,这里是提示插件不能用了。
解决方法:
a.修改插件的配置文件
# vi /etc/yum/pluginconf.d/fastestmirror.conf
enabled = 1//由1改为0,禁用该插件
b.修改yum的配置文件
# vi /etc/yum.conf
plugins=1//改为0,不使用插件
1.3安装完成
2.创建nagios用户和用户组
# useradd -s /sbin/nologin nagios
# mkdir /usr/local/nagios
# chown -R nagios.nagios /usr/local/nagios
查看nagios
目录的权限
# ll -d /usr/local/nagios/
3.编译安装Nagios
安装包放在~目录下# cd ~
# tar zxvf nagios-3.4.3.tar.gz
# cd nagios
# ./configure --prefix=/usr/local/nagios
configure信息提示,发现perl命令没找到。
查看perl版本:
# rpm -qa perl
显示未安装
安装perl环境:(下载100M较多,需要等待一段时间)
# yum install perl*
安装成功
重新执行configure
# ./configure --prefix=/usr/local/nagios
发现不再报和perl相关的错
执行安装
# make all
# make install
# make install-init
# make install-commandmode
# make install-config
# chkconfig --add nagios
# chkconfig --level 35 nagios on
# chkconfig --list nagios
4.验证程序是否被正确安装
切换目录到安装路径(这里是/usr/local/nagios),看是否存在etc、bin、sbin、share、var这五个目录,如果存在则可以表明程序被正确的安装到系统了。Nagios各个目录用途说明如下:
bin | Nagios 可执行程序所在目录 |
etc | Nagios 配置文件所在目录 |
sbin | Nagios CGI 文件所在目录,也就是执行外部命令所需文件所在的目录 |
share | Nagios网页文件所在的目录 |
libexec | Nagios 外部插件所在目录 |
var | Nagios 日志文件、lock等文件所在的目录 |
var/archives | Nagios 日志自动归档目录 |
var/rw | 用来存放外部命令文件的目录 |
5.安装Nagios插件
# cd ~# tar zxvf nagios-plugins-1.4.16.tar.gz
# cd nagios-plugins-1.4.16
# ./configure --prefix=/usr/local/nagios
# make && make install
6.安装与配置Apache和Php
Apache 和Php不是安装nagios所必须的,但是nagios提供了web监控界面,通过web监控界面可以清晰的看到被监控主机、资源的运行状态,因此,安装一个web服务是很必要的。需要注意的是,nagios在nagios3.1.x版本以后,配置web监控界面时需要php的支持。这里我们下载的nagios版本为nagios-3.4.3,因此在编译安装完成apache后,还需要编译php模块,这里选取的php版本为php5.4.10。
a. 安装Apache
# cd ~
# tar zxvf httpd-2.2.23.tar.gz
# cd httpd-2.2.23
# mkdir /usr/local/apache2
# ./configure --prefix=/usr/local/apache2
# make && make install
b. 安装Php
# cd ~
# tar zxvf php-5.4.10.tar.gz
# cd php-5.4.10
# mkdir /usr/local/php
# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs
出现如上错误,检查是否安装了libxm包:
# rpm -qa |grep libxml2
发现确实是缺少libxm包:
i.安装libxml2的依赖python-devel:
yum -y install python-devel
ii.安装libxml2:
# cd~
# tar zxvf libxml2-2.9.1.tar.gz
# cd libxml2-2.9.1
# ./configure
# make
# make install
libxm包安装完成,重新执行php的configure:
# cd ~/php-5.4.10
# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs
# make && make install
c. 配置apache
找到apache 的配置文件
# vi /usr/local/apache2/conf/httpd.conf
找到:
User daemon
Group daemon
修改为
User nagios
Group nagios
然后找到
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
修改为
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
AddType application/x-httpd-php .php
为了安全起见,一般情况下要让nagios
的web 监控页面必须经过授权才能访问,这需要增加验证配置,即在httpd.conf文件最后添加如下信息: (记得去除下文的中文注释,否则可能不被解析)
#setting for nagios
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
<Directory "/usr/local/nagios/sbin">
AuthType Basic
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthUserFile /usr/local/nagios/etc/htpasswd //用于此目录访问身份验证的文件
Require valid-user
</Directory>
Alias /nagios "/usr/local/nagios/share"
<Directory "/usr/local/nagios/share">
AuthType Basic
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName "nagios Access"
AuthUserFile /usr/local/nagios/etc/htpasswd
Require valid-user
</Directory>
d. 创建apache目录验证文件
在上面的配置中,指定了目录验证文件htpasswd,下面要创建这个文件:
# /usr/local/apache2/bin/htpasswd -c /usr/local/nagios/etc/htpasswd sxun
这样就在/usr/local/nagios/etc
目录下创建了一个htpasswd 验证文件,当通过http://192.168.220.132/nagios/ 访问时就需要输入用户名和密码了。
e. 查看认证文件的内容
# cat /usr/local/nagios/etc/htpasswd
f. 启动apache服务
# service httpd start
查看运行状态
# service httpd status
关闭防火墙
# service iptables stop
在浏览器输入 http://192.168.220.132/ 检查Apache的链接状态
Apache的链接成功
7.启动和查看nagios服务
# service nagios start接着输入 http://192.168.220.132/nagios/ 检查nagios的链接状态
关闭端口占用
# service nagios stop
开启Apache2
# /usr/local/apache2/bin/apachectl start
输入 http://192.168.220.132/nagios/ 检查nagios的链接状态
弹窗提示输入账号密码:
输入之前的账号密码,点击回车,进入监控页面。
到这里nagios
的安装也就基本完成了,你可以通过web来访问了。
但是,此时点击旁边的选项都会出现如下图的错误:
原因是我们登录的管理员sxun还没在文件/usr/local/nagios/etc/cgi.cfg这个文件里说明,所以没权限。这就需要开始接下去的配置了。
8.配置nagios
Nagios 主要用于监控一台或者多台本地主机及远程的各种信息,包括本机资源及对外的服务等。默认的Nagios 配置没有任何监控内容,仅是一些模板文件。若要让Nagios 提供服务,就必须修改配置文件,增加要监控的主机和服务,下面将详细介绍。8.1 默认配置文件介绍
Nagios 安装完毕后,默认的配置文件在/usr/local/nagios/etc目录下。
每个文件或目录含义如下表所示:
文件名或目录名 | 用途 |
cgi.cfg | 控制CGI访问的配置文件 |
nagios.cfg | Nagios 主配置文件 |
resource.cfg | 变量定义文件,又称为资源文件,在些文件中定义变量,以便由其他配置文件引用,如$USER1$ |
objects | objects 是一个目录,在此目录下有很多配置文件模板,用于定义Nagios 对象 |
objects/commands.cfg | 命令定义配置文件,其中定义的命令可以被其他配置文件引用 |
objects/contacts.cfg | 定义联系人和联系人组的配置文件 |
objects/localhost.cfg | 定义监控本地主机的配置文件 |
objects/printer.cfg | 定义监控打印机的一个配置文件模板,默认没有启用此文件 |
objects/switch.cfg | 定义监控路由器的一个配置文件模板,默认没有启用此文件 |
objects/templates.cfg | 定义主机和服务的一个模板配置文件,可以在其他配置文件中引用 |
objects/timeperiods.cfg | 定义Nagios 监控时间段的配置文件 |
objects/windows.cfg | 监控Windows 主机的一个配置文件模板,默认没有启用此文件 |
8.2 配置文件之间的关系
在nagios的配置过程中涉及到的几个定义有:主机、主机组,服务、服务组,联系人、联系人组,监控时间,监控命令等,从这些定义可以看出,nagios各个配置文件之间是互为关联,彼此引用的。
成功配置出一台nagios监控系统,必须要弄清楚每个配置文件之间依赖与被依赖的关系,最重要的有四点:
第一:定义监控哪些主机、主机组、服务和服务组;
第二:定义这个监控要用什么命令实现;
第三:定义监控的时间段;
第四:定义主机或服务出现问题时要通知的联系人和联系人组。
8.3 配置Nagios
为了能更清楚的说明问题,同时也为了维护方便,建议将nagios各个定义对象创建独立的配置文件:
创建hosts.cfg文件来定义主机和主机组
创建services.cfg文件来定义服务
用默认的contacts.cfg文件来定义联系人和联系人组
用默认的commands.cfg文件来定义命令
用默认的timeperiods.cfg来定义监控时间段
用默认的templates.cfg文件作为资源引用文件
8.3 基本配置步骤(监控本机)
# vi /usr/local/nagios/etc/objects/contacts.cfg
将其中的contact_name字段改为sxun ,此处是联系人的名称.
将其中的member字段改为sxun,该字段伟联系人组成员,其中 sxun 就是上面定义的联系人,如果有多个联系人则以逗号相隔。
# vi /usr/local/nagios/etc/cgi.cfg
将以下行改为:
default_user_name=sxun
authorized_for_system_information=nagiosadmin,sxun
authorized_for_configuration_information=nagiosadmin,sxun
authorized_for_system_commands=sxun
authorized_for_all_services=nagiosadmin,sxun
authorized_for_all_hosts=nagiosadmin,sxun
authorized_for_all_service_commands=nagiosadmin,sxun
authorized_for_all_host_commands=nagiosadmin,sxun
8.4 验证Nagios配置文件的正确性
Nagios 在验证配置文件方面做的非常到位,只需通过一个命令即可完成:
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Nagios提供的这个验证功能非常有用,在错误信息中通常会打印出错误的配置文件以及文件中的哪一行,这使得nagios的配置变得非常容易,报警信息通常是可以忽略的,因为一般那些只是建议性的。
看到上面这些信息就说明没问题了,然后启动Nagios 服务。
8.5 重启nagios
# service nagios restart
9初步查看nagios监控平台
启动完成之后,登录Nagios Web监控页http://192.168.220.132/nagios/ 查看相关信息。以下是监控本机的配置。
三、安装被监控机(客户端)
上传需要的包
检查基础支持套件
# rpm -q gcc glibc glibc-common gd gd-devel xinetd openssl-devel
可以看到gcc、gd、gd-devel、xinetd、openssl-devel没有安装。
安装缺少的套件
该命令为全部安装,已经安装过的centos会跳过。
# yum install -y gcc glibc glibc-common gd gd-devel xinetd openssl-devel
a. 增加用户&设定密码
# useradd nagios# passwd nagios
b. 安装Nagios插件
# cd ~# tar zxvf nagios-plugins-1.4.16.tar.gz
# cd nagios-plugins-1.4.16
# mkdir /usr/local/nagios
# ./configure --prefix=/usr/local/nagios
# make && make install
这一步完成后会在/usr/local/nagios/下生成三个目录include、libexec和share。
修改目录权限
# chown nagios.nagios /usr/local/nagios
# chown -R nagios.nagios /usr/local/nagios/libexec
c. 安装NRPE
# cd ~# tar zxvf nrpe-2.13.tar.gz
# cd nrpe-2.13
# ./configure
# make all
接下来安装NPRE插件,daemon和示例配置文件。
c.1 安装check_nrpe这个插件
# make install-plugin
前面装的监控主机需要安装check_nrpe
这个插件,被监控机并不需要,我们在这里安装它只是为了测试目的。
c.2 安装deamon
# make install-daemon
c.3 安装配置文件
# make install-daemon-config
原因:没有安装perl,导致./configure这一步就报错提升perl找不到的错误,yum
install perl安装perl,然后重新安装nrpe即可。
无法生成nrpe.cfg文件,导致的一步错,步步错。
解决方法就是核实第一步看看报错,是不是少了perl,如果是,执行yum install perl,再重新安装nrpe即可。
总结:每一步执行完以后检测是否有报错,如果有报错,先根据提示解决,一步一步保证没问题。
# yum install perl
重新安装nrpe(从./configire开始)
make install-daemon-config不再报错
现在再查看nagios
目录就会发现有5个目录了
按照安装文档的说明,是将NRPE deamon作为xinetd下的一个服务运行的。在这样的情况下xinetd就必须要先安装好,不过一般系统已经默认安装了。
查看是否安装
# rpm -qa | grep xinetd
d. 安装xinted脚本
# make install-xinetd可以看到创建了这个文件/etc/xinetd.d/nrpe。
编辑这个脚本:
# vi /etc/xinetd.d/nrpe
在only_from
后增加监控主机的IP地址。
编辑/etc/services
文件,在最后一行增加NRPE服务
# vi /etc/services
重启xinted
服务
# service xinetd restart
查看NRPE 是否已经启动
# netstat -an | grep 5666
可以看到5666端口已经在监听了。
e. 测试NRPE是否则正常工作
使用上面在被监控机上安装的check_nrpe这个插件测试NRPE 是否工作正常。
# /usr/local/nagios/libexec/check_nrpe -H localhost
会返回当前NRPE的版本
也就是在本地用check_nrpe连接nrpe daemon是正常的。
注:为了后面工作的顺利进行,注意本地防火墙要打开5666能让外部的监控机访问。
f. check_nrpe 命令用法
查看check_nrpe
命令用法
# /usr/local/nagios/libexec/check_nrpe –h
可以看到用法是:
check_nrpe –H被监控的主机-c要执行的监控命令
注意:-c 后面接的监控命令必须是nrpe.cfg文件中定义的。也就是NRPE daemon只运行nrpe.cfg中所定义的命令。
被监控机安装完成
回到监控的主机上
四、配置主机监控远程的主机
之前已经将Nagios运行起来了,现在要做的事情是:安装check_nrpe
插件;
在commands.cfg
中创建check_nrpe 的命令定义,因为只有在commands.cfg中定义过的命令才能在services.cfg中使用;
创建对被监控主机的监控项目;
1.安装check_nrpe插件
# cd ~# tar zxvf nrpe-2.13.tar.gz
# cd nrpe-2.13
# ./configure
# make all
# make install-plugin
只运行这一步就行了,因为只需要check_nrpe插件。
在Nagios-Linux
上我们已经装好了nrpe,现在我们测试一下监控机使用check_nrpe与被监控机运行的nrpe daemon之间的通信。
# /usr/local/nagios/libexec/check_nrpe -H 192.168.220.133
看到已经正确返回了NRPE的版本信息,说明一切正常。
2.在commands.cfg中增加对check_nrpe的定义
# vi /usr/local/nagios/etc/objects/commands.cfg在最后面增加如下内容:
# 'check_nrpe' command definition
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
-c 后面带的$ARG1$参数是传给nrpe daemon执行的检测命令,敏玲定义在nrpe.cfg中。在services.cfg中使用check_nrpe的时候要用
“!” 带上这个参数。
3.查看配置是否有问题
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg到此配置基本完成,可以开始随心所欲的监控了~
4.随心所欲的添加监控
添加一个host.cfg文件进行定义新的监控
路径:
# touch distance.cfg
# chmod 777 distance.cfg
# vi chmod 777 distance.cfg
添加如下内容:
添加监控的服务
还是写在distance.cfg中,也可以新建一个文件,不过后面都要在nagios.cfg包含。
define service{
use local-service
host_name distance-server
service_description Current Load
check_command check_nrpe!check_load
}
define service{
use local-service
host_name distance-server
service_description Check Disk sda1
check_command check_nrpe!check_sda1
}
define service{
use local-service
host_name distance-server
service_description Total Processes
check_command check_nrpe!check_total_procs
}
define service{
use local-service
host_name distance-server
service_description Current Users
check_command check_nrpe!check_users
}
define service{
use local-service
host_name distance-server
service_description Check Zombie Procs
check_command check_nrpe!check_zombie_procs
}
在nagios.cfg中包含新文件
重启nagios
# service nagios restart
五、查看效果
按F5刷新一下网页,第一次添加的监控项需要等待下一次刷新,暂时标记为N/A。刷新完毕后:
至此,远程的服务可以监控了,nagios搭建完毕。
六、配置邮箱
1.安装sendmail
(minimal版本默认没有安装,完全版有)# yum -y install sendmail
# /etc/init.d/sendmail start
# chkconfig sendmail on
# yum -y install mailx
# yum -y install jwhois
2.设置代理邮箱
进入代理的邮箱,做如下设置:(此处为163邮箱)3.编辑mail配置文件(/etc/mail.rc)
# vi /etc/mail.rc在最后面加入如下内容:
set from=fromUser@domain.com (代理的邮箱)
smtp=smtp.domain.comset(smtp服务器)
smtp-auth-user=username(邮箱)
smtp-auth-password=passwordset (密码)
smtp-auth=login
# /etc/init.d/sendmail restart
4.测试邮箱
因为邮箱都有垃圾邮件屏蔽的功能,此处的测试为只发逗号(可能失败,但是目前屡试不爽):# echo “,” | mail -s “,” ********@******.cn
如果为垃圾邮件,则返回:
5.编辑nagios配置文件
# vi /usr/local/nagios/etc/objects/contacts.cfg修改邮箱
# vi /usr/local/nagios/etc/objects/templates.cfg
修改为使用邮箱通知:
设置为五分钟检查一次,发现错误后变为1分钟,四次检查为错误时才确定通知:
6.重启nagios
# service nagios restart邮箱收到的提醒示例:(有时候会被放入垃圾邮箱或直接拒收)
七、参考资料链接
配置文件参考资料:http://www.cnblogs.com/mchina/archive/2013/02/20/2883404.html
Centos6.5minimal版64位iso下载链接:
http://www.centoscn.com/plus/download.php?open=2&id=2196&uhash=2af220a6805385dda088ff03
相关文章推荐
- 用qemu搭建CentOS 6 for colinux虚拟系统——《Windows下搭建CentOS 6开发环境之一》
- centos5.5 搭建 zabbix1.8.5系统环境实现网络状况监控
- centos系统使用yum快速搭建lamp环境
- Centos系统下Lamp环境的快速搭建(超详细)
- centos6.3 最小安装系统下快速搭建环境
- 基于Centos 6.5+MariaDB+loganalyzer+syslog搭建远程系统日志收集和分析环境
- WMware 中CentOS系统Hadoop 分布式环境搭建(一)——Hadoop安装环境准备
- Centos 6.5系统lnmp环境搭建zabbix2.4
- Linux\CentOS系统下的服务器搭建,下载编译环境,安装vsFtpd、nginx、MySQL、JDK、Tomcat、PHP
- 搭建基于nginx环境的nagios监控系统 推荐
- 【Android】 - CentOS6.5 系统搭建 Android 开发环境
- windows7 64位系统安装VMware Centos 64位系统搭建开发环境
- centos 6.3 最小安装系统下快速搭建环境步骤分享
- Android系统开发环境搭建(基于CentOS) -- 1
- 搭建基于nginx环境的nagios监控系统
- Linux(CentOS6.0)系统搭建Qt5.2开发环境
- centos系统常用软件环境搭建
- [原创]搭建最低价的root权限的系统管理员练手环境:PC+ADSL
- 在阿里云centos6.5系统上用docker搭建php环境的失败过程