Nagios监控之一:Nagios介绍及服务端安装

一.Nagios介绍 

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

  Nagios 是采用分布-集中的管理模式。在Nagios服务器上安装Nagios 主程序和插件程序,在被监控主机上安装Nagios 代理程序。通过Nagios 主程序和Nagios 代理程序之间的通讯,监视对象的状态。

1) 能够监控网络服务和主机资源(SMTP、POP3、HTTP、FTP、SSH 、CPU load、disk usage、system logs)
2) 允许用户开发简单的自己需要的检查服务,支持很多开发语言(shell scripts、C++、Perl、ruby、Python、PHP、C#等),可以指定自己编写的Plugin通过网络收集数据来监控任何情况(温度、警告……)
3) 可以通过配置Nagios远程执行插件远程执行脚本,事先定义事件处理程序, 当对象出现问题时,自动调用对应的处理程序;
4) 可并行服务检查
5) 可以支持并实现对主机的冗余监控
6) 自动日志循环
7) 包括Web界面可以查看当前网络状态,通知,问题历史,日志文件等

二.Nagios的工作原理

Nagios的功能是监控服务和主机,但是他自身并不包括这部分功能,所有的监控、检测功能都是通过各种插件来完成的。

1) 启动Nagios后,它会周期性的自动调用插件去检测服务器状态,同时Nagios会维持一个队列, Nagios 执行安装在它里面的check_nrpe 插件,并告诉check_nrpe 去检测哪些服务;

2) 通过SSL,check_ nrpe 连接远端机子上的NRPE daemon;

3) NRPE 运行本地的各种插件去检测本地的服务和状态( check_disk,check_load 等) ,利用这些插件可以方便的监控很多服务状态,check_disk是检查磁盘空间的插件,check_load是检查CPU负载的,等等。每一个插件可以通过运行./check_xxx –h 来查看其使用方法和功能;

4) 最后,NRPE 把检测的结果传给主机端的check_nrpe,check_nrpe 再把结果送到Nagios 状态队列中,所有插件返回来的状态信息都进入队列;
5) Nagios每次都从队首开始读取信息,并进行处理后,把状态结果通过web显示出来。
 
Nagios可以识别4种状态返回信息,即 0(OK)表示状态正常/绿色、1(WARNING)表示出现警告/黄色、2(CRITICAL)表示出现非常严重的错误/红色、3(UNKNOWN)表示未知错误/深黄色。Nagios根据插件返回来的值,来判断监控对象的状态,并通过web显示出来,以供管理员及时发现故障。

三.Nagios监控系统家族成员的构成

 

Nagios监控一般由一个主程序(Nagios),一个插件程序(Nagios-plugins)和一些可选的程序(NRPE,NSClient++,NSCA和NDOUtils)等
Nagios本身就是一个监控平台而已,其具体的监控工作都是通过插件(Nagios-plugins,也可以自己编写)来实现的,因此,Nagios主程序
和Nagios-plugins插件都是Nagios服务端必须要安装的程序组件,Nagios-plugins一般也要安装于被监控端。几个附件程序的描述如下:
  1.NRPE:半被动模式
    存在位置:NRPE软件工作于被监控端,操作系统linux/unix系统
    NRPE作用:用于在被监控的远程Linux/Unix主机上执行脚本插件获取数据回传给服务器端,以实现对这些主机资源的监控。
    存在形式:守护进程(agent)模式,开启的端口5666
  2.NSClient++:半被动模式
    存在位置:用于被监控端为windows系统的服务器
    作用:功能相当于linux下的NRPE
    用于监控window主机时,安装在windows主机上的组件
 3.NDOUtils(不推荐用)
    存在位置:NDOUtils工作与nagios服务器端
    作用:用于将Nagios的配置信息和各event产生的数据存入数据库以实现对这些数据进行检索和处理
 4.NSCA:纯被动模式的监控
    位置:NSCA需要同时安装在nagios的服务器端和客户端
    作用:用于让被监控的远程linux/unix主机主动将监控到的信息发送到Nagios服务器


四.Nagios服务端安装


nagios程序安装目录:/usr/local/Nagios

1.配置yum源

echo “-----step 1:configure yum source----- ”

cd /etc/yum.repo.d/

wget -O /etc/yum.repo.d/Centos-Base.repo  http://mirrors.aliyum.com/repo/Centos-6.repo

2.配置语言环境

echo "-----step 2:configure language-----"

echo "export LC_ALL=C" >> /etc/profile

source /etc/profile

3.停用防火墙和selinux

echo "------step 3: configure iptables and selinux-----"

/etc/init.d/iptables stop

chkconfig iptables off

setenforce 0

sed -i 's#selinux=enforing#selinux=disabled#g' /etc/selinux/config

4.时间同步

echo "-----configure time sync-----"

/usr/sbin/ntpdate pool.ntp.org
echo '#time sync by jack at 2018-2-1'>>/var/spool/cron/root
echo '*/10 * * * * /usr/sbin/ntpdate pool.ntp.org >/dev/null 2>&1'>>/var/spool/cron/root
crontab -l

5.安装lamp环境

echo "-----step 5:install lamp environment-----"

yum install gcc glibc glibc-common -y

yum install gd gd-devel -y

yum install httpd php php-gd -y
yum install mysql* -y

6.添加nagios用户和管理组

echo "-----step 6:add Nagios user and group-----"

/usr/sbin/useradd -m nagios
#/usr/sbin/useradd apache
/usr/sbin/groupadd nagcmd
/usr/sbin/usermod -a -G nagcmd nagios
/usr/sbin/usermod -a -G nagcmd apache

7、安装Nagios主服务软件
echo "------ step 7: download and install master Nagios service ------"
[ ! -f oldboy_training_nagios_soft.zip ] && exit 1
unzip oldboy_training_nagios_soft.zip 
tar xzf nagios-3.5.1.tar.gz
cd nagios
./configure --with-command-group=nagcmd
make all
make install
make install-init
make install-config
make install-commandmode
make install-webconf
cd ../
echo "------ step 8: config web auth------"
htpasswd -cb /usr/local/nagios/etc/htpasswd.users jack jack


9、安装插件
echo "------ step 9: install nagios-plugins------"
yum -y install perl-devel
tar zxf nagios-plugins-1.4.16.tar.gz
cd nagios-plugins-1.4.16
./configure --with-nagios-user=nagios --with-nagios-group=nagios --enable-perl-modules
make && make install
cd ../
ls /usr/local/nagios/libexec/|wc -l

报错:
check_http.c:312: error: ‘ssl_version’ undeclared (first use in this function)
check_http.c:312: error: (Each undeclared identifier is reported>

解决办法:
yum install -y openssl*

echo "------ step 10: install nrpe------"
tar zxvf nrpe-2.12.tar.gz
cd nrpe-2.12
./configure 
make all
make install-plugin
make install-daemon
make install-daemon-config
cd ..

10、启动nagios和apache
echo "------ step 11: startup service and check------"
/etc/init.d/nagios start
/etc/init.d/httpd start
echo -----------
lsof -i tcp:80
echo ----------
ps -ef|grep nagios
echo "NAGIOS is successfully installed."

echo ok

在浏览器中输入IP/nagios即可进入nagios页面