nagios/mod-gearman

layout: post

title: “nagios/mod-gearman”

简介

Mod_Gearman是Nagios分布式检查的一种简单实现方法,提高了nagios的灵活性。Mod-Gearman还可以降低单台nagios主机的负载。它由三部分组成:

  • 有一个NEB模块,它同Nagios core驻留在一起,将servicechecks,hostchecks和eventhandler添加进Gearman 队列。
  • 一个或多个Gearma worker 客户端,用于执行检查。worker 可以被配置成只运行指定的主机或者服务组检查。
  • 至少需要运行一个Gearman Job Server

工作原理

当broker模块载入后,它捕获所有的servicecheck、hostcheck和eventhandler事件。Eventhandler被送到一个一般的eventhandler队列。在指定主机组的hostcheck,被送到一个单独的主机组队列,所有其它没有匹配的hostcheck被送到一个一般的主机队列。servicechecks首先匹配服务组,然后匹配主机组,所有没有匹配的servicecheck被送到一个一般的服务队列。NEB模块启动一个单进程来监控所有返回到check_results中的结果。

软件安装

  • job-server 端
apt-get install nagios3 mod-gearman-module mod-gearman-tools gearman-job-server
  • wokers 端
apt-get install mod-gearman-worker nagios-plugins-basic

公共部分的参考配置

nagios 结合 mod_gearman 可以建立多种灵活的配置模式,常见的有负载均衡,被动检测,nagios主从分布式,无论那种模式nagios都要加载mod_gearman NEB模块,和gearman server 建立连接,下面是所有配置模式都需要公共配置:

配置 nagios

  • 编辑配置文件 /etc/nagios3/nagios.cfg
broker_module=/usr/lib/mod_gearman/mod_gearman.o config=/etc/mod_gearman_neb.conf
  • 配置项解释

/etc/mod_gearman_neb.conf

broker_module=/usr/lib/mod_gearman/mod_gearman.o # 加载模块
server=gearman-server:4730                       # 指定 gearman-server
key=l@bs&d                                       # 定义 和 worker 通讯的共享密码
eventhandler=yes                                 # 开启 eventhandler分布式执行
services=yes                                     # 开启 service check的分布式执行
hosts=yes                                        # 开启 host check的分布式执行    
debug=1                                          # 打印 debug 信息
min-worker=5                                     # 指定每个worker 开启的最小进程数
  • 重启服务
service nagios3 restart
service gearman-job-server restart

配置 wokers

编辑配置文件 /etc/mod-gearman/worker.conf

# Example configuration file for the mod gearman worker
#
server=gearman-server:4730
key=l@bs&d
hosts=yes
services=yes
p1_file=/usr/share/mod-gearman/mod_gearman_p1.pl

重启服务

service mod-gearman-worker restart

负载均衡模式

负载均衡模式示意图

nagios/mod-gearman_第1张图片

详细配置参考 公共部分的参考配置

被动检测模式

使用mod_gearman 可以方便的建立被动检测替代方案

被动检测模式示意图

nagios/mod-gearman_第2张图片

使用send_gearman 替代 nsca

/usr/lib/nagios/plugins/send_gearman --server=10.2.0.119:4730 --encryption=yes key="l@bs&d156405189" --host="passive_host1"  --service="SSH" -m="service check is ok" -r="1"

使用send_multi 替代 nrdp

send_multi的具体配置参考send_multi插件的配置

export PATH=$PATH:/usr/lib/nagios/plugins/
check_multi -f /etc/check_multi/feed_passive.cmd -r 256 | send_multi --server=10.2.0.119:4730 --encryption=yes key="l@bs&d156405189" --host="passive_host1"

分布式模式

分布式模式配置示意图

nagios/mod-gearman_第3张图片

  • 二级分布式被动检测原理:
    创建两个父子关系 nagios 节点, 父子节点定义相同的服务项,并且都运行着gearmand,父节点定义被动检测,子节点定义主动检测,同样利用mod-gearman_worker 关键的配置项 dupserver=g_master:4730 功能将从节点的检测结果复制给父节点的gearmand,实现二级分布式被动检测模式。更多可参考 被动检测配置

  • 主从模式的的原理:
    创建主从两个 nagios 节点, 主从节点定义相同的服务项,并且都运行着gearmand ,利用mod-gearman_worker 关键的配置项 dupserver=g_master:4730 功能将从节点的检测结果复制给父节点的gearmand,实现主从检测模式,(关于主从模式,目前不太理解这种配置模式的应用场景)

  • 关键配置项

/etc/mod-gearman/worker.conf

server=g_slave:4730
dupserver=g_master:4730

监控工作状态

  • gearman_top 可以查看job-server 和 worker 运行状态概况

  • mod-gearman-tools 软件包提供的 /usr/lib/nagios/plugins/check_gearman 可以用来监控job-server 和 worker 间的详细工作状态
    例如:

/usr/lib/nagios/plugins/check_gearman -H job-server -t 10 -s check
/usr/lib/nagios/plugins/check_gearman -H job-server -q worker_worker -t 10 -s check
  • 更多可参考 http://labs.consol.de/lang/en/nagios/mod-gearman/#_how_to_monitor_job_server_and_worker

参考

  • http://gearman.org/
  • http://mod-gearman.org/
  • http://omdistro.org/
  • http://labs.consol.de/nagios/mod-gearman/
  • http://blog.chinaunix.net/uid-261392-id-2138986.html

你可能感兴趣的:(nagios/mod-gearman)