好文档 - 专业文书写作范文服务资料分享网站

监控系统Nagios系列(三) 运行时

天下 分享 时间: 加入收藏 我要投稿 点赞

监控系统Nagios系列(三) 运行时

1. 编译安装

Nagios安装需要从源代码编译,Nagios本身对外部依赖很小(apache2, PHP, GD, GCC)。具体的安装,Nagios官方文档有step by step的介绍,本人使用的ubuntu,如果你也使用的是ubuntu,那么参考这里如何安装。

官方的文档安装的是3.2.3版本,且安装了插件,这片文章里面,安装的是4.0版本,且没有插件。不安装插件是为了更好理解。

不安装插件很简单,就是不安装xxx_plugin的包就可以。PS:没有特别说明,后续出现的Nagios都是指Nagios Core。2. 运行时全景图

Nagios Core 是不包含任何监控实现的,所有的监控实现都是由Plugin提供的,Nagios Core 只负责定义对象,执行插件,获取结果,通知状态变化。上图是 Nagios Core + 各种Plugin 的全景图。

Objects

被监控的对象,可以是通用服务器,路由器,交换机等。与这些对象交互,都是通过插件完成的,因此通过增加新的插件很容易扩展新的监控对象。图里面提到的Active Checks, PassiveChecks稍后会介绍。Status

监控数据的展示。包含状态通知,性能数据展示。状态通知也是由插件实现的,因此开发者可以定义任何形式的通知,短信,邮件,微信,都可以。Nagios

图中的Nagios 表示 Nagios Core ,Plugins 表示各种插件, Performance Data 是插件输出的性能数据。 N2RRD 是一个插件,可以将性能数据保存到 RRD 数据库中。 RRD 的全称是Round Robin Database ,是专门设计存储与时间相关的监控数据。RRD 有一个开源实现 rrdtool ,rrdtool 提供了操纵监控数据的接口,并提供将监控数据以图表输出的能力,关于 rrdtool 后面我们会单独介绍。Active Checks & Passive Checks

Nagios 定义了两种检查的类型。Active Checks 是表示由 Nagios 进程执行后获取到结果的检查;Passive Checks 表示由外部系统检查获取到结果后,将结果发送给 Nagios 处理。之所以需要 Passive Checks 是因为一些数据的获取,并不是每次主动执行获得的,典型的如SNMP Trap,这种接口,是被动接收的,所以插件需要提供一个常驻进程负责接收 SNMPTrap,然后将数据发送给 Nagios 处理。

3. 目录结构

Nagios 默认安装在 /usr/local/nagios 目录下,下面是 Nagios 根目录下的目录:

drwxrwxr-x 2 nagios nagios 4096 1月 19 20:33 bindrwxrwxr-x 3 nagios nagios 4096 1月 19 20:37 etcdrwxrwxr-x 2 nagios nagios 4096 1月 19 20:33 libexecdrwxrwxr-x 2 nagios nagios 4096 1月 19 20:33 sbindrwxrwxr-x 10 nagios nagios 4096 1月 19 20:33 sharedrwxrwxr-x 5 nagios nagios 4096 1月 19 22:11 var

bin

可执行文件目录。包含:nagios, nagiostats 。nagios 是主文件,启动 nagios 就是这个可执行文件。

etc

所有的配置文件目录。包含全局配置文件,对象配置文件等。libexec

插件存放目录。每个插件就是一个或多个可执行文件。插件并不要求一定存放在此目录,插件可以存放在任何目录。libexec 只是约定的插件存放目录。sbin

CGI 可执行文件,处理Web展示相关逻辑。share

Web文件,包括 HTML ,PHP 等。var

运行时动态文件或临时文件目录。存放 PID 文件,log 文件等。etc 目录结构:

-rw-rw-r-- 1 nagios nagios 12015 1月 19 20:33 cgi.cfg-rw-r--r-- 1 root root 50 1月 19 20:37 htpasswd.users-rw-rw-r-- 1 nagios nagios 44475 1月 19 20:33 nagios.cfgdrwxrwxr-x 2 nagios nagios 4096 1月 19 20:33 objects-rw-rw---- 1 nagios nagios 1312 1月 19 20:33 resource.cfg

cgi.cfg

Web相关的配置。htpasswd.users

Web登录用户名和密码。nagios.cfg

Nagios主配置文件。objects

对象文件目录。resource.cfg

用户自定义宏 (macro) 保存在此文件。var 目录结构:

