0x00 Nagios介绍与安装

Nagios介绍与安装

Nagios是一款监控系统。开源的监控系统,用于监控计算机/网络系统。安装运行在linux环境。

介绍

  • 开源,当然nagios也有其商业的版本,那就是nagios xi. 主要就是nagios core是开源的,我们也主要使用nagios core 和开源nagios pulgins组成我们的开源监控系统
  • 支持主动check和被动check,主动check是由nagios发起,被动check则是来自被连接到监控工具的外部应用
  • Nagios起初是叫做Netsaint,发布于1999年。Ethan Galstad 开发了Nagios,随后作为开源项目有了很多的贡献者
  • Nagios公司成立来维护Nagios核心技术,并提供了多种产品,像XI, Log server, Network Analyzer and Fusion。

Nagios几个产品的区别

Nagios Core

  1. 最初称为nagios的服务,现在称为nagios core .core 是作为IT系统, 网络和基础架构的开源监视软件免费提供的。通过允许插件扩展监控 能力, Core 包含了各种基础结构监控。是付费nagios监控的基础。
  2. nagios core 包含有一个可选择的web界面,用于展示网络状态,通知,日志文件等。
  3. nagiso core 支持通知,支持SMTP, HTTP, Ping

Nagios XI

在nagios core 基础上提供了跟人性化的接口界面,还有周期报告,和邮 件技术支持等,是要付费购买

Nagios Log Server

是一个日志监控及管理工具,可以组织日志查看,排序,配置日志,包括windows event logs。收集分析日志。

Nagios Network Analyzer

跟踪网络流量和带宽利用率

Nagios Fusion

是针对Core 与 XI的聚合服务,可以在一个视图中显示多个系统。可以借助Fusion,可以允许哪些用户查看哪些服务的监控。

除了nagios core和nagios plugins其它的都不是我们目前关心的,因为其它都是商业付费的。这里只是列举出来,避免误入歧途,把时间花费志研究商业版本

监控方式或途径

agent-base

安装代理软件在目标系统或主机上,通过代理软件收集目标中的数据并报告给管理server

代理软件包括:

  • Nagios Remote Data Processor (NRDP)
  • Nagios Cross Plaform Agent (NCPA)
  • Nagios Remote Pluin Executor (NRPE) 用于运行远程脚本和插件,多用于收集系统参数:负载,内存,磁盘用量。

check_nrpe插件,安装位于本地; 而NRDP插件安装运行在远程主机。

关于插件:

  • nagios支持插件是独立和可扩展的,这样用户可以自定义目标的哪些参数需要被监控。
  • 插件处理命令行传入的参数,将命令与nagios core 交流通信。
  • 大概有50多个插件被nagios开发和维护,有3000多个来自社区维护。
  • 插件被分类出来,包括硬件,软件,云,OSes, 安全, 日志文件,网络连接。

agentless

不通过代理软件的方式, 是利用监控目标支持的对外协议或对外接口来达到(如ssh, tcp/ip原理)模拟一个agent作用

主动检测Active Check

  • 主动检测是被Nagios Core进程初始化
  • 定期执行主动检查
    主动检查由Nagios Core守护程序中的检查逻辑启动。当Nagios Core需要检查主机或服务的状态时,它将执行插件并向其传递有关需要检查的信息。然后,插件将检查主机或服务的运行状态,并将结果报告回Nagios Core守护程序。 Nagios Core将处理主机或服务检查的结果,并根据需要采取适当的措施(例如,发送通知,运行事件处理程序等)。

被动检测Passive Check

  • 被动检测初始化和performed是被额外的进程
  • 被动检测的结果被提交到Nagios Core处理
  • 与主动check的主要不同点就是,主动检查的初始化和执行都是被Nagios Core来调度的。而被动检查的初始化和执行都是被external applications。
    大多数的情况下,都是使用Nagios Core来监控hosts和services利用定义调度的主动check. 这种属于轮询调度。

