Nagios 是一款免费的开源 IT 基础设施监控系统,功能强大,灵活性强,能有效监控 Windows、Linux、VMware 和 Unix 主机状态,交换机、路由器等网络设置等。一旦主机或服务状态出现异常时,会发出邮件或短信报警第一时间通知 IT 运营人员,在恢复后发出正常的邮件或短信。Nagios 结构简单,可维护性强,提供一个可选的基于浏览器的 Web 界面,方便管理人员查看系统的运行状态,网络状态、服务状态、日志信息,以及其它异常现象。

一、Nagios 结构简单说明

Nagios 结构上来说,可分为核心和插件两个部分。Nagios 的核心部分只提供了很少的监控功能,因此要搭建一个完善的 IT 监控管理系统,用户还需要在 Nagios 服务器安装相应的插件,插件可以从 Nagios 官方网站下载 http://www.nagios.org/,也可以根据实际要求自己编写所需的插件。

二、Nagios 可实现的功能特性

  1. 监控网络服务(SMTP、POP3、HTTP、FTP、PING等)
  2. 监控本机及远程主机资源(CPU负荷、磁盘使用率、进程等)
  3. 允许用户编写自己的插件来监控特定的服务,支持多种开发语言(Shell、Perl、Python、PHP、C等)
  4. 具备定义网络分层结构的能力
  5. 当服务或主机问题产生与解决时将告警发送给联系人(通过Email、短信、自定义方式)
  6. 可以支持并实现对主机的冗余监控
  7. 可用 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= # 修改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
normal_check_interval
}
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
normal_check_interval
}

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=
host_perfdata_command=process-host-perfdata
service_perfdata_command=process-service-perfdata
enable_environment_macros=

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
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_
process_perf_data
}
define service {
name srv-pnp
register
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$
process_perf_data
}

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
use generic-contact
alias aming
email liwei0526vip@.com
} define contact{
contact_name
use generic-contact
alias aaa
email liwei0526vip@.com
} define contactgroup{
contactgroup_name common
alias common
members ,
}

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
normal_check_interval
contact_groups common
# 添加告警联系人
}

重启服务,ok。

Nagios 系统监控基本安装配置过程详解的更多相关文章

  1. Linux LVM逻辑卷配置过程详解(创建,增加,减少,删除,卸载)

    Linux LVM逻辑卷配置过程详解 许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份.删除相关数据, ...

  2. (转)windows 下安装配置 Nginx 详解

    windows 下安装配置 Nginx 详解 本文转自https://blog.csdn.net/kingscoming/article/details/79042874 nginx功能之一可以启动一 ...

  3. MySQL数据库安装配置步骤详解

    MYSQL的安装 1.打开下载的mysql安装文件mysql-5.5.27-win32.zip,双击解压缩,运行“setup.exe”. 2.选择安装类型,有“Typical(默认)”.“Comple ...

  4. Linux LVM逻辑卷配置过程详解

    许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份.删除相关数据,甚至被迫重新规划分区并重装操作系统,以 ...

  5. Centos7 安装MPlayer过程详解

    使用自带的totem基本上都无法播放视频,各种格式都不支持,令人无语.想到了MPlayer,为了看片,决定编译安装,过程真的是折腾.如图是自带的Totem播放提示,安装了解码还是无法播放,反正要找其他 ...

  6. Linux随笔 - Linux LVM逻辑卷配置过程详解[转载]

    许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份.删除相关数据,甚至被迫重新规划分区并重装操作系统,以 ...

  7. WCF分布式开发步步为赢(2)自定义托管宿主WCF解决方案开发配置过程详解

    上一节<WCF分布式框架基础概念>我们介绍了WCF服务的概念和通信框架模型,并给出了基于自定义托管服务的WCF程序的实现代码.考虑到WCF分布式开发项目中关于托管宿主服务配置和客户端添加引 ...

  8. tomcat安装配置常见问题详解

    历经波折,终于把tomcat装好了.记录下过程供自己和后来的初学者参考吧! 本文先后介绍了tomcat的下载安装方法.安装和启动不成功的常见原因 以及启动tomcat后如何配置上下文. 一.下载安装 ...

  9. VS2013安装部署过程详解

    注意:缺少安装部署的小伙伴,看上一篇有详细介绍 程序在“Release”平台下编译运行没有错误 第一步:“新建”------“项目”------“其他项目类型”------“安装部署”------“I ...

随机推荐

  1. git 与 github基本使用

    这里只对git 与 github的基本使用介绍,对于简单的步骤不做详细的说明,可以在网上搜索 一.git与github的安装与链接 1.git 安装:百度搜索"git",下载安装即 ...

  2. Alcatraz:插件管理

    安装: 终端粘贴 "curl -fsSL https://raw.github.com/alcatraz/Alcatraz/master/Scripts/install.sh | sh&qu ...

  3. find命令--xargs--exec

    find命令 1.1.find命令选项-name 按照文件名查找-perm 按照文件权限来查找-prune 可以使用find命令排除当前文件夹,不查找-user 可以按照文件属主来查找-group 可 ...

  4. (简单) POJ 2406 Power Strings,扩展KMP。

    Description Given two strings a and b we define a*b to be their concatenation. For example, if a = & ...

  5. OC语言的特性(二)-Block

    本篇文章的主要内容 了解何谓block. 了解block的使用方法. Block 是iOS在4.0版本之后新增的程序语法. 在iOS SDK 4.0之后,Block几乎出现在所有新版的API之中,换句 ...

  6. Sping--自动装配(byname, bytype)

    UserDAOImpl.java: package com.bjsxt.dao.impl; import com.bjsxt.dao.UserDAO; import com.bjsxt.model.U ...

  7. 使用USBASP给Arduino烧写bootloader教程

    源:使用UsbAsp给UNO烧写bootloader ATMEGA16U2.ATMEGA328P固件烧写教程 arduino板由于操作不发导致固件损坏,或者想更新固件怎么办?今天给大家介绍一下如何使用 ...

  8. C socket post数据到url

    #define HOST_SERVER_IP "192.168.1.15" #define HOST_PORT 80 int gsh_post_clients(const char ...

  9. mysqlslap 使用总结

    mysqlslap 可以用于模拟服务器的负载,并输出计时信息.其被包含在 MySQL 5.1 的发行包中.测试时,可以指定并发连接数,可以指定 SQL 语句.如果没有指定 SQL 语句,mysqlsl ...

  10. ucos内存管理原理详解

    应用程序中为了某种特殊需要,经常需要动态的分配内存,而操作系统的特质置一,就是能不能保证动态内存分配的时效性,也就是说分配时间是可确定的 Ucos提供内存分配功能,它将内存空间分为两级管理,将一块连续 ...