NSCA 被动模式插件
版本 2.9.x
需要安装 nagios
调用流程
- 远程主机 send_nsca 插件 -> nagios 主机上的 NSCA daemon 服务
组成结构
- send_nsca : 客户端插件, 安装在远程主机上, 用法发送指定格式的数据到 NSCA daemon 服务上
- NSCA daemon : 运行在 Nagios 主机上的守护服务
一、部署 NSCA daemon 服务
1. 创建账号# 创建 nagios 账号, 并且分配 nagios 到 nagios 组中useradd nagiosusermod -a -G nagios nagios2. 下载 NSCA(Nagios 主机)# 下载cd /usr/local/srcsudo wget https://nchc.dl.sourceforge.net/project/nagios/nsca-2.x/nsca-2.9.2/nsca-2.9.2.tar.gzsudo tar -zxvf nsca-2.9.2.tar.gz# 编译cd nsca-2.9.2./configuremake all# 出现如下信息NSCA port: 5667NSCA user: nagiosNSCA group: nagios# 编译检查正确执行以后, 会出现如下信息src/ 目录下生成两个程序 nsca(服务进程) send_nsca(客户端)sample-config/ 中会有 nsca.cfg 和 send_nsca.cfg 的配置文件3. 部署 NSCA 和配置文件# 部署 NSCA (send_nsca 和 nsca)cp src/send_nsca src/nsca /usr/local/nagios/bin/chown nagios:nagios /usr/local/nagios/bin/nsca /usr/local/nagios/bin/send_nsca# 部署配置文件mkdir -p /usr/local/nagios/etc/nscacp sample-config/* /usr/local/nagios/etc/nsca/chown nagios:nagios /usr/local/nagios/etc/nsca/*4. NSCA daemon 配置# 修改配置文件: etc/nsca/nsca.cfgvim etc/nsca/nsca.cfg# 端口server_port=5667# 监听地址server_address=0.0.0.0# 开启 debug 模式, 用于调试。部署的时候调整到 debug=0debug=1# 命令文件, 这是守护进程的 Nagios 命令文件的位置# 注意文件路径command_file=/usr/local/nagios/var/rw/nagios.cmd# 备用转储文件, 这是用来指定守护进程应该的另一个文件# 注意文件路径alternate_dump_file=/usr/local/nagios/var/rw/nsca.dump# 聚合写选项aggregate_writes=1# password: 通讯密码, 与 send_nsca 客户端定义相同的密码, send_nsca 的配置文件在 etc/nsca/send_nsca.cfgpassword=xxxx.com5. NSCA daemon 启动服务# 语法 bin/nsca --helpUsage: bin/nsca -c <config_file> [mode]Options:<config_file> = Name of config file to use[mode] = Determines how NSCA should run. Valid modes:--inetd = Run as a service under inetd or xinetd--daemon = Run as a standalone multi-process daemon--single = Run as a standalone single-process daemon (default)# 启动服务/usr/local/nagios/bin/nsca -c /usr/local/nagios/etc/nsca/nsca.cfg --single# 监控日志tail -f /var/log/message# 查看进程是否存在ps -axu | grep nsca# 查看端口是否存在netstat -tunlp | grep 5667
二、 Nagios 与 NSCA daemon 服务打通
1. Nagios 在 services 配置 nsca 脚本# 修改配置文件vim etc/objects/services.cfg# 定义 service, 使用 check_dummy 插件, 接收 send_nsca 客户端发送过来的数据define service{# 使用的模板use service_nsca_template# 定义用于接收 send_nsca 信息的主机名host_name serverTest# 定义用于接收 send_nsca 信息的主机描述service_description nscaTest# 定义 <脚本名称> check_dummy, 用于处理 send_nsca 发送来的数据# check_dummy: 这个脚本, 就是 commands.cfg 配置中定义的<脚本名称>check_command check_dummy!0# 是否发送通知notifications_enabled 1contact_groups MonitorGroup}2. Nagios 在 commands 配置 nsca <脚本名称># 修改配置文件vim etc/objects/commands.cfg# 定义 commands, 定义 <脚本名称> check_dummy, 处理 send_nsca 客户端发送过来的数据# check_dummy: 插件是一个简单的翻译插件, 只能处理 4 个参数状态分别是 0,1,3,663, 对应了 (OK、WARNING、CRITICAL、UNKNOWN), 例如: check_dummy 0 对应就是 OKdefine command{command_name check_dummycommand_line $USER1$/check_dummy $ARG1$}3. 重启 nagios 服务service nagios restart
二、send_nsca 远程主机部署
# 语法 bin/send_nsca --helpUsage: bin/send_nsca -H <host_address> [-p port] [-to to_sec] [-d delim] [-c config_file]Options:<host_address> = The IP address of the host running the NSCA daemon[port] = The port on which the daemon is running - default is 5667[to_sec] = Number of seconds before connection attempt times out.(default timeout is 10 seconds)[delim] = Delimiter to use when parsing input (defaults to a tab)[config_file] = Name of config file to useService Checks:<host_name>[tab]<svc_description>[tab]<return_code>[tab]<plugin_output>[newline]Host Checks:<host_name>[tab]<return_code>[tab]<plugin_output>[newline]# 案例: 发送数据到 NSCA daemon 中, 注意其中的 serverTest,nscaTest 必须与 services.cfg 中定义的 service 相同, 才可接受到数据echo -e "serverTest,nscaTest,0,test" | bin/send_nsca -H dw0 -p 5667 -c /usr/local/nagios/etc/nsca/send_nsca.cfg -d ","
