一、Nagios简介

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

  Nagios原名为NetSaint,由Ethan Galstad开发并维护至今。NAGIOS是一个缩写形式: "Nagios Ain't Gonna Insist On Sainthood" Sainthood 翻译为圣徒,而"Agios"是"saint"的希腊表示方法。Nagios被开发在Linux下使用,但在Unix下也工作得非常好。

主要功能

  • 网络服务监控(SMTP、POP3、HTTP、NNTP、ICMP、SNMP、FTP、SSH)

  • 主机资源监控(CPU load、disk usage、system logs),也包括Windows主机(使用NSClient++ plugin)

  • 可以指定自己编写的Plugin通过网络收集数据来监控任何情况(温度、警告……)

  • 可以通过配置Nagios远程执行插件远程执行脚本

  • 远程监控支持SSH或SSL加通道方式进行监控

  • 简单的plugin设计允许用户很容易的开发自己需要的检查服务,支持很多开发语言(shell scripts、C++、Perl、ruby、Python、PHP、C#等)

  • 包含很多图形化数据Plugins(Nagiosgraph、Nagiosgrapher、PNP4Nagios等)

  • 可并行服务检查

  • 能够定义网络主机的层次,允许逐级检查,就是从父主机开始向下检查

  • 当服务或主机出现问题时发出通告,可通过email, pager, sms 或任意用户自定义的plugin进行通知

  • 能够自定义事件处理机制重新激活出问题的服务或主机

  • 自动日志循环

  • 支持冗余监控

  • 包括Web界面可以查看当前网络状态,通知,问题历史,日志文件等

二、Nagios工作原理

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

  启动Nagios后,它会周期性的自动调用插件去检测服务器状态,同时Nagios会维持一个队列,所有插件返回来的状态信息都进入队列,Nagios每次都从队首开始读取信息,并进行处理后,把状态结果通过web显示出来。

  Nagios提供了许多插件,利用这些插件可以方便的监控很多服务状态。安装完成后,在nagios主目录下的/libexec里放有 nagios自带的可以使用的所有插件,如,check_disk是检查磁盘空间的插件,check_load是检查CPU负载的,等等。每一个插件可以 通过运行./check_xxx –h 来查看其使用方法和功能。

  Nagios可以识别4种状态返回信息,即 0(OK)表示状态正常/绿色、1(WARNING)表示出现警告/***、2(CRITICAL)表示出现非常严重的错误/红色、3(UNKNOWN)表 示未知错误/深***。Nagios根据插件返回来的值,来判断监控对象的状态,并通过web显示出来,以供管理员及时发现故障。

四种监控状态

  再说报警功能,如果监控系统发现问题不能报警那就没有意义了,所以报警也是nagios很重要的功能之一。但是,同样的,Nagios 自身也没有报警部分的代码,甚至没有插件,而是交给用户或者其他相关开源项目组去完成的。

  Nagios 安装,是指基本平台,也就是Nagios软件包的安装。它是监控体系的框架,也是所有监控的基础。

  打开Nagios官方的文档,会发现Nagios基本上没有什么依赖包,只要求系统是Linux或者其他Nagios支持的系统。不过如果你没 有安装apache(http服务),那么你就没有那么直观的界面来查看监控信息了,所以apache姑且算是一个前提条件。关于apache的安装,网 上有很多,照着安装就是了。安装之后要检查一下是否可以正常工作。

  知道Nagios 是如何通过插件来管理服务器对象后,现在开始研究它是如何管理远端服务器对象的。Nagios 系统提供了一个插件NRPE。Nagios 通过周期性的运行它来获得远端服务器的各种状态信息。它们之间的关系如下图所示:

Nagios 通过NRPE 来远端管理服务

1. Nagios 执行安装在它里面的check_nrpe 插件,并告诉check_nrpe 去检测哪些服务。

2. 通过SSL,check_nrpe 连接远端机子上的NRPE daemon

3. NRPE 运行本地的各种插件去检测本地的服务和状态(check_disk,..etc)

4. 最后,NRPE 把检测的结果传给主机端的check_nrpe,check_nrpe 再把结果送到Nagios状态队列中。

5. Nagios 依次读取队列中的信息,再把结果显示出来。

三、实验环境

Host Name OS IP Software
Nagios-Server CentOS release 6.3 (Final) 192.168.1.108 Apache、Php、Nagios、nagios-plugins
Nagios-Linux CentOS release 5.8 (Final) 192.168.1.111 nagios-plugins、nrpe
Nagios-Windows Windows XP 192.168.1.113  NSClient++

Server 安装了nagios软件,对监控的数据做处理,并且提供web界面查看和管理。当然也可以对本机自身的信息进行监控。

Client 安装了NRPE等客户端,根据监控机的请求执行监控,然后将结果回传给监控机。

防火墙已关闭/iptables: Firewall is not running.

SELINUX=disabled

四、实验目标

五、Nagios服务端安装

5.1 基础支持套件:gcc glibc glibc-common gd gd-devel xinetd openssl-devel

# rpm -q gcc glibc glibc-common gd gd-devel xinetd openssl-devel

如果系统中没有这些套件,使用yum 安装

# yum install -y gcc glibc glibc-common gd gd-devel xinetd openssl-devel

5.2 创建nagios用户和用户组

# useradd -s /sbin/nologin nagios
# mkdir /usr/local/nagios
# chown -R nagios.nagios /usr/local/nagios

查看nagios 目录的权限

# ll -d /usr/local/nagios/

5.3 编译安装Nagios

# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.4.3.tar.gz

# tar zxvf nagios-3.4.3.tar.gz

# cd nagios

# ./configure --prefix=/usr/local/nagios

# make all

# make install

# make install-init

# make install-commandmode

# make install-config

# chkconfig --add nagios

# chkconfig --level 35 nagios on

# chkconfig --list nagios

5.4 验证程序是否被正确安装

切换目录到安装路径(这里是/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 用来存放外部命令文件的目录

5.5 安装Nagios 插件

# wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.16.tar.gz

# tar zxvf nagios-plugins-1.4.16.tar.gz

# cd nagios-plugins-1.4.16

# ./configure --prefix=/usr/local/nagios

# make && make install

5.6 安装与配置Apache和Php

Apache 和Php 不是安装nagios 所必须的,但是nagios提供了web监控界面,通过web监控界面可以清晰的看到被监控主机、资源的运行状态,因此,安装一个web服务是很必要的。
需要注意的是,nagios在nagios3.1.x版本以后,配置web监控界面时需要php的支持。这里我们下载的nagios版本为nagios-3.4.3,因此在编译安装完成apache后,还需要编译php模块,这里选取的php版本为php5.4.10。

a. 安装Apache

# wget http://archive.apache.org/dist/httpd/httpd-2.2.23.tar.gz

# tar zxvf httpd-2.2.23.tar.gz

# cd httpd-2.2.23

# ./configure --prefix=/usr/local/apache2

# make && make install

若出现错误:

则在编译时入加 --with-included-apr 即可解决。

b. 安装Php

# wget http://cn2.php.net/distributions/php-5.4.10.tar.gz

# tar zxvf php-5.4.10.tar.gz

# cd php-5.4.10

# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs

# make && make install

c. 配置apache
找到apache 的配置文件/usr/local/apache2/conf/httpd.conf      
找到:

User daemon
Group daemon

修改为

User nagios
Group nagios

然后找到

<IfModule dir_module>   DirectoryIndex index.html
</IfModule>

修改为

<IfModule dir_module>   DirectoryIndex index.html index.php
</IfModule>

接着增加如下内容:

AddType application/x-httpd-php .php

为了安全起见,一般情况下要让nagios 的web 监控页面必须经过授权才能访问,这需要增加验证配置,即在httpd.conf 文件最后添加如下信息:

#setting for nagios
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
<Directory "/usr/local/nagios/sbin"> AuthType Basic Options ExecCGI AllowOverride None Order allow,deny Allow from all AuthName "Nagios Access" AuthUserFile /usr/local/nagios/etc/htpasswd             //用于此目录访问身份验证的文件 Require valid-user
</Directory> Alias /nagios "/usr/local/nagios/share"
<Directory "/usr/local/nagios/share"> AuthType Basic Options None AllowOverride None Order allow,deny Allow from all AuthName "nagios Access" AuthUserFile /usr/local/nagios/etc/htpasswd Require valid-user
</Directory>

d. 创建apache目录验证文件

在上面的配置中,指定了目录验证文件htpasswd,下面要创建这个文件:

# /usr/local/apache2/bin/htpasswd -c /usr/local/nagios/etc/htpasswd david


这样就在/usr/local/nagios/etc 目录下创建了一个htpasswd 验证文件,当通过http://192.168.1.108/nagios/ 访问时就需要输入用户名和密码了。

e. 查看认证文件的内容

# cat /usr/local/nagios/etc/htpasswd

f. 启动apache 服务

# /usr/local/apache2/bin/apachectl start

到这里nagios 的安装也就基本完成了,你可以通过web来访问了。


转载于:https://blog.51cto.com/9411763/1576208

nagios安装与配置详解1相关推荐

  1. Nagios安装与配置详解

    一.Nagios简介 Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows.Linux和Unix的主机状态,交换机路由器等网络设置,打印机等.在系统或服务状态异常时发出邮件或短信报 ...

  2. nagios安装和配置详解

    写在最前 本文转载自https://www.cnblogs.com/mchina/archive/2013/02/20/2883404.html,转载博客博主写的十分详细,本次转载仅用于学习交流. 一 ...

  3. Nagios远程监控软件的安装与配置详解

    Nagios远程监控软件的安装与配置详解 作者:redhat_hu Nagios是一款功能强大的网络监视工具,它可以有效的监控windows.linux.unix主机状态以及路由器交换机的网络设置,打 ...

  4. Julia的安装与配置详解(包含在Ubuntu 18.04和Windows 10系统上Julia的安装)

    Julia的安装与配置详解((包含在Ubuntu 18.04和Windows 10系统上Julia的安装) Julia的安装 使用二进制文件安装Julia 在Ubuntu上安装Julia 在Windo ...

  5. gulp的安装和配置详解

    gulp的安装和配置详解 1.安装node.js 先下载一个node.js安装包. 下载完成后双击即可. 打开cmd,命令行输入node -v,回车输出nodejs版本号,表示安装成功. 命令行输入n ...

  6. node.js卸载、安装、配置详解

    node.js卸载.安装.配置详解 一. node.js卸载 二.下载安装 2.1 下载 2.2 安装 2.2.1 选择msi安装 2.2.2 选择zip安装 三.配置 3.1 环境变量配置 3.2 ...

  7. Gradle安装和配置详解

    Gradle安装和配置详解 gradle是基于Apache Ant和Apache Maven概念的项目自动化构建开源工具,也提供了很多第三方插件.在Java Web项目中通常会用到 java.war. ...

  8. keepalived介绍、安装及配置详解

    文章目录 keepalived简介 keeplived和LVS关系 VRRP工作原理 keepalived体系结构及工作原理 keepalived安装 keepalived配置详解 keepalive ...

  9. Linux中Nginx安装与配置详解及常见问题

    3 Nginx安装 3.1 安装前的准备     1)准备 pcre-8.12.tar.gz.该文件为正则表达式库.让nginx支持rewrite需要安装这个库.     2) 准备 nginx-1. ...

最新文章

  1. tensorflow youtube的一点笔记
  2. Selenium 2.0的由来及设计架构(二)
  3. java ancestor_java – 家谱祖先查找算法
  4. 在 .NET Core 5 中集成 Create React app
  5. 计算机目标导学方法,计算机教学计划
  6. IIS里FTP多用户设置,终于不用Serv-U了,很方便,个人用够用了
  7. C#生成图形验证码 (转)
  8. 批量查找修改替换多个 Word 文件中的关键字,也支持修改替换 Excel、PPT、PDF 和记事本文本文件
  9. 利用FFmpegFrameGrabber截取视频中的某一帧图片压缩并旋转
  10. 苹果xr微信连不上服务器,苹果xr微信延迟的解决方法
  11. 亚太融媒+ | APEC数据+:“鲸确数集”环保熊猫“小保保”2022拜年 | APEC产业+
  12. 《SysML精粹》学习记录--第十一章
  13. 用Python计算利率,告诉你亏了多少!
  14. 【unmatched host】nfs挂载 提示“: refused mount request from xx for /nfsdata (/nfsdata): unmatched host ”
  15. 新支点国产服务器操作系统与虚拟化平台和云管理平台实现兼容
  16. 【转】linux服务器的Gzip文件压缩方法
  17. 宽依赖和窄依赖_spark的宽依赖窄依赖
  18. 苹果 WWDC 2020 信息汇总:iOS 14 成陪衬,Mac 电脑改用自研芯片
  19. SpringCloud Alibaba 学习
  20. 页面加载后自动刷新一次的方法

热门文章

  1. Python 安全编程学习总结
  2. ArcGIS Engine控件运行许可学习总结
  3. JDBC_通过DriverManager获得数据库连接
  4. 深入理解JavaScript定时函数setTimeout
  5. [bzoj2186]沙拉公主的困惑
  6. C语言 · 数位分离
  7. Hibernate中Entity实体类的写法
  8. [BZOJ1061][Noi2008]志愿者招募
  9. hibernate对象关系实现(二)一对一
  10. 2021/6/20~22 每天学习python 30分钟 -了解python - python的运算符