被动检查通常使用场景

  • 本身监控项的就是应该异步的,不适合轮询方式监控,那么采用被动检查。
  • 要监控的节点实在防火墙后面,也就是只能出外网,不能外网访问,那么可以采取被动。

问题:被动检测怎么获取到统一的检测配置呢?难道不能集中管理?

被动检查是怎样工作的

  1. 一个external application 检测主机或者服务的状态
  2. the external application 写检测结果到 external command file
  3. 下一次,Nagios Core 读取the external command file,它将把被动检测的结果放入一个队列中供后续的处理。
  4. Nagios COre 将定义期执行一个check result reaper event 然后扫描检测结果队列。每一个服务的检测结果同样的方式处理。无论这个检测结果是active或者passive检测结果。然后根据处理结果,可能会发送通知或者日志告警等。

开启被动检测

  1. 设置accept_passive_service_checks = 1 # 控制全局
  2. passive_checks_enabled 在host和service定义中设置为1 # 控制单个监控对象

提交被动服务检测结果

external applications can submit passive service check results to Nagios Core by writing a PROCESS_SERVICE_CHECK_RESULT external command to the external command file.
external applications 提交被动服务检测结果到nagios core是通过写PROCESS_SERVICE_CHECK_RESULT命令及其结果参数到external command file
命令行格式:
[<timestamp>] PROCESS_SERVICE_CHECK_RESULT;<host name>;<svc_description>;<return_code>;<plugin_output>

svc_description就是用于给处理结果的程序定位这个监控结果是哪个服务的。

服务必须在被动检测开始前,就要在Nagios Core中定义好。

从远程主机提交被动检查结果

如果与Nagios Core驻留在同一主机上的应用程序正在发送被动主机或服务检查结果,则它可以简单地将结果直接写入外部命令文件,如上所述。 但是,远程主机上的应用程序无法做到这一点。

为了允许远程主机将被动检查结果发送到监视主机,可以使用NSCA或NRDP插件。 NSCA附加程序由在Nagios Core主机上运行的守护程序和从远程主机执行的客户端组成。 守护程序将侦听来自远程客户端的连接,对提交的结果执行一些基本的验证,然后将检查结果直接写入外部命令文件(如上所述)。

passive check

建议学习路径

  1. 放松点,虽然nagios不是开箱即用的一个监控系统。提供了灵活的配置,所以要有心理准备会花些时间在上面,难度就在花时间,而不是其它的。
  2. 使用了快速搭建指导,大概就20min就能安装并监控到你的本地系统。一旦完成,建议开始学习怎么配置nagios去做更多事情。
  3. 当你不了解一些东西时,你可能会感到非常大的挑战在进行配置时。这时候就要静下心来,确定读取了文档文档连接 ,特别是读取“Configuring Naigos”和 “The Basics”,即配置ngaiso和基础支持部分。对于高阶知识部分要在你对基础有好的掌握后进行学习。
  4. 求助可以通过论坛

安装Nagios

System Requirements系统要求

  1. Linux or Unix
  2. 能够被网络访问到
  3. 如果是源码安装,需要有一个C complier
  4. 如果需要web界面,那么还需要一个web server,如推荐apache,及Thomas Boutell's gd library version 1.6.3 or higher (required by the statusmap and trends cgis)+

Ubu安装

  1. disable selinux 停用掉selinux, ubu默认是关闭了的
  2. 做一些准备工作, 这里已ubutu 18.x 例子。不同版本可以查看点击这里
sudo apt-get update
sudo apt-get install -y autoconf gcc libc6 make wget unzip apache2 php libapache2-mod-php7.4 libgd-dev
  1. 下载源码
    参照这里

  2. 编译

cd /tmp/nagioscore-nagios-4.x.x/
sudo ./configure --with-httpd-conf=/etc/apache2/sites-enabled
sudo make all
  1. 创建用户和组,用户nagios应用的用户和组
    后面的www-data 用户也会加入到这个nagios组中
sudo make install-groups-users 
sudo usermod -a -G nagios www-data 
  1. 安装二进制
