Nagios 是一款自动化运维工具,可以协助运维人员监控服务器的运行状况,并且拥有报警功能。本文章将介绍其安装方法和详细的配置方法。

总结

  1. 可以做资源,网络,应用服务的监控
  2. 配置上需要配置被监控的,服务,账号等信息
  3. 有 web 管理界面可操作
  4. 教程里没有提及被监控端的配置,暂止,估计坑多。

nagios 监控服务应用指南

  • 本地资源:负载,CPU,磁盘,内存。IO,RAID,温度,passwd文件变化,本地所有文件指纹识别
  • 网络服务:端口,URL,丢包,进程,网络流量
  • 其他设备:交换机,打印机,windows等。
  • 业务数据:用户登录失败次数,用户登录网站次数,输入验证码失败的次数,某个API接口流量并发,电商网站订单,支付交易的数量

nagios主要功能

  • 网络服务监控(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插件。
角色 IP地址 所用软件
监控端 10.211.55.4 nagios-4.4.2、nagios-plugins-2.2.1
被监控端 10.211.55.5

操作步骤

安装环境包

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

创建管理用户
useradd -s /sbin/nologin nagios

创建安装目录,指定属主属组
mkdir /usr/local/nagios
chown -R nagios.nagios /usr/local/nagios

编译安装nagios

wget http://jaist.dl.sourceforge.net/project/nagios/nagios-4.x/nagios-4.4.2/nagios-4.4.2.tar.gz
tar -zxvf nagios-4.4.2.tar.gz -C /opt

cd /opt/nagios-4.4.2
./configure --prefix=/usr/local/nagios
make all
make install
make install-init
make install-commandmode
make install-config

验证安装结果
ls /usr/local/nagios

安装nagios-plugins

wget https://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz
tar xvzf nagios-plugins-2.2.1.tar.gz -C /opt

cd /opt/nagios-plugins-2.2.1
./configure --prefix=/usr/local/nagios
make && make install

配置nagios监控系统

修改httpd.conf
vim /etc/httpd/conf/httpd.conf
User nagios
Group nagios //修改原用户名apache为nagios

  DirectoryIndex index.html index.php //增加index.php

AddType application/x-httpd-php .php //插入该句

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

vim /etc/httpd/conf/httpd.conf
#setting for nagios
ScriptAlias /nagios/cgi-bin "/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

Alias /nagios "/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

设置登陆用户名及密码
htpasswd -c /usr/local/nagios/etc/htpasswd chen

配置nagios

配置nagois 一般在目录/usr/local/nagios/etc/下

templates.cfg
主要用于监控主机资源以及服务,在nagios配置中称为对象,为了不必重复定义一些监控对象,Nagios引入了一个模板配置文件,将一些共性的属性定义成模板,以便于多次引用。contact_groups 联系组属性改成 np 将在后面的contacts.cfg文件中定义

vim /usr/local/nagios/etc/object/templates.cfg
contact_groups np //文中有五处都需修改

resource.cfg文件
resource.cfg是nagios的变量定义文件 一般无需更改

commands.cfg文件
此文件默认是存在的,无需修改即可使用,当然如果有新的命令需要加入时,在此文件进行添加即可

hosts.cfg文件
此文件默认不存在,需要手动创建,hosts.cfg主要用来指定被监控的主机地址以及相关属性信息,注意书写格式,不要有多余的空格

vim /usr/local/nagios/etc/objects/hosts.cfg
define host{

use linux-server //引用主机linux-server的属性信息,linux-server主机在templates.cfg文件中进行了定义。
host_name Nagios-Linux //主机名,自定义
alias Nagios-Linux //主机别名
address 10.211.55.5 //被监控的主机地址,这个地址可以是ip,也可以是域名。
}

define hostgroup{ //定义一个主机组
hostgroup_name bsmart-servers //主机组名称,可以随意指定。
alias bsmart servers //主机组别名
members Nagios-Linux //主机组成员,其中“Nagios-Linux”就是上面定义的主机。

}

localhost.cfg
用来监控本机 一般无需更改

services.cfg
此文件默认也不存在,需要手动创建,主要用于定义监控的服务和主机资源

vim /usr/local/nagios/etc/objects/services.cfg
define service{

use local-service //引用local-service服务的属性值,local-service在templates.cfg文件中进行了定义。
host_name Nagios-Linux //指定要监控哪个主机上的服务,“Nagios-Server”在hosts.cfg文件中进行了定义。
service_description check-host-alive //对监控服务内容的描述,以供维护人员参考。
check_command check-host-alive //指定检查的命令。
}

contacts.cfg
contacts.cfg是一个定义联系人和联系人组的配置文件,注意书写格式。

vim /usr/local/nagios/etc/objects/contacts.cfg
define contact{
contact_name chen //联系人的名称,这个地方不要有空格
use generic-contact //引用generic-contact的属性信息,其中“generic-contact”在templates.cfg文件中进行定义
alias Nagios Admin
email 332846174@qq.com //填入真实可用邮箱,也可不写
}
define contactgroup{
contactgroup_name np //联系人组的名称,同样不能空格
alias Technical Support //联系人组描述,言简意赅,能懂什么意思就行
members chen //联系人组成员,其中“chen”就是上面定义的联系人,如果有多个联系人则以逗号相隔
}

    cgi.cfg

此文件用来控制相关cgi脚本,由于nagios的web监控界面验证用户为chen,所以只需在cgi.cfg文件中添加此用户的执行权限

default_user_name=chen
authorized_for_system_information=nagiosadmin,chen

authorized_for_configuration_information=nagiosadmin,chen

authorized_for_system_commands=chen
authorized_for_all_services=nagiosadmin,chen

authorized_for_all_hosts=nagiosadmin,chen
authorized_for_all_service_commands=nagiosadmin,chen

authorized_for_all_host_commands=nagiosadmin,chen //配置文件末尾插入

nagios.cfg
将对象配置文件在Nagios.cfg文件中进行引用

vim /usr/local/nagios/etc/nagios.cfg
cfg_file=/usr/local/nagios/etc/objects/hosts.cfg
cfg_file=/usr/local/nagios/etc/objects/services.cfg //合适的位置插入
command_check_interval=10s //该变量用于设置nagios对外部命令检测的时间间隔,插入即可。

验证配置文件准确性
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

重启服务
systemctl restart httpd.service
systemctl restart nagios.service

访问nagios网站

该网站设置了登陆验证,所以在访问网站是输入之前设置的用户名和密码即可登陆网站。

http://10.211.55.4/nagios/

增加主机数

修改hosts.cfg文件
此文件默认不存在,需要手动创建,hosts.cfg主要用来指定被监控的主机地址以及相关属性信息,注意书写格式,不要有多余的空格

vim /usr/local/nagios/etc/objects/hosts.cfg
define host{

use linux-server //引用主机linux-server的属性信息,linux-server主机在templates.cfg文件中进行了定义。
host_name Nagios-Linux //主机名,自定义
alias Nagios-Linux //主机别名
address 10.211.55.5 //被监控的主机地址,这个地址可以是ip,也可以是域名。
}

define host{
use linux-server
host_name Nagios-Linu
alias Nagios-Linu
address 10.211.55.6
}

define hostgroup{ //定义一个主机组
hostgroup_name bsmart-servers //主机组名称,可以随意指定。
alias bsmart servers //主机组别名
members Nagios-Linux,Nagios-Linu //主机组成员,其中“Nagios-Linux”就是上面定义的主机。

}

重启服务
systemctl restart httpd。service
systemctl restart nagios.service

参考

CentOS 7.4 下安装部署Nagios监控系统详细攻略

Centos7 Nagios 搭建的更多相关文章

  1. centos7 环境搭建

    centos7 环境搭建    CentOS-7-x86_64-DVD-1511.iso    vmware121. 安装    使用iso安装系统:2. 修改yum源到光盘        先把光盘C ...

  2. [原创]nagios搭建配置

    nagios搭建配置 一.环境 ubuntu 14.04系统 host1:172.17.0.2 serverhost2:172.17.0.3 client 二.安装 1.在两个主机上都执行一下命令: ...

  3. Kafka(二)CentOS7.5搭建Kafka2.11-1.1.0集群与简单测试

    一.下载 下载地址: http://kafka.apache.org/downloads.html    我这里下载的是Scala 2.11对应的 kafka_2.11-1.1.0.tgz 二.kaf ...

  4. 在Centos7下搭建Socks5代理服务器

    在Centos7下搭建Socks5代理服务器 http://blog.51cto.com/quliren/2052776   采用socks协议的代理服务器就是SOCKS服务器,是一种通用的代理服务器 ...

  5. 第四百零五节,centos7下搭建sentry错误日志服务器,接收python以及Django错误,

    第四百零五节,centos7下搭建sentry错误日志服务器,接收python以及Django错误, 注意:版本,不然会报错 Docker >=1.11Compose >1.6.0 通过d ...

  6. Hyperledger超级账本在Centos7下搭建运行环境

    超级账本(hyperledger)是Linux基金会于2015年发起的推进区块链数字技术和交易验证的开源项目,加入成员包括:荷兰银行(ABN AMRO).埃森哲(Accenture)等十几个不同利益体 ...

  7. git操作:在CentOS7上面搭建GitLab服务器

    在这篇文章中将要讲解如何在CentOS7上面搭建本地的GitLab服务器. 一.安装并配置必要的依赖关系 首先要在CentOS系统上面安装所需的依赖:ssh.防火墙.postfix(用于邮件通知).w ...

  8. Storm(二)CentOS7.5搭建Storm1.2.2集群

    一.Storm的下载 官网下载地址:http://storm.apache.org/downloads.html 这里下载最新的版本storm1.2.2,进入之后选择一个镜像下载 二.Storm伪分布 ...

  9. HBase(二)CentOS7.5搭建HBase1.2.6HA集群

    一.安装前提 1.HBase 依赖于 HDFS 做底层的数据存储 2.HBase 依赖于 MapReduce 做数据计算 3.HBase 依赖于 ZooKeeper 做服务协调 4.HBase源码是j ...

随机推荐

  1. 如何清理Docker占用的磁盘空间?(转载)

    本文转载自https://blog.fundebug.com/2018/01/10/how-to-clean-docker-disk/ , 感谢原作者. 摘要:用了Docker,好处挺多的,但是有一个 ...

  2. [物理学与PDEs]第5章习题4 广义 Hookean 定律的张量的对称性

    设材料是超弹性的, 并设参考构形为自然状态, 证明由线性化得到的张量 ${\bf A}=(a_{ijkl})=\sex{2\cfrac{\p \bar p_{ij}}{c_{kl}}}$ 具有以下的对 ...

  3. 目标检测网络之 YOLOv3

    本文逐步介绍YOLO v1~v3的设计历程. YOLOv1基本思想 YOLO将输入图像分成SxS个格子,若某个物体 Ground truth 的中心位置的坐标落入到某个格子,那么这个格子就负责检测出这 ...

  4. 异常-CDH的service无法启动并抛出异常-org.apache.avro.AvroRemoteException: java.net.ConnectException: Connection refused (Connection refused)

    1 详细异常 org.apache.avro.AvroRemoteException: java.net.ConnectException: Connection refused (Connectio ...

  5. List总结

    List是接口,不能直接new,需要使用它的实现类 所有已知实现类:AbstractList, AbstractSequentialList, ArrayList, AttributeList, Co ...

  6. Python 入门基础14 --time、os、random、json、pickle 常用模块1

    今日内容: 一.常用模块 2019.04.10 更新 1.time:时间 2.calendar:日历 3.datetime:可以运算的时间 4.sys:系统 5.os:操作系统 6.os.path:系 ...

  7. 网络学习day02_OSI七层模型及数据的传输过程

    title: 2018.9.2 OSI七层模型及数据的传输过程 tags: 计算机网络, OSI七层模型, 数据传输, 数据解封装 --- OSI七层模型和TCP/IP五层模型 OSI七层模型 我们说 ...

  8. POJ 1556 The Doors(线段相交+最短路)

    题目: Description You are to find the length of the shortest path through a chamber containing obstruc ...

  9. 深度学习在graph上的使用

    原文地址:https://zhuanlan.zhihu.com/p/27216346 本文要介绍的这一篇paper是ICML2016上一篇关于 CNN 在图(graph)上的应用.ICML 是机器学习 ...

  10. C++设计模式——备忘录模式

    备忘录模式 在GOF的<设计模式:可复用面向对象软件的基础>一书中对备忘录模式是这样说的:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢 ...