软件系统项目离不开运维工具,以前学习过zabbix也进行了实践搭建与使用,最近接触了nagios,相比zabbix比较简单容易上手,基本的运维功能也能使用,因此综合线上各位前辈的资料等进行了学习,也进行了实际的搭建部署与配置,成功实现用nagios对相关系统服务的监控运维。以此为基础,于此汇总记录相关理论原理介绍以及实际搭建部署配置过程,以便后续的持续深入学习以及为后来者提供参考借鉴,文中不免疏漏之处,望读者予以指正,不胜感激!

1. 基本介绍

1.1 基本介绍

Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设备,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。

Nagios是一个监视系统运行状态和网络信息的监视系统。Nagios能监视所指定的本地或远程主机以及服务,同时提供异常通知功能等。
Nagios可运行在Linux/Unix平台之上,同时提供一个可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态,各种系统问题,以及日志等等。

1.2 主要功能

Nagios 可以监控的功能有:
1、监控网络服务(SMTP、POP3、HTTP、NNTP、PING等);
2、监控主机资源(处理器负荷、磁盘利用率等);
3、简单地插件设计使得用户可以方便地扩展自己服务的检测方法;
4、并行服务检查机制;
5、具备定义网络分层结构的能力,用"parent"主机定义来表达网络主机间的关系,这种关系可被用来发现和明晰主机宕机或不可达状态;
6、当服务或主机问题产生与解决时将告警发送给联系人(通过EMail、短信、用户定义方式);
7、可以定义一些处理程序,使之能够在服务或者主机发生故障时起到预防作用;
8、自动的日志滚动功能;
9、可以支持并实现对主机的冗余监控;
10、可选的WEB界面用于查看当前的网络状态、通知和故障历史、日志文件等;
11、可以通过手机查看系统监控信息;
12、可指定自定义的事件处理控制器;

2. 监控原理

  1. Nagios监控原理
Nagios的功能是监控服务和主机,但是他自身并不包括这部分功能,
所有的监控、检测功能都是通过各种插件来完成的。
  1. Nagios监控架构
Nagios结构主要由Nagios core、Nagios-plugins和一些可选的Addon(NRPE,NSCA,NDOUtils等等)组成,
实际生产中,Nagios core提供的监控功能远不能满足需求,要想搭建一个完善的IT监控管理系统,需要在Nagios监控端与被监控端安装相应功能的Addon,
下载地址http://www.nagios.org/,也可根据实际需求编写所需的插件。
一般情况下,Nagios监控端部署于独立的一台服务器(Linux或Unix操作系统),
包括至少Nagios core,Nagios Plugins以及可选的NRPE,NSCA等Addon。
被监控端:Linux系统下,需安装Nagios plugins与可选NRPE、NSCA等Addon;windows下,安装NSClient++即可。
  1. 常见插件介绍
几个常用的Addon如下: 
1.NRPE:允许在被监控的远程Linux/UNIX主机上执行插件以实现对主机本地资源或属性的监控; 
2.NSCA:该插件将远程Linux/Unix主机的被动检查结果发送到在监控端运行的Nagios守护程序; 
3.NSClient++:它是Windows系统的监视代理程序/守护程序,它是NSClient和NRPE_NT的替代品; 
4.NDOUtils:实现将Nagios中的所有状态信息存储在MySQL数据库中。
  1. 四种监控返回结果
Nagios可以识别4种状态返回信息,
即 0(OK)表示状态正常/绿色、1(WARNING)表示出现警告/×××、2(CRITICAL)表示出现非常严重的错误/红色、3(UNKNOWN)表示未知错误/深×××。
Nagios根据插件返回来的值,来判断监控对象的状态,并通过web显示出来,以供管理员及时发现故障。
  1. 监控过程
启动Nagios后,它会周期性的自动调用插件去检测服务器状态,同时Nagios会维持一个队列,所有插件返回来的状态信息都进入队列,Nagios每次都从队首开始读取信息,并进行处理后,把状态结果通过web显示出来。
Nagios提供了许多插件,利用这些插件可以方便的监控很多服务状态。安装完成后,在nagios主目录下的/libexec里放有nagios自带的可以使用的所有插件,如,check_disk是检查磁盘空间的插件,check_load是检查CPU负载的,等等。每一个插件可以通过运行./check_xxx –h 来查看其使用方法和功能。
  1. Nagios 通过NRPE 监控远端管理服务过程
Nagios 执行安装在它里面的check_nrpe 插件,并告诉check_nrpe 去检测哪些服务。
通过SSL,check_nrpe 连接远端机子上的NRPE daemon
NRPE 运行本地的各种插件去检测本地的服务和状态(check_disk,…etc)
最后,NRPE 把检测的结果传给主机端的check_nrpe,check_nrpe 再把结果送到Nagios状态队列中。
Nagios 依次读取队列中的信息,再把结果显示出来。

