2016-11-30 14 views
1

Я внедрил nsca в Nagios для распределенных целей мониторинга, и все, кажется, работает, за исключением одной странности, что я не могу найти ответ нигде.

Пассивные проверки отправляются и принимаются, но на выходе показана 4-я переменная, которая всегда должна быть неинициализирована, и поэтому она отображается как $OUTPUT$. Кажется, что проверки показывают правильную информацию на нецентральном сервере, но когда она отправляется, она, похоже, не правильно интерполирует.

commands.cfg

define command{ 
     command_name submit_check_result 
     command_line  /usr/share/nagios3/plugins/eventhandlers/submit_check_result $HOSTNAME$ '$SERVICEDESC$' $SERVICESTATE$ '$OUTPUT$' 
     } 

submit_check_result

#!/bin/sh 
return_code=-1 

    case "$3" in 
     OK) 
        return_code=0 
       ;; 
      WARNING) 
       return_code=1 
        ;; 
      CRITICAL) 
       return_code=2 
        ;; 
      UNKNOWN) 
       return_code=-1 
        ;; 
    esac 

    /usr/bin/printf "%s\t%s\t%s\t%s\n" "$1" "$2" "$return_code" "$4" | /usr/sbin/send_nsca 192.168.40.168 -c /etc/send_nsca.cfg 

Пример служба

define service { 
     host_name    example_host 
     service_description  PING 
     check_command   check_icmp 
     active_checks_enabled 1 
     passive_checks_enabled 0 
     obsess_over_service  1 
     max_check_attempts  5 
     normal_check_interval 5 
     retry_check_interval 3 
     check_period   24x7 
     notification_interval 30 
     notification_period  24x7 
     notification_options w,c,r 
     contact_groups   admins 
} 

Выход из журнала на нецентральном сервере показывает:

Nov 29 22:52:52 nagios-server nagios3: SERVICE ALERT: example_host;PING;OK;HARD;5;OK - 192.168.1.1: rta nan, lost 0% 

Выход из журнала на центральном сервере показывает:

EXTERNAL COMMAND: PROCESS_SERVICE_CHECK_RESULT;example_host;PING;0;$OUTPUT$ 

Статус информации на центральном сервере (веб-интерфейс) показывает:

PING OK 2016-11-29 22:54:50 0d 0h 54m 6s 1/5 $OUTPUT$ 

Это не только эта услуга тоже. Все сервисы, в том числе те, которые по существу предварительно сконфигурированы для самого сервера Nagios «check_load, check_proc и т. Д.».

Любая помощь будет оценена по достоинству.

ответ

0

Я нашел проблему. Оказывается, вышеприведенный сценарий submit_check_result не отформатирован правильно для отправки результатов проверки на удаленный сервер. Он сделает это, но он не учитывает статус должным образом. Ниже приведен правильный сценарий:

#!/bin/sh 
# SUBMIT_CHECK_RESULT_VIA_NSCA 
# Written by Ethan Galstad ([email protected]) 
# Last Modified: 10-15-2008 
# 
# This script will send passive check results to the 
# nsca daemon that runs on the central Nagios server. 
# If you simply want to submit passive checks from the 
# same machine that Nagios is running on, look at the 
# submit_check_result script. 
# 
# Arguments: 
# $1 = host_name (Short name of host that the service is 
#  associated with) 
# $2 = svc_description (Description of the service) 
# $3 = return_code (An integer that determines the state 
#  of the service check, 0=OK, 1=WARNING, 2=CRITICAL, 
#  3=UNKNOWN). 
# $4 = plugin_output (A text string that should be used 
#  as the plugin output for the service check)s 
# 
# 
# Note: 
# Modify the NagiosHost parameter to match the name or 
# IP address of the central server that has the nsca 
# daemon running. 

printfcmd="/usr/bin/printf" 

NscaBin="/usr/sbin/send_nsca" 
NscaCfg="/etc/send_nsca.cfg" 
NagiosHost="central_host_IP_address" 

# Fire the data off to the NSCA daemon using the send_nsca script 
$printfcmd "%s\t%s\t%s\t%s\n" "$1" "$2" "$3" "$4" | $NscaBin -H $NagiosHost -c $NscaCfg 

# EOF 

Значительно лучшие результаты.