首页 > 代码库 > nagios nsca

nagios nsca


layout: post

title: “nagios/nsca”

nagios nsca 介绍

被动模式工作原理:相比与主动模式中服务器主动去被监控机上轮询获取监控数据的方式,被动模式则是在被监控机上面通过插件获取监控数据,然后将数据发往监控机,最后监控机对监控数据处理。这样做的一个很大的优势就是将除了处理数据的其他工作都放在了被监控机上面(包括了数据的传输),这样就避免了被监控机数量大时,一次轮询时间过长而导致监控反应延迟,这也是被动模式能承担更大监控量的关键。

术语

  • 被监控机(MC:Monitor Client)
  • 监控机 (MS:Monitor Server)

实现过程

send_nsca与nsca就是一个C/S结构,Send_nsca是一个Nsca守护进程端,负责将收集到的监控数据按照一定的格式发往Server端(nsca daemon).在收到Send_nsca发来的数据后,对数据进行跟基本的处理,然后交给nagios。

配置

注意:(本文是ubuntu14.04为基础环境,创建被动模式的配置)

  • MS端: apt-get install ngaios3 nsca
  • MC端: apt-get install nsca-client

MS端配置

开启被动检测,参考http://ops.intra.jiasule.com/wiki/2014/10/11/nagios-passive-check.html

nsca-server 配置

/etc/nsca.cfg

server_address=10.2.0.145
password=l@bs&d
decryption_method=1

nsca-client 配置

/etc/send_nsca.cfg

password=l@bs&d
encryption_method=1

MC 端配置

  • 脚本
    至于客户定时发送的实现方式可以直接写crontab加命令,一个简单脚本如下:
#!/bin/sh
# filename: nsca_run.sh

set -e

server=$1
cmdlist=$2

while read line
do
  name=$(echo "$line" | cut -f1 -d"!")
  cmd=$(echo "$line" | cut -f2 -d"!")
  output=`$cmd`
  status=`echo $?`
  echo "$hostname!$name!$status!$output" | /usr/sbin/send_nsca -H $server -d "!" -c /etc/send_nsca.cfg
done < $cmdlist

脚本说明:

HOSTNAME    :是指nagios监控机中的定义的host_name,也可以是机器IP
name        :是指nagios监控机中的service_description
status      :是指传过去的状态值,这里为critical
output      :是指的状态说明,这里只是一个test
server      :是nagios server 域名或IP
  • 命令列表: /opt/cmd.list

    check_load!/usr/lib/nagios/plugins/check_load -w 3 -c 5
    check_disk!/usr/lib/nagios/plugins/check_disk -w 10% -c %20 -x /dev/sda
    check_ssh!/usr/lib/nagios/plugins/check_ssh localhost
  • 使用crond创建定时计划任务

/etc/cron.d/nsca

*/1 * * * * root bash /opt/nsca_run.sh 10.2.0.117 /root/cmdlist

nsca插件默认的输出格式(我的例子是使用”!“作为分隔符了):

HOSTNAME [TAB]SERVICE_DESCRIBE[TAB]STATUS[TAB]OUTPUT
  主机名        服务描述            状态码       附加输出
  • 主机名必须与nagios端定义的hostname相同
  • 服务描述必须与nagios端定义的service配置文件内容的相同
  • 状态码(0 1 2 3 4)主要是用来给check_dummy翻译使用
  • 附加输出 可以理解为对监控结果的一个简单描述

其他

  • nsca-ng是 nsca的替代品,比nsca有更丰富的的认证机制和细粒度权限控制,主页: http://www.nsca-ng.org/
  • nsca-ng howto https://wiki.icinga.org/display/howtos/NSCA-ng

nagios nsca