在这里插入图片描述

在这里插入图片描述

3. 监控端安装部署

nagios监控端安装nagios、LAP、nagios-plugins、nrpe等
nagios被监控端安装nagios-plugin、nrpe.

3.1 安装环境、安装版本

部署Nagios所需的软件:

LAP(Linux + Apache + PHP)
nagios-3.5.1.tar                //Nagios的核心文件,Nagios服务文件,选择稳定版就好,最新版的很多插件用不了
nagios-plugins-2.1.1.tar        //Nagios插件,用于各种脚本和命令
nrpe-2.15.tar                   //代理服务,用户监控非Nagios服务器的服务器本地私有信息代理
NSCP-0.4.3.143-x64              //Nsclient++,用于监控Windows,分32位和64位
pnp4nagios-0.6.25.tar           //非必需,用于结合nagios出图
vautour_style                   //nagios主题

监控机上安装Nagios core、Nagios-plugins等软件,对监控的数据做处理,并且提供web界面查看和管理。当然也可以对监控机本身的信息进行监控。
在被监控机上安装Nagios-plugins和NRPE等软件,根据监控机的请求执行监控,然后将结果传给监控机。

3.2 安装步骤

3.2.1 安装apache和php

1)安装依赖

yum install -y gcc gcc-c++ glibc glibc-common php gd gd-devel libpng libmng libjpeg zlib

2)YUM方式安装apache和Php

yum install -y httpd php

启动httpd服务并测试PHP是否可用

service httpd start
elinks 192.168.109.140 --dump >> php_out.txt
echo $?
less php_out.txt

显示出PHP的相关信息,即说明PHP正常
设置开机启动

chkconfig httpd on

3.2.2 安装nagios

1)添加nagios运行用户

groupadd nagcmd
usermod -G nagcmd apache
useradd nagios -G nagcmd

2)下载nagios安装包

https://www.nagios.org/downloads/nagios-core/thanks/?skip=1&product_download=nagioscore-source
nagios        
pnp4nagios
nagios-plugins
 vautour_style.zip
Nrpe

3)解压:

tar -xf nagios-4.4.7.tar.gz
tar -xf nagios-plugins-2.3.3.tar.gz
tar -xf nrpe-4.0.2.tar.gz
unzip -d vautour_style vautour_style.zip

4)安装nagios
进入nagios路径

./configure --with-command-group=nagcmd 
make all
make install 
make install-init 
make install-commandmode 
make install-config 
make install-webconf
//make install	安装生成/usr/local/nagios/,其中/usr/local/nagios/share即nagiosWEB访问界面的站点目录
//make install-init                安装生成/etc/rc.d/init.d/nagios  启动脚本                                
//make install-config            安装生成/usr/local/nagios/etc下的nagios相关配置文件                    
//make install-commandmode    设定相应nagios工作目录的权限
//make install-webconf            安装Nagios的WEB配置文件到Apache的conf.d目录下

设置开机启动

chkconfig nagios on

到此时,安装过程就结束了
5)目录说明

ls /usr/local/nagios/
bin       //nagios执行程序所在的目录
etc       //nagios配置文件所在目录,初始安装完成后,只有几个.cfg文件,
libexec  //监控所用命令,需要安装nagios-plugins插件才会有,检测命令,不装是空的
sbin    //Nagios的cgi文件所在目录,外部命令所需的文件存放目录
share  //nagiosde 前端页面
var     //日志文件,pid(进程)文件等等。

6)创建web登录用户
创建一个登陆nagios web程序的用户

htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
service httpd restart  //重启httpd服务测试刚才创建的nagios用户是否可以登录。

访问界面,输入用户名和密码,登录
在这里插入图片描述
在这里插入图片描述

3.2.3 安装nagios-plugins插件

1)安装依赖和创建用户

yum install -y gcc gcc-c++ glibc glibc-common php gd gd-devel libpng libmng libjpeg
useradd nagios
mkdir /usr/local/nagios
chown nagios.nagios /usr/local/nagios

2)nagios-plugins插件编译安装

cd nagios-plugins-2.3.3
./configure --with-nagios-user=nagios --with-nagios-group=nagcmd --with-openssl –prefix=/usr/local/nagios
make
make install

2)重启nagios和httpd服务

systemctl restart nagios
systemctl restart httpd

3.2.4 安装nrpe

1)编译安装nrpe

yum -y install gc gcc openssl* openssl-devel xinetd
安装nrpe(为了监控远程服务器):
#tar zxf nrpe-4.0.2.tar.gz
#cd nrpe-4.0.2
#./configure
#make all && make install-plugin

