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
- 最初称为nagios的服务,现在称为nagios core .core 是作为IT系统, 网络和基础架构的开源监视软件免费提供的。通过允许插件扩展监控 能力, Core 包含了各种基础结构监控。是付费nagios监控的基础。
- nagios core 包含有一个可选择的web界面,用于展示网络状态,通知,日志文件等。
- 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. 这种属于轮询调度。
被动检查通常使用场景
- 本身监控项的就是应该异步的,不适合轮询方式监控,那么采用被动检查。
- 要监控的节点实在防火墙后面,也就是只能出外网,不能外网访问,那么可以采取被动。
问题:被动检测怎么获取到统一的检测配置呢?难道不能集中管理?
被动检查是怎样工作的
- 一个external application 检测主机或者服务的状态
- the external application 写检测结果到 external command file
- 下一次,Nagios Core 读取the external command file,它将把被动检测的结果放入一个队列中供后续的处理。
- Nagios COre 将定义期执行一个check result reaper event 然后扫描检测结果队列。每一个服务的检测结果同样的方式处理。无论这个检测结果是active或者passive检测结果。然后根据处理结果,可能会发送通知或者日志告警等。
开启被动检测
- 设置accept_passive_service_checks = 1 # 控制全局
- 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主机上运行的守护程序和从远程主机执行的客户端组成。 守护程序将侦听来自远程客户端的连接,对提交的结果执行一些基本的验证,然后将检查结果直接写入外部命令文件(如上所述)。
建议学习路径
- 放松点,虽然nagios不是开箱即用的一个监控系统。提供了灵活的配置,所以要有心理准备会花些时间在上面,难度就在花时间,而不是其它的。
- 使用了快速搭建指导,大概就20min就能安装并监控到你的本地系统。一旦完成,建议开始学习怎么配置nagios去做更多事情。
- 当你不了解一些东西时,你可能会感到非常大的挑战在进行配置时。这时候就要静下心来,确定读取了文档文档连接 ,特别是读取“Configuring Naigos”和 “The Basics”,即配置ngaiso和基础支持部分。对于高阶知识部分要在你对基础有好的掌握后进行学习。
- 求助可以通过论坛
安装Nagios
System Requirements系统要求
- Linux or Unix
- 能够被网络访问到
- 如果是源码安装,需要有一个C complier
- 如果需要web界面,那么还需要一个web server,如推荐apache,及Thomas Boutell's gd library version 1.6.3 or higher (required by the statusmap and trends cgis)+
Ubu安装
- disable selinux 停用掉selinux, ubu默认是关闭了的
- 做一些准备工作, 这里已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
-
下载源码
参照这里 -
编译
cd /tmp/nagioscore-nagios-4.x.x/
sudo ./configure --with-httpd-conf=/etc/apache2/sites-enabled
sudo make all
- 创建用户和组,用户nagios应用的用户和组
后面的www-data 用户也会加入到这个nagios组中
sudo make install-groups-users
sudo usermod -a -G nagios www-data
- 安装二进制
sudo make install
- 安装配置服务/Daemon
就是创建服务配置文件,并用于开机启动
sudo make install-daemoninit
- 安装命令模式
安装和配置其它的命令文件
sudo make install-commandmode
- 安装 配置文件
安装样例配置文件,这些配置用于nagios启动
sudo make install-config
- 安装apache配置文件
安装apache web server的配置文件和设置
sudo make install-webconf
sudo a2enmod rewrite
sudo a2enmod cgi
- 配置防火墙
允许80 入口流量在本地防火墙
sudo ufw allow Apache
sudo ufw reload
- 创建nagiosadmin账号
创建一个Apache用户账号用于登录到Nagios
下面这条命令,将创建一个用户账号,叫做nagiosadmin,需要提供一个password
sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
注意:当要添加额外账号时,也是用上面命令,但是要把-c 参数去掉,不然会新建这个账号会替换掉nagiosadmin。还有这里的是账号时基于apache的一个账号,说明apache有权限操作nagios,作为nagios的一个web代理操作nagios。问题:nagios没有账号管理吗?
- 启动apache web server
sudo systemctl restart apache2.service # 适用 ubu 15.x/16.x/17.x/18.x/20.x
- 启动nagios service daemon
sudo systemctl start nagios.service # 适用 ubu 15.x/16.x/17.x/18.x/20.x
- 现在可以访问nagios web interface了
- 到此只是安装完成了nagios core, 这是web会提示一个no outpu on stdout。。。错误提示,是因为还没有安装nagios plugins。下面将安装nagios plugins。
Centos/Debian系统安装
安装Nagios Plugins
- 安装依赖
sudo apt-get install -y autoconf gcc libc6 libmcrypt-dev make libssl-dev wget bc gawk dc build-essential snmp libnet-snmp-perl gettext
- 下载源码
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
- 编译和安装
cd /tmp/nagios-plugins-release-2.2.1/
sudo ./tools/setup
sudo ./configure
sudo make
sudo make install
- 测试Plugins
安装Nagios Core最后一步说了,在默认的hosts和service下的监控项,都是红色的错误提示,那是因为没有安装Nagios Plugins。现在已经安装了,我们可以通过进出入监控项,然后在监控项详情的右边列表中,有一个“Re-Schedule ...next chekc”,点击进去,就可以手动调度一次监控项的检测,然后直接submit提交,就可以看到我们的监控项状态变为OK。这就说明我们的nagios plugins安装运行成功。
Nagios后台服务启停管理
- 启动
sudo systemctl start nagios.service - 停止
sudo systemctl stop nagios.service - 重启
sudo systemctl restart nagios.service - 查看状态
sudo systemctl status nagios.service
其它方式
- init脚本启动nagios core
/etc/rc.d/init.d/nagios start
- nagios二进制启动方式
/usr/local/nagios/bin/nagios -d /user/local/nagios/etc/nagios.cfg # -d表示daemon启动,后面是指定配置文件
- 当修改配置文件是,可以要restart/reload
# init 脚本重启
/etc/rc.d/init.d/nagios reload
# web 界面
进入process info,然后在里面有一个“restart the nagios process"可以重启
# 利用linux进程信号量
kill -HUP pid
- 停止nagios
# init 脚本停止
/etc/rc.d/init.d/nagios stop
# web 界面
还是process info 点击”shutdown the nagios process"
其实原理就是通过cgi脚本来关闭
# linux信号量
kill <nagios-pid>
好久没更新过了,最近研究开源域控,用到nagios监控,重新梳理一遍