drwxrwxr-x 2 nagios nagios 4096 1月 19 20:33 archives-rw-r--r-- 1 nagios nagios 6 1月 19 20:45 nagios.lock-rw-r--r-- 1 nagios nagios 8842 1月 19 21:45 nagios.log-rw-r--r-- 1 nagios nagios 12660 1月 19 20:45 objects.cache-rw------- 1 nagios nagios 13474 1月 19 21:45 retention.datdrwxrwsr-x 2 nagios nagcmd 4096 1月 19 20:46 rwdrwxr-xr-x 3 root root 4096 1月 19 20:33 spool

-rw-rw-r-- 1 nagios nagios 13910 1月 19 22:33 status.dat

archives

日志 log 归档目录。nagios.lock

防止多个进程同时启动的锁文件。nagios.log日志文件。objects.cache

对象缓存文件。 Nagios 可以将对象缓存到此文件,加快访问速度。retention.dat

Nagios运行过程中dump出来的文件。 Nagios 可以将运行过程中内存中有用的信息dump到

文件,持久化。下次启动时候,会读取这个文件,继续上次未完成的工作。rw

外部程序吐数据给 Nagios 存放在此目录。还有在Web页面上用户可以指定执行的命令,也存放在此目录。spool

Nagios 执行检查时候,会将插件的输出保存到文件,默认在此目录。status.dat

对象状态信息。Nagios会定时将对象状态信息保存到此文件。Web程序读取此文件内容,展示到页面。

4. 线程

Nagios 只有一个主线程,不要惊讶。 Nagios实际上是使用多进程替代了多线程,下面会讲解进程模型。

Nagios 不使用多线程,推测有两个原因:

技术限制

Nagios 在90年代就有了,是C代码实现的。那时候还没有多线程,从线程的名字LWP(LightWeigth Process)也可以看到,线程实际上是轻量级进程。健壮性

Nagios 监控对象状态,都是通过执行插件得到返回结果,因此 Nagios 会执行数量巨大的外部命令,外部命令可能执行过程僵死,如果使用线程,那么 Nagios 进程就会存在一些线程被挂住无法继续工作,会影响 Nagios 进程的资源消耗,会影响其他插件的执行。通过进程隔离可以减少 Nagios 进程不工作的概率。

Nagios的主线程,是一个自给自足的模型,套用生产者-消费者模型,主线程即是生产者又是消费者。主线程循环检查事件队列,发现有到期的事件,则根据事件类型,处理该事件。如果是执行插件检查状态的事件,那么主线程会拼装命令,交给子进程执行。很简单!!!

5. 进程

Nagios 有一个主进程(Nagios Daemon),还有一些 Worker 进程,Worker 进程负责执行由Nagios Daemon 进程传递过来的命令。

Worker 的数量可以配置,默认四个,可以在 nagios.cfg 文件中更改此值:

nagios 10474 1 0 20:45 ? 00:00:01 ./nagios -d /usr/local/nagios/etc/nagios.cfgnagios 10475 10474 0 20:45 ? 00:00:00 /usr/local/nagios/bin/nagios --worker/usr/local/nagios/var/rw/nagios.qh

nagios 10476 10474 0 20:45 ? 00:00:00 /usr/local/nagios/bin/nagios --worker/usr/local/nagios/var/rw/nagios.qh

nagios 10477 10474 0 20:45 ? 00:00:00 /usr/local/nagios/bin/nagios --worker/usr/local/nagios/var/rw/nagios.qh

nagios 10478 10474 0 20:45 ? 00:00:00 /usr/local/nagios/bin/nagios --worker/usr/local/nagios/var/rw/nagios.qh

nagios 10481 10474 0 20:46 ? 00:00:00 ./nagios -d /usr/local/nagios/etc/nagios.cfg

Nagios 主进程与 Worker 进程之间通过Linux 的文件socket通信,这个文件就是 上面看到的nagios.qh 文件。

监控系统Nagios系列(三) 运行时

监控系统Nagios系列(三)运行时1.编译安装Nagios安装需要从源代码编译,Nagios本身对外部依赖很小(apache2,PHP,GD,GCC)。具体的安装,Nagios官方文档有stepbystep的介绍,本人使用的ubuntu,如果你也使用的是ubuntu,那么参考这里如何安装。官方的文档安装的是3.2.3版本,且安装了插件
推荐度:
点击下载文档文档为doc格式
5c2yw6y18y4mn0g1mmp04oweh0q68m00ooe
领取福利

微信扫码领取福利

微信扫码分享