centos7上安装nagios
前言: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的更多相关文章
- centos7上安装nagios及增加监控服务器
参考博客 http://blog.csdn.net/firstar521/article/details/52848393 当配置了linux.cfg和Windows.cfg文件,重启nagios后发 ...
- 在centos7上安装Jenkins
在centos7上安装Jenkins 安装 添加yum repos,然后安装 sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins ...
- 在 CentOS7 上安装 zookeeper-3.4.9 服务
在 CentOS7 上安装 zookeeper-3.4.9 服务 1.创建 /usr/local/services/zookeeper 文件夹: mkdir -p /usr/local/service ...
- 在 CentOS7 上安装 MongoDB
在 CentOS7 上安装 MongoDB 1 通过 SecureCRT 连接至 CentOS7 服务器: 2 进入到 /usr/local/ 目录: cd /usr/local 3 在当前目录下创建 ...
- 在 CentOS7 上安装 MySQL5.7
在 CentOS7 上安装 MySQL5.7 1 通过 SecureCRT 连接到阿里云 CentOS7 服务器: 2 进入到目录 /usr/local/ 中: cd /usr/local/ 3 创建 ...
- 在 CentOS7 上安装 Tomcat9
在 CentOS7 上安装 Tomcat9 1 通过 SecureCRT 连接到阿里云 CentOS7 服务器: 2 进入到目录 /usr/local/ 中: cd /usr/local/ 3 创建目 ...
- 在CentOS7上安装JDK1.8
在CentOS7上安装JDK1.8 1 通过 SecureCRT 连接到阿里云 CentOS7 服务器: 2 进入到目录 /usr/local/ 中: cd /usr/local/ 3 创建目录 to ...
- 在Centos7上安装漏洞扫描软件Nessus
本文摘要:简单叙述了在Centos7上安装Nessus扫描器的过程 Nessus 是目前全世界最多人使用的系统漏洞扫描与分析软件,Nessus的用户界面是基于Web界面来访问Nessus漏洞扫描器 ...
- 如何在centos7上安装源码包
在我们使用linux的过程中,有很多程序是通过红帽官网给的系统中安装的,但是一般来说,系统更新的速度比较慢,如果这个时候我们又想用最新版的该怎么办呢?总不能一直等系统升级吧╮(╯﹏╰)╭所以,我们可以 ...
随机推荐
- 并发系列3:Lock锁以及核心类AQS
Java Lock类提供了语言级别的Synchronized,Lock与Condition配合与Synchronized配合object一样实现了等待/通知机制.但它提供了更高的灵活性,有:1尝试非阻 ...
- Echarts 柱状图属性详解
<script type="text/javascript"> // 基于准备好的dom,初始化echarts实例 var myChart = echarts.init ...
- 十三、Visitor 访问者设计模式
需求:将数据结果与处理分开 设计原理: 代码清单: Element public interface Element { void accept(Visitor visitor); } Entry p ...
- jstl标准标签库 常用标签
JSTL(JSP Standard Tag Library)标准标签库: 1, 核心标签(最常用, 最重要的) 表达式控制标签 out 输出常量 value---直接赋值 输出变量 default-- ...
- JS实现数组去重方法总结(三种常用方法)
方法一: 双层循环,外层循环元素,内层循环时比较值 如果有相同的值则跳过,不相同则push进数组 Array.prototype.distinct = function(){ var arr = th ...
- FortiGate 5.2/5.4 SSLVPN建立
1.定义源IP池 即用户通过sslvpn拨号成功后获取到的IP地址. 2.定义路由地址 即用户通过sslvpn拨号成功后允许获取到的路由表. 3.建立sslvpn portal 4.定义用户和用户组 ...
- python的序列类
1,我们常见的数据结构有哪些是序列类 序列类型的分类: ① 容器序列:list,tuple,deque(可以防止任意的类型的容器) ② 扁平序列:str,bytes,bytearray,array ...
- 目前php连接mysql的主要方式
mysqli和PDO, 其中mysqli可以有面向过程,面向对象两种方式.而pdo只有面向对象的方式. <?php // $mysql_server = "localhost" ...
- PHP导出Excel表
<?php/** * Created by PhpStorm. * User: admin * Date: 2019/3/16 * Time: 9:41 *///利用excel导出插件PHPEx ...
- cpp 区块链模拟示例(二)工程代码解析
/* 作 者: itdef 欢迎转帖 请保持文本完整并注明出处 技术博客 http://www.cnblogs.com/itdef/ 技术交流群 群号码:432336863欢迎c c++ window ...