make all
make install
make install-plugin
make install-daemon
make install-config
make install-inetd
make install-init

2)修改配置文件

vi /usr/local/nagios/etc/nrpe.cfg

在配置文件中找到

allowed_hosts=127.0.0.1

启动服务

systemctl start nrpe

设置开机启动

systemctl enable nrpe

使用check_nrpe插件进行测试,我们按装的check_nrpe及其它nagios插件都安装在/usr/local/nagios/libexec目录下,进入此目录执行

./check_nrpe -H 127.0.0.1
NRPE v3.0.1

正确显示版本号表示安装成功

4. 被监控端安装

4.1 安装nagios-plugin

1)安装依赖和创建用户

yum install -y gcc gcc-c++ glibc glibc-common php gd gd-devel libpng libmng libjpeg
useradd nagios
mkdir /usr/local/nagios
chown nagios.nagios /usr/local/nagios

2)nagios-plugins插件编译安装

cd nagios-plugins-2.3.3
./configure --with-nagios-user=nagios --with-nagios-group=nagcmd --with-openssl –prefix=/usr/local/nagios
make
make install

4.2 安装nrpe

1)编译安装
解压下载的nrpe 3.0源码包

tar zxvf nrpe-3.0.1.tar
cd nrpe-3.0.1
./configure
make all
make install
make install-plugin
make install-daemon
make install-config
make install-inetd
make install-init

2)调整配置

vi /usr/local/nagios/etc/nrpe.cfg
allowed_hosts=192.168.109.138
启动服务
systemctl start nrpe
设置开机启动
systemctl enable nrpe

在监控服务端使用check_nrpe插件进行测试,我们按装的check_nrpe及其它nagios插件都安装在/usr/local/nagios/libexec目录下,进入此目录执行

./check_nrpe -H 192.168.109.138
NRPE v3.0.1

正确显示版本号表示安装成功
在这里插入图片描述

5. 基本配置

5.1 服务端配置

5.1.1 配置文件说明

nagios.cfg:Nagios 主配置文件
resource.cfg:变量定义文件,又称为资源文件,在些文件中定义变量,以便由其他配置文件引用,如$USER1$,好吧,其实就就是全局变量
cgi.cfg:控制CGI访问的配置文件,如何新加了cgi配置文件,需要在这里增加

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 主机的一个配置文件模板,默认没有启用此文件

5.1.2 定义监控命令

commands.cfg 增加以下内容
通过NPRE监控远程Linux主机要使用check_nrpe插件进行,其语法格式如下:

check_nrpe -H <host> [-n] [-u] [-p <port>] [-t <timeout>] [-c <command>] [-a <arglist...>]
define command {
     command_name check_nrpe
     command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

5.1.3 新增加host监控配置

1)在 etc目录下,新建servers文件夹,新建host配置文件

mkdir servers
cd servers
vi host1.cfg
监控主机配置
define host {
        use                             linux-server
        host_name                       138
        alias                           My first Apache server
        address                         192.168.109.138
        check_interval                  3
        max_check_attempts              3
        check_period                    24x7
        notification_interval           10
        notification_period             24x7
        contact_groups                  admins
}

nagios.cfg打开配置

cfg_dir=/usr/local/nagios/etc/servers

5.2 客户端配置nrpe

修改配置文件:

vi /usr/local/nagios/etc/nrpe.cfg

在配置文件中找到

allowed_hosts=127.0.0.1

这行表示允许本地访问。这里是客户端,需要允许服务器端访问,我们需要在这行下面再添加一行

allowed_hosts=192.168.1.8

设置nagios服务器的的ip。

6. 发送邮件配置

6.1 sendmail发送邮件安装配置

1)安装sendmail

yum install sendmail* mailx -y

2)配置发送信息

vi /etc/mail.rc
###################################################
set from=*********@qq.com		         qq
set smtp=smtp.qq.com
set smtp-auth-user=*********@qq.com		qq
set smtp-auth-password=*********		qq的stmp授权码
set smtp-auth=login
##################################################

3)重启

systemctl restart sendmail

6.2 配置host监控邮件发送命令

command.cfg 命令配置调整

define command{
     command_name    notify-host-by-email
     command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
}

6.3 配置contact联系人

contacts.cfg联系人配置接收人邮箱

define contact {
    contact_name            nagiosadmin             ; Short name of user
    use                     generic-contact         ; Inherit default values from generic-contact template (defined above)
    alias                   Nagios Admin            ; Full name of user
    email                   *******@qq.com        ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
}

并增加到contact_groups配置中

servers下配置文件中对于host和service配置增加配置

contact_groups                  admins

重启nagios

systemctl restart nagios

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7. 参考资料

http://www.nagioschina.com/
https://blog.51cto.com/u_437549/2316512

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