Nagios 系统监控
Nagios 系统监控
Nagios 是一款免费的开源 IT 基础设施监控系统,功能强大,灵活性强,能有效监控 Windows、Linux、VMware 和 Unix 主机状态,交换机、路由器等网络设置等。一旦主机或服务状态出现异常时,会发出邮件或短信报警第一时间通知 IT 运营人员,在恢复后发出正常的邮件或短信。Nagios 结构简单,可维护性强,提供一个可选的基于浏览器的 Web 界面,方便管理人员查看系统的运行状态,网络状态、服务状态、日志信息,以及其它异常现象。
一、Nagios 结构简单说明
Nagios 结构上来说,可分为核心和插件两个部分。Nagios 的核心部分只提供了很少的监控功能,因此要搭建一个完善的 IT 监控管理系统,用户还需要在 Nagios 服务器安装相应的插件,插件可以从 Nagios 官方网站下载 http://www.nagios.org/,也可以根据实际要求自己编写所需的插件。
二、Nagios 可实现的功能特性
- 监控网络服务(SMTP、POP3、HTTP、FTP、PING等)
- 监控本机及远程主机资源(CPU负荷、磁盘使用率、进程等)
- 允许用户编写自己的插件来监控特定的服务,支持多种开发语言(Shell、Perl、Python、PHP、C等)
- 具备定义网络分层结构的能力
- 当服务或主机问题产生与解决时将告警发送给联系人(通过Email、短信、自定义方式)
- 可以支持并实现对主机的冗余监控
- 可用 web 界面用于查看当前的网络状态、通知和故障历史、日志文件等
三、Nagios 监控实现原理
Nagios 软件需安装在一台独立的服务器上运行,这台服务器称为监控中心,监控中心服务器可以采用 Linux 或 Unix 操作系统;每一台被监视的硬件主机或服务都运行一个与监控中心服务器进行通信的 Nagios 软件后台程序,也可以理解为 Agent 或插件均可。监控中心服务器读取配置文件中的指令与远程的守护程序进行通信,并且指示远程的守护程序进行必要的检查。虽然 Nagios 软件必须在 Linux 或 Unix 操作系统上运行,但是远程被监控的机器可以是任何能够与其进行通信的主机,根据远程主机返回的应答,Naigos 将依据配置进行回应;接着 Nagios 将通过本地的机器进行测试,如果检测返回值不正确,Nagios 将通过一种或多种方式报警。
四、监控中心服务器安装配置
1. 中心服务器基本环境
操作系统:CentOS 6.4 x86_64
IP 地址:192.168.0.8
2. 安装epel扩展源(nagios)
[root@nagios ~]# yum install epel-release -y
3. 安装nagios系列软件
[root@nagios ~]# yum install httpd nagios nagios-plugins-all nagios-plugins-nrpe
4. 设置修改后台用户密码
[root@nagios ~]# htpasswd -c /etc/nagios/passwd nagiosadmin
默认用户名:nagiosadmin 密码:nagiosadmin 通过此命令可以修改密码。
5. 配置文件修改
[root@nagios ~]# vim /etc/nagios/nagios.cfg # 配置文件基本不用修改
检查配置文件是否有语法错误:
[root@nagios ~]# nagios -v /etc/nagios/nagios.cfg
6. 启动nagios相关服务
[root@nagios ~]# service nagios start
[root@nagios ~]# service httpd start
7. 浏览器访问
http://192.168.0.8/nagios # 注意最好要关闭iptables和selinux
通过浏览器访问上述的地址,输入后台用户名和密码。默认:nagiosadmin nagiosadmin
五、监控客户端基本网络服务
1. 说明
对于客户端类似ping、ssh、http等基础网络服务,只需要在服务器端执行简单网络探测的命令即可查看相应的服务是否正常运行,因此对于这些服务的监控在客户端不需要安装任何的插件及服务。
2. 客户端环境
操作系统:CentOS 6.4 x86_64
IP 地址:192.168.0.28
3. 添加基本服务
在服务器端添加配置文件:
vim /etc/nagios/conf.d/192.168.0.28.cfg # 添加如下内容

