前言:Nagios是一款开源的免费网络监视工具,可以监控Windows、Linux和Unix的主机状态,交换机路由器等网络设备,在系统或服务状态异常时发出邮件或短信报警,第一时间通知网站运维人员。流量监控不是他的强项,流量监控建议使用cacti(可以绘制非常直观的图形。

总结一下nagios主要可以监控以下方面:

l 主机是否宕机(通过ping命令,如果ping不通会认为主机属于宕机状态,但不影响所监控的其他服务)

l 服务器资源(cpu使用率、硬盘剩余空间等)

l 网络服务(smtp\pop3\http\)

l 监控网络设备(路由器、交换机等)

一、需要了解的知识点

1、nagios工作原理

Nagios本身不包括监控主机和服务的功能。所有的监控、监测功能都是通过各种插件来完成的。安装完nagios之后,在nagios主目录下的/libexex里面放有nagios自带的插件,如:check_disk是检查磁盘空间的插件,check_load是检查cpu负载的插件,每一个插件可以通过运行./check_xxx -h命令来检查其使用方法和功能。

2、nagios的四种监控状态

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

3、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依次读取队列中的信息,再把结果显示出来。

二、实验环境

1、实验拓扑

2、虚拟机上的实验环境

三、实验步骤

1、搭建nagios监控系统

1)关闭防火墙

# systemctl stop firewalld

2)创建nagios用户和用户组

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

3)编译安装nagios(需要提前配置yum)

安装支持包:

# yum -y install httpd php mariadb mariadb-server openssl openssl-devel 

配置:

# tar -xvf nagios-4.0.6.tar.gz
# cd nagios-4.0.6/
# ./configure --prefix=/usr/local/nagios
# make all
# make install
# make install-init
# make install-commandmode
# make install-config
# make install-webconf
注意:安装install-webconf是为了生成配置文件,后面在/etc/httpd/conf/httpd.conf最后添加的信息就不用手工打了,可以到/etc/httpd/conf.d/nagios.conf文件中复制。

以上命令的解释:
make install      //安装主程序,CGI和HTML文件
make install-init  //在/etc/rc.d/init.d安装启动脚本
make install-commandmode  //配置目录权限
make install-config  //安装示例配置文件
make install-webconf  //安装nagios的web接口,会在/etc/httpd/conf.d目录中创建nagios.conf文件。

安装完成之后会在/usr/local/nagios目录下产生6个目录,下面分别解释一下。
bin:nagios执行程序所在的目录,nagios文件即为主程序。
etc:nagios配置文件目录,当make install-config完以后etc下面就会出现默认的配置文件。
sbin:nagios CGI文件所在目录,这里存放的是一些外部命令执行程序。
share:nagios网页文件目录,存放一些html文件。
var:nagios日志文件、pid等文件目录。
Libexec:系统默认插件的存储位置

 1)添加为系统服务器

# chkconfig --add nagios
# chkconfig --level 35 nagios on

1)安装nagios插件(监控功能通过插件完成) 

# tar -xvf nagios-plugins-1.5.0.tar.gz
# cd nagios-plugins-1.5.0/
# ./configure --prefix=/usr/local/nagios/
# make && make install

6)安装nrpe(为了监控远程服务器)

# tar -xvf nrpe-2.15.tar.gz
# cd nrpe-2.15/
# ./configure && make && make install-plugin

7)在/etc/httpd/conf/httpd.conf文件最后添加授权,我们可以到/etc/httpd/conf.d/nagios.conf文件中复制,不用手打。

 

# vim  /etc/httpd/conf/httpd.conf

:r /etc/httpd/conf.d/nagios.conf
剪切部分内容如下:
# This file contains examples of entries that need
# to be incorporated into your Apache web server
# configuration file.  Customize the paths, etc. as
# needed to fit your system.

ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"

<Directory "/usr/local/nagios/sbin">
#  SSLRequireSSL
   Options ExecCGI
   AllowOverride None
   Order allow,deny
   Allow from all
#  Order deny,allow
#  Deny from all
#  Allow from 127.0.0.1
   AuthName "Nagios Access"
   AuthType Basic
   AuthUserFile /usr/local/nagios/etc/htpasswd.users
   Require valid-user
</Directory>

导入即可,不用修改,保存退出。

8)执行htpasswd命令添加一个访问nagios页面的授权用户

# /usr/bin/htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadminNew password:
Re-type new password:
Adding password for user nagiosadmin

用户名和密码都是nagiosadmin

9)启动nagios和httpd

# systemctl start nagios
# systemctl start httpd

  

登陆进去后会显示如下图

目前只能是打开网页,很多的监控选项不能看到,如果需要监控远程的服务器,还需要做很多配置,下面开始配置。

2、配置nagios监控系统涉及知识点

1)nagios的配置文件:

 Nagios.cfg:主配置文件,定义各种配置文件的名称和位置

   Cgi.cfg:控制CGI的配置文件

   Resource.cfg:资源文件,定义各种变量,以便于其他文件调用

   Objects:其他配置文件存放目录,此目录下主要有:

             Command.cfg:命令配置文件,定义各种命令格式,以备其他文件调用

             contacts.cfg:联系人和组,发邮件等告警信息时可以调用

             localhost.cfg:监控本机的配置文件

             timeperiods.cfg:定义监控时间的配置文件,便于其他文件调用

             Hostgroups.cfg:定义监控的主机(组),需手动创建。 

2)配置文件之间的关系

在nagios的配置过程中涉及的几个定义有主机、主机组、服务、服务组、联系人、联系人组、监控时间和监控命令等。从这些定义可以看出,nagios各个配置文件之间互为关联、彼此引用的。成功配置出一台nagios监控系统,必须要弄清楚每个配置文件之间依赖与被依赖的关系,最重要的有四点

定义监控那些主机,主机组,服务和服务组

定义这个监控要用什么命令实现

定义监控的时间段

定义主机或服务器出现问题时要通知的联系人和联系人祖

3)配置nagios

为了能更清楚的说明问题,同时也为了维护方便,建议将nagios各个定义的对象创建独立的配置文件。

创建conf目录来定义host主机

创建hostgroups.cfg文件来定义主机组

用默认的contacts.cfg文件来定义联系人和联系人组

用默认的commands.cfg文件来定义命令

用默认的timeperiods.cfg来定义监控时间段

用默认的templetes.cfg文件作为资源引用文件

3、配置nagios

1)修改/usr/local/nagios/etc/nagios.cgf主配置文件

 

# vim /usr/local/nagios/etc/nagios.cfg
添加两行
cfg_file=/usr/local/nagios/etc/objects/hostgroups.cfg
cfg_file=/usr/local/nagios/etc/conf

创建配置文件目录
# mkdir /usr/local/nagios/etc/conf  

2)修改/usr/local/nagios/etc/objects/commands.cfg

# vim /usr/local/nagios/etc/objects/commands.cfg

添加下面4行内容

define command{
        command_name    check_nrpe
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
 }

3)修改/usr/local/nagios/etc/objects/contacts.cfg(定义监控服务器联系人)

# vim /usr/local/nagios/etc/objects/contacts.cfg

define contact{
        contact_name nsh
        alias Mage nsh
        email m1352142328@163.com
        host_notification_period  workinghours
        service_notification_period  workinghours
        host_notification_options  d,u,r
        service_notification_options  w,u,c,r
        host_notification_commands     host-notify-by-email
        service_notification_commands   notify-by-email
}      

4)新建/usr/local/nagios/etc/objects/hostgroups.cfg(定义主机组)

 

# vim /usr/local/nagios/etc/objects/hostgroups.cfg

define hosstgroup
        {
                hostgroup_name webservers
                alias Linux web servers
                members 192.168.92.132
        } 

4)在/usr/local/nagios/etc/conf下面新建192.168.92.132.cfg文件(用于监控192.168.92.132的主机存活,负载,进程)(所有内容需要手工输入)

 

# vim /usr/local/nagios/etc/conf/192.168.92.132.cfg

define host
        {
                name generic-server
                check_command check-host-alive
                check_interval 5
                retry_interval 1
                max_check_attempts 5
                check_period 24x7
                notification_interval 30
                notification_period 24x7
                notification_options d,u,r
                register 0
        }

define host
        {
                use generic-server
                name webserver1
                alias Web Server 01
                address 192.168.92.132
                contact_groups nsh
        }
~
~

  

命令解释:

define host{
       use         linux-server  //定义使用的模板
       host_name   nagios  //被监控主机的名称,最好别带空格
       alias         nagios  //别名
       address      127.0.0.1  //被监控主机的IP地址
       check_command    check-host-alive
normal_check_interval   3    //正常检测间隔时间
       	 retry_check_interval    2     //重试检测间隔时间
       //监控的命令check-host-alive,这个命令来自commands.cfg,用来监控主机是否存活
       max_check_attempts    5 //检查失败后重试的次数
       check_period        24x7   //检查的时间段24x7,同样来自timeperiods.cfg中定义
notification_interval  10  //提醒的间隔,每隔10秒提醒一次
notification_period   24x7  //提醒的周期, 24x7,同样来自timeperiods.cfg中定义
contact_groups   admins  //联系人组,上面在contactgroups.cfg中定义的admins
notification_options            d,u,r  //指定什么情况下提醒
        }   

4)重启nagios服务

  

8)访问网页查看状态

(注意:关闭selinux或者开例外)

# setenforce 0
或者:

如果你开启了selinux 需要配置如下二步:
chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/
chcon -R -t httpd_sys_content_t /usr/local/nagios/share/

  

  未完待续。。。

  

  

  

