Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。php
Nagios原名为NetSaint,由Ethan Galstad开发并维护至今。NAGIOS是一个缩写形式: "Nagios Ain't Gonna Insist On Sainthood" Sainthood 翻译为圣徒,而"Agios"是"saint"的希腊表示方法。Nagios被开发在Linux下使用,但在Unix下也工做得很是好。linux
主要功能ios
2、Nagios工做原理web
Nagios的功能是监控服务和主机,但自身并无该功能,全部的监控、检测功能都是经过插件来完成。sql
Nagios周期性调用插件检测服务器状态,并维持一个队列,全部插件返回状态信息都进入队列,Nagios每次从队首开始读取信息,并把状态经过web显示。shell
Nagios提供了许多插件,利用这些插件能够监控服务状态。安装完成后,在nagios主目录下/libexec放有nagios自带全部插件,如check_disk检查磁盘空间插件,check_load检查CPU负载等等。每个插件可运行./check_xxx –h 查看其使用方法和功能。apache
Nagios可识别4种状态返回信息,即ruby
Nagios根据插件返回值判断监控对象状态,并经过web显示。服务器
四种监控状态网络
Nagios 自身没有报警代码,甚至无插件,交给用户或者其余相关开源项目组去完成。
Nagios基本上无依赖包,只要求系统是Linux或者其余Nagios支持的系统。安装apache可提供web页面访问。
Nagios如何管理远端服务器对象?
Nagios 系统提供了一个插件NRPE。经过周期性运行得到远端服务器状态信息。它们之间关系以下:
Nagios 经过NRPE 来远端管理服务
本文 从官网获取Nagios源码包进行编译,须要编译环境,同时 Nagios 的Web界面须要有 Web 服务器和 PHP 运行环境。本文 Web 服务器使用 Apache,用户也能够自行选择使用其余 Web 服务器,如Nginx等。
如下命令均在root下进行:
yum install httpd php yum install gcc glibc glibc-common unzip yum install gd gd-devel
建立 nagios 用户并设置密码
/usr/sbin/useradd -m nagios passwd nagios
建立 nagcmd 用户组,将 nagios 和 apache(web 服务器的运行用户) 用户添加至该组
/usr/sbin/groupadd nagcmd
/usr/sbin/usermod -a -G nagcmd nagios /usr/sbin/usermod -a -G nagcmd apache
能够前往 https://www.nagios.org 获取最新的软件包,这里以 Nagios 核心 4.2.1,以及插件 2.1.2 为例:
wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.2.1.tar.gz wget https://nagios-plugins.org/download/nagios-plugins-2.1.2.tar.gz
解压源码包
tar -zxvf nagios-4.2.1.tar.gz cd nagios-4.2.1
编译配置信息(如下命令切换到目录.../nagios-4.2.1下执行)
./configure --with-command-group=nagcmd
编译
make all
安装 Nagios,并初始化脚本及基础配置文件
make install make install-init make install-config make install-commandmode
此时先不用启动 Nagios,安装步骤还没有完成
配置文件在目录 /usr/local/nagios/etc
下,经过这些基础配置信息能够直接启动 Nagios,如今惟一须要更改的是联系人信息,能够编辑 /usr/local/nagios/etc/objects/contacts.cfg
,将联系人邮件地址换成你本身的。
vi /usr/local/nagios/etc/objects/contacts.cfg
建立 Apache 的配置文件,配置文件在目录 /etc/httpd/conf.d/
make install-webconf
为 Nagios 的 Web 界面建立 nagiosadmin
用户,并设置密码。
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
启动 Apache
systemctl start httpd
Nagios 实际的监控脚本都是经过插件实现的,本文中的插件包是官方提供插件包(大约50个用于监控的插件),更多的插件能够去社区下载(https://exchange.nagios.org/),固然也能够本身编写插件。
解压插件包
tar -zxvf nagios-plugins-2.1.2.tar.gz cd nagios-plugins-2.1.2
编译并安装(如下命令切换到
nagios-plugins-2.1.2目录下执行)
./configure --with-nagios-user=nagios --with-nagios-group=nagios make make install
将 Nagios 核心加入自动启动列表
chkconfig --add nagios chkconfig nagios on
检查 Nagios 基础配置文件(在以后修改过配置文件后,均可以用下边的方式进行检查)
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
切换目录到安装路径(这里是/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 | 用来存放外部命令文件的目录 |
若是没有错误,就能够直接启动 Nagios
systemctl start nagios
查看nagios是否启动
systemctl status nagios
首先查询SElinux状态:
sestatus
为避免这个错误能够:
a)在SELinux配置文件/etc/selinux/config中
disabled SELinux,重启系统;
b)临时将其设置为 Permissive 模式,但仅本次开机有效,下次启动依然是enforce:
setenforce 0
chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/ chcon -R -t httpd_sys_content_t /usr/local/nagios/share/
访问 http://localhost/nagios
,经过 nagiosadmin 用户及刚才设置的密码登陆。
点击左侧目录中的 Service,能够查看当前监控的服务。
至此,Nagios 的基础安装就结束了。这里还要补充说明的一下,服务器的防火墙须要容许 apache 80 端口的访问,能够经过以下命令设置防火墙,容许 80 端口的访问。
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
若是不能访问网页nagios,采起直接关闭防火墙:
systemctl status firewalld.service
systemctl stop firewalld.service
注意此时还没法发送邮件
参考http://blog.csdn.net/firstar521/article/details/52848393