监控对于对于系统管理人员的日常运维工作来说是非常重要的,而比较知名的开源监控软件有Ganglia、Cacti、Nagios、Zabbix等等,而本次就简单的说下Nagios的安装部署,因为Nagios是基于web页面查看管理的,那可以选用lamp或者是lnmp这些比较容易实现的web系统框架来实现即可,Nagios的官网是:https://www.nagios.org/downloads/,当然下载版本建议用最新的稳定版。Nagios的监控实现是由各个插件来完成的它本身是没有监控功能的,所以Nagios使用非常灵活,而在需要监控不同的平台主机、硬件时用不同的插件,下面从网页上找的一张图能很好的说明:
从图中得知Nagios监控中的插件SNMP在不同平台的主机、硬件上都有用到,而Linux中有send-nsca和NRPE一般我们常用的是NRPE,监听的是tcp的5666端口;而在Windows主机上使用的是NSClient++,监听的是12489和5666端口,这一点很重要做为被监控的主机上一定要开放这些端口。
在安装Nagios之前需要先安装Nagios的监控主机(server端),然后再到被监控主机(clinet端)上安装相应的插件。
1、server端:
在安装之前先要检查依赖包
[[email protected] ~]# yum -y groupinstall "Development Tools" "Development Libraries"#在配置好yum源的主机上,先检查下开发包组是否安装 [[email protected] ~]# yum -y install httpd php php-mysql gd gd-devel sendmail openssl-devel#这里是测试就没有用编译包的php和apache,一般来说建议使用编译包
在依赖关系解决后就开始正常的Nagios安装,先安装Nagios的核心引擎和web页面
[[email protected] ~]# groupadd -r nagcmd#添加nagcmd组 [[email protected] ~]# useradd -M -G nagcmd -r -s /sbin/nologin nagios [[email protected] ~]# passwd nagios [[email protected] ~]# usermod -a -G nagcmd apache#把nagcmd组附属在apache组 [[email protected] ~]# cd /usr/local/src/nagios-4.3.1 [[email protected] nagios-4.3.1]# ./configure --sysconfdir=/etc/nagios --prefix=/usr/local/nagios --with-command-group=nagcmd --enable-event-broker [[email protected] nagios-4.3.1]# make all && make install [[email protected] nagios-4.3.1]# make install-init && make install-commandmode && make install-config#添加相应的插件 [[email protected] nagios-4.3.1]# vim /etc/nagios/objects/contacts.cfg#修改邮件接收人的配置文件,在此就不做过多的说明,配置文件的注释里都有,主要改的就是邮箱地址 [[email protected] nagios-4.3.1]# make install-webconf#配置web配置文件 [[email protected] nagios-4.3.1]# htpasswd -c /etc/nagios/htpasswd.users nagiosadmin#配置Nagios的页面密码 New password: Re-type new password: Adding password for user nagiosadmin
到此nagios的核心引擎和基本web页面就已经安装完毕,在此直接启动httpd后使用浏览器测试下
此时的Nagios是不具备任何监控功能,因为这台Nagios主机是Linux服务器,所以监控插件在这里选比较常用的nrpe,在安装nrpe之前要先安装好Nagios的插件plugins
[[email protected] nagios-4.3.1]# cd ../nagios-plugins-2.1.4 [[email protected] nagios-plugins-2.1.4]# ./configure --with-nagios-user=nagios --with-nagios-group=nagios [[email protected] nagios-plugins-2.1.4]# make && make install [[email protected] nagios-plugins-2.1.4]# chkconfig --add nagios#添加Nagios的服务 [[email protected] nagios-plugins-2.1.4]# chkconfig nagios on#Nagios开机自启动 [[email protected] nagios-plugins-2.1.4]# /etc/init.d/nagios start [[email protected] nagios-plugins-2.1.4]# getenforce#此处要注意的是要检查是否服务器上有开启selinux,如果有开启要选择关闭吧或者在selinux中添加nagios的相应文件到可以执行的标签中 Enforcing [[email protected] nagios-plugins-2.1.4]# chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/ [[email protected] nagios-plugins-2.1.4]# chcon -R -t httpd_sys_content_t /usr/local/nagios/share/
此时在server端上的Nagios的插件就已经安装完毕,此时便可以安装Nagios的nrpe插件
[[email protected] nagios-plugins-2.1.4]# cd ../nrpe-3.0.1/ [[email protected] nrpe-3.0.1]# ./configure --with-nrpe-user=nagios --with-nrpe-group=nagios --with-nagios-user=nagios --with-nagios-group=nagios --enable-command-args --enable-ssl --sysconfdir=/etc/nagios [[email protected] nrpe-3.0.1]# make all && make install-plugin
这样在server端上的Nagios就已经安装部署完毕,此时Nagios已经可以自行监控本机。
2、clinet端:
此处的客户端为了快速简单的部署实现,在这里就用另外一台Linux服务器来搭建。同理,在Nagios的client端下也要添加相应的用户。当然,也要先安装好Nagios的插件
[[email protected] ~]# useradd -M -r -s /sbin/nologin nagios [[email protected] ~]# cd /usr/local/src/ [[email protected] src]# cd nagios-plugins-2.1.4 [[email protected] nagios-plugins-2.1.4]# ./configure --with-nagios-user=nagios --with-nagios-group=nagios [[email protected] nagios-plugins-2.1.4]# make all && make install
在插件安装完毕后开始安装nrpe
[[email protected] nagios-plugins-2.1.4]# cd ../nrpe-3.0.1/ [[email protected] nrpe-3.0.1]# ./configure --with-nrpe-user=nagios --with-nrpe-group=nagios --with-nagios-user=nagios --with-nagios-group=nagios --enable-command-args --enable-ssl --sysconfdir=/etc/nagios [[email protected] nrpe-3.0.1]# make all && make install-plugin [[email protected] nrpe-3.0.1]# make install-daemon && make install-config && make install-init && make install-inet
到这里Nagios的nrpe部分就安装结束了,以下做一些基本配置
[[email protected] nrpe-3.0.1]# vim /etc/nagios/nrpe.cfg …略… allowed_hosts=192.168.218.128 #在这里的ip改成server端的Nagios的监听ip …略… command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/hda1 #此处根据磁盘的实际使用的盘符情况修改 …略… [[email protected] nrpe-3.0.1]# /etc/init.d/nrpe start
在安装好后做一些基本的验证,这里要注意的是这些验证需要在监控server主机上做,被监控主机需要开启5666端口
[[email protected] nrpe-3.0.1]# cd /usr/local/nagios/libexec/ [[email protected] libexec]# ./check_nrpe -H 192.168.218.129#检查被监控主机的IP,这样有打印出版本号就是正常的 NRPE v3.0.1
这样Nagios的安装就完成了,而Nagios的家目录或文件的含义也很简单,如下:
目录 | 解释 |
---|---|
bin | Nagios的二进制文件的目录 |
sbin | Nagios CGI 文件所在目录,也就是执行外部命令所需文件所在的目录 |
share | Nagios网页文件所在的目录,建议这里去找一下中文的资料便于查阅 |
libexec | Nagios 外部插件所在目录 |
var | Nagios 日志文件、lock 等文件所在的目录 |
var/archives | Nagios 日志自动归档目录 |
var/rw | 用来存放外部命令文件的目录 |
当然我这里是指定Nagios的配置文件路径在/etc/nagios路径下,如果没有指定的话默认缺省是在Nagios的家目录下,而配置的一些文件或目录的含义也很简单,关系如下:
文件名或目录名 | 用途 |
---|---|
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 主机的一个配置文件模板,默认没有启用此文件 |
在此时Nagios还是不能用的还有一些基础配置需要修改才能正常的使用,在server端进入sysconfigdir目录,先要根据实际情况修改一下commandss.cfg文件,添加以下内容:
[[email protected] nagios]# vim objects/commands.cfg define command{ command_name check_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ }
在Nagios的默认配置文件下是没有Linux的配置文件所以如果是用于监控Linux主机,需要自行定义写配置文件,在此就用简单的写了一个Linux下使用的模板:
[[email protected] nagios]# vim objects/linux.cfg define host{ use linux-server host_name linuxhost alias My linux Server address 192.168.218.129 ;这里填被监控主机的IP } define service{ use generic-service host_name linuxhost service_description CHECK_USERS check_command check_nrpe!check_users } define service{ use generic-service host_name linuxhost service_description CHECK_LOAD check_command check_nrpe!check_load } define service{ use generic-service host_name linuxhost service_description CHECK_SDA1 check_command check_nrpe!check_sda1 } define service{ use generic-service host_name linuxhost service_description CHECK_ZOMBIE_PROCS check_command check_nrpe!check_zombie_procs } define service{ use generic-service host_name linuxhost service_description CHECK_TOTAL_PROCS check_command check_nrpe!check_total_procs } [[email protected] nagios]# chown nagios:nagios linux.cfg#修改下配置文件的属组
在linux.cfg配置文件修改好后还需要 在nagios.cfg添加环境变量:
[[email protected] nagios]# vim nagios.cfg …略… cfg_file=/etc/nagios/objects/linux.cfg …略…
正在修改后可以用Nagios的配置文件验证检查
[[email protected] nagios]# /usr/local/nagios/bin/nagios -v /etc/nagios/nagios.cfg Nagios Core 4.3.1 Copyright (c) 2009-present Nagios Core Development Team and Community Contributors Copyright (c) 1999-2009 Ethan Galstad Last Modified: 02-23-2017 License: GPL Website: https://www.nagios.org Reading configuration data... Read main config file okay... Read object config files okay... Running pre-flight check on configuration data... Checking objects... Checked 13 services. Checked 2 hosts. Checked 1 host groups. Checked 0 service groups. Checked 1 contacts. Checked 1 contact groups. Checked 25 commands. Checked 5 time periods. Checked 0 host escalations. Checked 0 service escalations. Checking for circular paths... Checked 2 hosts Checked 0 service dependencies Checked 0 host dependencies Checked 5 timeperiods Checking global event handlers... Checking obsessive compulsive processor commands... Checking misc settings... Total Warnings: 0 Total Errors: 0 Things look okay - No serious problems were detected during the pre-flight check [[email protected] nagios]# /etc/init.d/nagios restart
像这样就是没有报错的,再重启下Nagios就可以了,这样基本的Nagios的安装就完毕了,这里需要注意的是在Nagios的server端需要开启80、443端口用于Web管理页面的正常浏览,当然这也是一些基本的配置部署,如果要实现更多的功能还需要进一步的修改配置文件。