centos7上安装nagios的更多相关文章

  1. centos7上安装nagios及增加监控服务器

    参考博客 http://blog.csdn.net/firstar521/article/details/52848393 当配置了linux.cfg和Windows.cfg文件,重启nagios后发 ...

  2. 在centos7上安装Jenkins

    在centos7上安装Jenkins 安装 添加yum repos,然后安装 sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins ...

  3. 在 CentOS7 上安装 zookeeper-3.4.9 服务

    在 CentOS7 上安装 zookeeper-3.4.9 服务 1.创建 /usr/local/services/zookeeper 文件夹: mkdir -p /usr/local/service ...

  4. 在 CentOS7 上安装 MongoDB

    在 CentOS7 上安装 MongoDB 1 通过 SecureCRT 连接至 CentOS7 服务器: 2 进入到 /usr/local/ 目录: cd /usr/local 3 在当前目录下创建 ...

  5. 在 CentOS7 上安装 MySQL5.7

    在 CentOS7 上安装 MySQL5.7 1 通过 SecureCRT 连接到阿里云 CentOS7 服务器: 2 进入到目录 /usr/local/ 中: cd /usr/local/ 3 创建 ...

  6. 在 CentOS7 上安装 Tomcat9

    在 CentOS7 上安装 Tomcat9 1 通过 SecureCRT 连接到阿里云 CentOS7 服务器: 2 进入到目录 /usr/local/ 中: cd /usr/local/ 3 创建目 ...

  7. 在CentOS7上安装JDK1.8

    在CentOS7上安装JDK1.8 1 通过 SecureCRT 连接到阿里云 CentOS7 服务器: 2 进入到目录 /usr/local/ 中: cd /usr/local/ 3 创建目录 to ...

  8. 在Centos7上安装漏洞扫描软件Nessus

    本文摘要:简单叙述了在Centos7上安装Nessus扫描器的过程   Nessus 是目前全世界最多人使用的系统漏洞扫描与分析软件,Nessus的用户界面是基于Web界面来访问Nessus漏洞扫描器 ...

  9. 如何在centos7上安装源码包

    在我们使用linux的过程中,有很多程序是通过红帽官网给的系统中安装的,但是一般来说,系统更新的速度比较慢,如果这个时候我们又想用最新版的该怎么办呢?总不能一直等系统升级吧╮(╯﹏╰)╭所以,我们可以 ...

随机推荐

  1. 给tomcat配置外部资源路径(应用场景:web项目访问图片视频等资源)

    对于一个web项目来说,除了文字之外,图片,视频等媒体元素也是其重要的组成部分.我们知道,web项目中如果用到大量的图片.视屏的资源,我们 通常的做法是只在数据库中存储图片.视频等资源的路径,web项 ...

  2. python学习Day3 变量、格式化输出、注释、基本数据类型、运算符

    今天复习内容(7项) 1.语言的分类 -- 机器语言:直接编写0,1指令,直接能被硬件执行 -- 汇编语言:编写助记符(与指令的对应关系),找到对应的指令直接交给硬件执行 -- 高级语言:编写人能识别 ...

  3. springboot整合dubbox与zookeeper

    springboot中dubbo依赖的引入和配置(application.properties)参见:https://blog.csdn.net/wohaqiyi/article/details/72 ...

  4. python--第九天总结

    python 多进程和多线程 多线程可以共享全局变量,多进程不能.多线程中,所有子线程的进程号相同:多进程中,不同的子进程进程号不同. [多进程] Python在2.6引入了多进程的机制,并提供了丰富 ...

  5. Codeforces Round #554 (Div. 2)-C(gcd应用)

    题目链接:https://codeforces.com/contest/1152/problem/C 题意:给定a,b(<1e9).求使得lcm(a+k,b+k)最小的k,若有多个k,求最小的k ...

  6. 大数据学习笔记2 - 分布式文件系统HDFS(待续)

    分布式文件系统结构 分布式文件系统是一种通过网络实现文件在多台主机上进行分布式存储的文件系统,采用C/S模式实现文件系统数据访问,目前广泛应用的分布式文件系统主要包括GFS和HDFS,后者是前者的开源 ...

  7. 394. Decode String 解码icc字符串3[i2[c]]

    [抄题]: Given an encoded string, return it's decoded string. The encoding rule is: k[encoded_string], ...

  8. [leetcode]31. Next Permutation下一个排列

    Implement next permutation, which rearranges numbers into the lexicographically next greater permuta ...

  9. 面试简单整理之JVM

    194.说一下 jvm 的主要组成部分?及其作用? JVM内存分为“堆”.“栈”和“方法区”三个区域,分别用于存储不同的数据. 堆内存用于存储使用new关键字所创建的对象: 栈内存用于存储程序运行时在 ...

  10. Apache Beam编程指南

    术语 Apache Beam:谷歌开源的统一批处理和流处理的编程模型和SDK. Beam: Apache Beam开源工程的简写 Beam SDK: Beam开发工具包 **Beam Java SDK ...