• 抬起头,继续前进吧,去把这个不完美的故事,变成你成所期望的样子
  • 登山路上我们会放弃很多东西,但这些被我们丢掉在我们登上山顶之际,都会一一回来
  • 不论开发还是逆向,数学水平的高低直接决定了”你的饭碗里有没有肉”
  • 万丈高楼平地起,勿在浮沙筑高台

PNP4nagios工作模式详解 —Bulk Mod with NPCD

Linux 菜鸟 2年前 (2017-12-03) 9101次浏览 已收录 0个评论
[隐藏]

一、流程逻辑图

PNP4nagios 工作模式详解 —Bulk Mod with NPCD

二、步骤详解

主要介绍从插件返回性能数据到最后出图。下面的描述,请参照 “基于 Linux 的 Nagios 监控 PNP4nagios 可视化扩展 联动 Naigos”部分的配置信息

第一步:执行插件

        由 Nagios 执行插件后回收性能数据信息

第二步:汇总性能数据信息

        然后 Naigios 将性能数据信息汇总成卷轴(这里用的是 spool 的直译)文件。
        这个文件在 nagios.cfg 中定义:
                host_perfdata_file 和 service_perfdata_file 定义文件路径
                host_perfdata_file_template 和 service_perfdata_file_template 定义格式

第三步:移动卷轴文件

        Naiogs 会通过命令将卷轴文件移到到卷轴目录(注意要加时间戳区分),如果编译安装 PNP4nagios 时没指定卷轴目录的话默认的话,默认为 PNP4nagios 文件夹下的:./var/spool
        host_perfdata_file_processing_interval 和 service_perfdata_file_processing_interval 定义性能数据写入延迟。
        host_perfdata_file_processing_command 和 service_perfdata_file_processing_command 定义命令执行句柄

第四步:检测卷轴目录

        NPCD 服务会根据 npcd.cfg(在 /usr/local/pnp4nagios/etc 下)中定义的 perfdata_spool_dir 参数去扫描目录,检测是否存在卷轴文件

第五步:调用 perl 脚本

        如果发现文件,NPCD 会将发现的文件建立一个列表,然后为每一个文件开启一个新线程并根据 npcd.cfg 中 perfdata_file_run_cmd 参数        定义的脚本文件(默认为/usr/local/pnp4nagios/libexec/process_perfdata.pl)和 perfdata_file_run_cmd_args 定义的参数(默认为 –bluk 或-b)去处理

第六、七步:生成结果

        如果没有 rrd 数据库则先生成数据库,然后向其中更新数据。同时根据处理的数据生成 XML 文件。这两个文件放在 /usr/local/pnp4nagios/var/perfdata 下的主机名目录中

第八步:生成图片

        图像页面是由 index.php 文件生成(在 /usr/local/pnp4nagios/share 下),由它来读取 XML 文件以及调用对应的图像模板,从而生成图片

三、NPCD

3.1 优势

1、提高 Nagios 的性能
        将后续的性能数据处理从 Nagios core 中分离,使 Nagios 有更多的时间处理自己的工作

2、无数据丢失
        如果 NPCD 意外终止或系统重启后忘记启动它,Nagios 还是会继续汇总性能数据并放入卷轴目录中去。当 NPCD 再次启动后,会按照$TIME_T$宏按顺序处理并更新到 RRD 文件中去

3.2 劣势

1、没有实时更新系能数据
        Nagios 的配置文件中定义了 servive_perfdate_file_processes_interval 来控制性能数据文件写入延迟(定义为 15s)。而且 NPCD 内部有一个目录扫描间隔 10s 的延迟

3.3 npcd.cfg

# Privilege Options
user = nagios
group = nagios

# Logging Options
log_type = syslog
log_file = /usr/local/pnp4nagios/var/npcd.log
max_logfile_size = 10485760
log_level=0

# Processing Options
perfdata_spool_dir = /usr/local/pnp4nagios/var/spool/
perfdata_file_run_cmd = /usr/local/pnp4nagios/libexec/process_perfdata.pl
perfdata_file_run_cmd_args = -b

# Thread Options
npcd_max_threads=5

# greedy options
use_load_threshold = 0
load_threshold = 10.0

# Process Options
pid_file=/var/run/npcd.pid

1、user = [username]
        使用该用户权限启动 NPCD。默认为 nagios

2、group = [groupname]
        使用该用户组权限启动 NPCD。默认为 nagios

3、log_type = [syslog] 或 [file]
        指定 NPCD 使用的日志类型,如果指定是文件则作为日志文件。默认为 syslog

4、log_file = [/path/to/filename]
        指定日志文件。如果 log_type 已指定文件则优先
        默认为/usr/local/pnp4nagios/var/npcd.lo

5、max_logfile_size = [bytes]
        如果日志文件大小大于该限制,则轮替一个新的文件

6、log_level = [value]
        0 = No log – 但会输出错误信息
        1 = small Log – 更多的信息输出
        2 = more Log – 所有的日志信息输出
        -1 = DEBUG Mode
        默认为 0

7、perfdate_spool_dir = [/path/to/spool/dir/]
        性能数据信息汇总的卷轴文件目录
        默认为/usr/local/pnp4nagios/var/spool

8、perfdate_file_run_cmd = [/path/to/filename]
        NPCD 对卷轴文件要执行的脚本或命令
        默认为/usr/local/pnp4nagios/libexec/process_perfdata.pl

9、perfdate_file_run_cmd_args = [option]
        指定 perfdate_file_run_cmd 的参数
        默认为 -b 或 –bluk

10、npcd_max_threads = [value]
        定义 npcd 可以并行启动的线程数量
        默认为 5

11、use_load_threshold = [value]
        定义如果系统负载过高,NPCD 不会开启新线程
        0 = disable
        1 = enable
        默认为 0

12、load_threshold = [value]
        如果 use_load_threshold 定义为 1,则该选项定义负载的限制值
        默认为 10.0

13、pid_file = [/path/to/pid.file]
        定义 PID 文件的路径
        默认为/var/run/npcd.pid

四、总结

        该文章参考 PNP4naigos 的官方文档,还有我自己的理解,如果有偏差或错误,欢迎各位指出^_^


学习心得 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明PNP4nagios 工作模式详解 —Bulk Mod with NPCD
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址