sudo make install
  1. 安装配置服务/Daemon
    就是创建服务配置文件,并用于开机启动
 sudo make install-daemoninit
  1. 安装命令模式
    安装和配置其它的命令文件
sudo make install-commandmode
  1. 安装 配置文件
    安装样例配置文件,这些配置用于nagios启动
sudo make install-config
  1. 安装apache配置文件
    安装apache web server的配置文件和设置
sudo make install-webconf
sudo a2enmod rewrite
sudo a2enmod cgi
  1. 配置防火墙
    允许80 入口流量在本地防火墙
sudo ufw allow Apache
sudo ufw reload
  1. 创建nagiosadmin账号
    创建一个Apache用户账号用于登录到Nagios
    下面这条命令,将创建一个用户账号,叫做nagiosadmin,需要提供一个password
sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

注意:当要添加额外账号时,也是用上面命令,但是要把-c 参数去掉,不然会新建这个账号会替换掉nagiosadmin。还有这里的是账号时基于apache的一个账号,说明apache有权限操作nagios,作为nagios的一个web代理操作nagios。问题:nagios没有账号管理吗?

  1. 启动apache web server
sudo systemctl restart apache2.service # 适用 ubu 15.x/16.x/17.x/18.x/20.x
  1. 启动nagios service daemon
sudo systemctl start nagios.service  # 适用 ubu 15.x/16.x/17.x/18.x/20.x
  1. 现在可以访问nagios web interface了
  1. 到此只是安装完成了nagios core, 这是web会提示一个no outpu on stdout。。。错误提示,是因为还没有安装nagios plugins。下面将安装nagios plugins。

Centos/Debian系统安装

安装指导:点击链接

安装Nagios Plugins

  1. 安装依赖
sudo apt-get install -y autoconf gcc libc6 libmcrypt-dev make libssl-dev wget bc gawk dc build-essential snmp libnet-snmp-perl gettext
  1. 下载源码
cd /tmp

wget --no-check-certificate -O nagios-plugins.tar.gz https://github.com/nagios-plugins/nagios-plugins/archive/release-2.2.1.tar.gz

tar zxf nagios-plugins.tar.gz
  1. 编译和安装
cd /tmp/nagios-plugins-release-2.2.1/
sudo ./tools/setup
sudo ./configure
sudo make
sudo make install
  1. 测试Plugins
    安装Nagios Core最后一步说了,在默认的hosts和service下的监控项,都是红色的错误提示,那是因为没有安装Nagios Plugins。现在已经安装了,我们可以通过进出入监控项,然后在监控项详情的右边列表中,有一个“Re-Schedule ...next chekc”,点击进去,就可以手动调度一次监控项的检测,然后直接submit提交,就可以看到我们的监控项状态变为OK。这就说明我们的nagios plugins安装运行成功。

Nagios后台服务启停管理

  1. 启动
    sudo systemctl start nagios.service
  2. 停止
    sudo systemctl stop nagios.service
  3. 重启
    sudo systemctl restart nagios.service
  4. 查看状态
    sudo systemctl status nagios.service

其它方式

  1. init脚本启动nagios core
/etc/rc.d/init.d/nagios start
  1. nagios二进制启动方式
/usr/local/nagios/bin/nagios -d /user/local/nagios/etc/nagios.cfg  # -d表示daemon启动,后面是指定配置文件
  1. 当修改配置文件是,可以要restart/reload
# init 脚本重启
/etc/rc.d/init.d/nagios reload

# web 界面
进入process info,然后在里面有一个“restart the nagios process"可以重启

# 利用linux进程信号量
kill -HUP pid
  1. 停止nagios
# init 脚本停止
/etc/rc.d/init.d/nagios stop

# web 界面
还是process info 点击”shutdown the nagios process"
其实原理就是通过cgi脚本来关闭

# linux信号量
kill <nagios-pid>

好久没更新过了,最近研究开源域控,用到nagios监控,重新梳理一遍

posted @ 2020-09-22 11:13  ZJiQi  阅读(751)  评论(0编辑  收藏  举报