define host{ # 定义主机:192.168.0.28
use linux-server
host_name 192.168.0.28
alias 0.28
address 192.168.0.28
}
define service{ # 添加 ping 监控服务
use generic-service
host_name 192.168.0.28
service_description check_ping
check_command check_ping!100.0,20%!200.0,50%
max_check_attempts 5
normal_check_interval 1
}
define service{ # 添加 ssh 监控服务
use generic-service
host_name 192.168.0.28
service_description check_ssh
check_command check_ssh
max_check_attempts 5
normal_check_interval 1
}
define service{ # 添加 http 监控服务
use generic-service
host_name 192.168.0.28
service_description check_http
check_command check_http
max_check_attempts 5
normal_check_interval 1
}

4. 重新加载nagios配置文件
service nagios reload
通过浏览器访问 http://192.168.0.8/nagios 通过 Current Status --> Service可以看到添加的主机 192.168.0.28 对应的3个服务的列表,刚开始都是 pending 状态,过一段时间 Status 会变成 OK 字样。
5. 配置文件解释说明
我们定义的配置文件中一共监控了三个 service: ssh ping http 这三个项目是使用本地的 nagios 工具去连接远程机器,及时没有安装任何的插件也是可以监测到的。
max_check_attempts 5:尝试检测到5次有问题才会告警,如果设置为1,一旦检测到问题立马告警
normal_check_interval 1:重新检测的时间间隔,单位是分钟,默认是 3 分钟。
notification_interval 60:出现异常后故障一直没有解决,nagios再次对使用者发出通知的时间。设置为0,仅通知一次。
六、监控客户端本地系统服务
其它的一些 service 诸如负载、磁盘使用等需要服务端通过 nrpe 去连接到远程主机获得信息,所以需要远程主机安装 nrpe 服务以及相应的插件程序。
1. 监控客户端
IP 地址:192.168.0.28
2. 客户端需要安装的软件
[root@nagios ~]# yum install epel-release -y # 安装epel源
[root@nagios ~]# yum install nrpe -y # 安装nrpe服务软件
[root@nagios ~]# yum install nagios-plugins-all -y # 安装所有nagios插件
3. 配置客户端nrpe服务能被监控
[root@nagios ~]# vim /etc/nagios/nrpe.cfg # 修改如下内容
allowed_hosts=127.0.0.1,192.168.0.8 # 添加192.168.0.8来监控
dont_blame_nrpe=1 # 修改0为1,设置可以传递参数
command[check_hda1]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /dev/sda1
4. 客户端启动nrpe服务
[root@nagios ~]# service nrpe start
Starting nrpe: [确定]
5. 服务器端配置来监控客户端
[root@vip ~]# vim /etc/nagios/objects/commands.cfg
在最后面增加如下:
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
[root@vip ~]# vim /etc/nagios/conf.d/192.168.0.28.cfg
增加如下内容:

define service{ # 添加监控负载
use generic-service
host_name 192.168.0.28
service_description check_load
check_command check_nrpe!check_load
max_check_attempts 5
normal_check_interval 1
}
define service{ # 添加监控sda1磁盘
use generic-service
host_name 192.168.0.28
service_description check_disk_hda1
check_command check_nrpe!check_hda1
max_check_attempts 5
normal_check_interval 1
}

6. 重新加载服务器配置
[root@vip ~]# service nagios reload
通过浏览器访问 http://192.168.0.8/nagios 正常显示。
七、Nagios 配置图形显示
Nagios 对服务或主机监控的是一个瞬时状态,有时候系统管理员需要了解主机在一段时间内的性能及服务的响应状态,并且形成图表,这就需要通过查看日志数据来分析。但是这种方式不仅烦琐,而且抽象。为了能更直观的查看主机运行状态,这里采用 PNP 来实现此功能。PNP 是一个小巧的开源软件包,它是基于 PHP 和 Perl 脚本编写,PNP 可以利用 rrdtoul 工具将 Nagios 采集的数据绘制成图表,然后显示主机或者服务在一段时间内运行的状况。注:以下操作都是针对中心服务器的。
1. 安装pnp4nagios软件
[root@vip ~]# yum install -y pnp4nagios rrdtool
2. 修改主配置文件
[root@vip ~]# vim /etc/nagios/nagios.cfg
修改如下配置:
process_performance_data=1
host_perfdata_command=process-host-perfdata
service_perfdata_command=process-service-perfdata
enable_environment_macros=1
3. 修改command.cfg配置文件
[root@vip ~]# vim /etc/nagios/objects/commands.cfg
注释掉原有对process-host-perfdata和process-service-perfdata重新定义

define command {
command_name process-service-perfdata
command_line /usr/bin/perl /usr/libexec/pnp4nagios/process_perfdata.pl
}
define command {
command_name process-host-perfdata
command_line /usr/bin/perl /usr/libexec/pnp4nagios/process_perfdata.pl -d HOSTPERFDATA
}

4. 修改templates.cfg配置文件

vim /etc/nagios/objects/templates.cfg
define host {
name hosts-pnp
register 0
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_
process_perf_data 1
}
define service {
name srv-pnp
register 0
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$
process_perf_data 1
}

5. 修改host和service的配置
[root@vip ~]# vim /etc/nagios/conf.d/192.168.0.28.cfg
所有主机使用的模板后边添加hosts-pnp:
define host{
use linux-server,hosts-pnp
所有服务使用的模板后边添加srv-pnp:
define service{
use generic-service,srv-pnp
host_name 192.168.0.48
service_description check_disk_hda1
check_command check_nrpe!check_hda1
}
6. 重启服务,再次访问
[root@vip conf.d]# service nagios restart
[root@vip conf.d]# service httpd restart
[root@vip conf.d]# service npcd start
浏览器访问:http://192.168.0.8/nagios 点击 Current Status -> service 即可显示出"曲线"图标,等待一段时间,点击图标即可看到数据。
八、配置邮件告警
1. 增加联系人组
vim /etc/nagios/objects/contacts.cfg
增加如下内容:

define contact{
contact_name 123
use generic-contact
alias aming
email liwei0526vip@163.com
}
define contact{
contact_name 456
use generic-contact
alias aaa
email liwei0526vip@163.com
}
define contactgroup{
contactgroup_name common
alias common
members 123,456
}

2. 在需要告警的相关服务中添加告警联系人
然后在要需要告警的服务里面加上contactgroup ,这里示例中以 http 服务为例:

define service{
use generic-service,srv-pnp
host_name 192.168.0.48
service_description check_http
check_command check_http
max_check_attempts 5
normal_check_interval 1
contact_groups common # 添加告警联系人
}

重启服务,ok。
Nagios 系统监控的更多相关文章
- 《Nagios系统监控实践》一书出版
本书是我的第一本译著,有此机会实属机缘巧合.虽然使用Nagios只有一年多的时间,但是作为用户,我深感其设计的简洁与高效—没有一丝多余的东西.因为工作的关系,要求对各个领域都有所了解,所以没有仔细地阅 ...
- Nagios 系统监控基本安装配置过程详解
Nagios 是一款免费的开源 IT 基础设施监控系统,功能强大,灵活性强,能有效监控 Windows.Linux.VMware 和 Unix 主机状态,交换机.路由器等网络设置等.一旦主机或服务状态 ...
- 《Nagios系统监控实践》勘误
在翻译的过程中,虽然反反复复的检查了很多遍,但依然有所遗漏——这不,今天就收到了 @我是晓梦 的回复,指出了书中的一些错误. 从今天起,建立勘误表,记录这些错误,以便在下一次印刷时纠正,并对广大读者致 ...
- 关于nagios系统下使用shell脚本自定义监控插件的编写以及没有实时监控图的问题
关于nagios系统下shell自定义监控插件的编写.脚本规范以及没有实时监控图的问题的解决办法 在自已编写监控插件之前我们首先需要对nagios监控原理有一定的了解 Nagios的功能是监控服务和主 ...
- 建设DevOps统一运维监控平台,全面的系统监控 Zabbix VS Nagios VS Open-Falcon OR Prometheus
前言 随着Devops.云计算.微服务.容器等理念的逐步落地和大力发展,机器越来越多,应用越来越多,服务越来越微,应用运行基础环境越来多样化,容器.虚拟机.物理机不一而足.面对动辄几百上千个虚拟机.容 ...
- Security基础(四):OpenSSL及证书服务常用系统监控命令、搭建nagios监控服务器、配置文件及插件使用、监控远程主机的公有数据、监控远程主机的私有数据
一.OpenSSL及证书服务常用系统监控命令 目标: 本案例要求练习常用的系统监控命令完成以下任务: 使用vmstat命令监控内存及磁盘I/O信息 使用iostat命令监控CPU处理器及磁盘的I/O信 ...
- docker开源系统监控软件Nagios
开源的系统监控软件 下面整理了3个: 1.Zabbix 2.Nagios 3.Open-Falcon 这位博主进行的完整的介绍: https://www.cnblogs.com/linuxandy/p ...
- Nagios:企业级系统监控方案
在大多数情况下Cacti + RRDtool已经实现对系统各种参数的监测.但很多企业可能不满足于仅仅监测系统基本参数的需求,而是需要监测除基本参数之外的各种应用程序的运行状况.很显然在这种情况下对于一 ...
- 搭建基于Nagios的监控系统——之监控远程Windows服务器
分享了如何监控Linux服务器,我们来看看使用Nagios如何监控Windows服务器. 第一部分:配置被监控的Windows服务器 首先,访问 http://sourceforge.net/pr ...
随机推荐
- iOS In-App Purchase(IAP)内购服务端二次验证注意事项
前端iOS完成对应的商品购买之后,会得到一个Transaction(交易)的数据结构指针,后端实际上只需要这个结构内的一个东西,那就是 transaction.transactionReceipt. ...
- 解决ubuntu下,QQ重启后出现个人文件夹已被占用的问题
首先,是wine QQ的安转教程:Wine安装最新版QQ(8.9.2)的简单教程 - Powered by Discuz! 里面作者也提到了关于重启后出现个人文件夹被占用的情况. 如下: 这里,如果不 ...
- IntelliJ IDEA 创建Spring+SpringMVC+mybatis+maven项目
参考自:https://www.cnblogs.com/hackyo/p/6646051.html 第一步: 创建maven项目 输入项目名和工程id 选择maven 默认就可以了 刚开始时间比较长, ...
- Java抽象类(Abstract Class)与接口(Interface)区别
抽象类与接口比较 抽象类跟接口类似,都不能实例化,可能包含不需实现方法或已实现的方法. 抽象类可以定义一些不是静态或常量的字段,定义 public, protected, private访问级别的具体 ...
- [福大软工] Z班 第5次成绩排行榜
作业链接 http://www.cnblogs.com/easteast/p/7613070.html 作业要求 团队项目--选题报告 1)发布博客: 一个团队发布一篇随笔,内容为团队的选题报告,选题 ...
- TCP三次握手四次挥手过程详解
http://blog.csdn.net/imilli/article/details/50620104 TCP头部: 其中 ACK SYN 序号 这三个部分在以下会用到,它们的介绍也在下面. ...
- 深入理解Java 注解原理
*注解的用途 注解(Annotation)是JDK1.5引入的新特性,包含在java.lang.annotation包中,它是附加在代码中的一些元信息,将一个类的外部信息与内部成员联系起来,在编 译. ...
- Fiddler抓包学习
今天看到一个抓包笔记, 因为是老早抓包的需求, 后期不用就忘了, 换电脑桌面软件图标都没了, 点开看了一下一脸懵逼... 这是啥... 以后有需要在看一遍吧! Fiddler抓包使用教程-扫盲篇 h ...
- JavaScript中浅拷贝和深拷贝的区别和实现
深拷贝和浅拷贝的区别 浅拷贝(shallow copy):只复制指向某个对象的指针,而不复制对象本身,新旧对象共享一块内存: 深拷贝(deep copy):复制并创建一个一摸一样的对象,不共 ...
- UVA437-The Tower of Babylon(动态规划基础)
Problem UVA437-The Tower of Babylon Accept: 3648 Submit: 12532Time Limit: 3000 mSec Problem Descrip ...