Nagios Core
В интерфейсе Monq создайте поток данных и скопируйте его API-ключ.
Nagios Core не имеет нативной поддержки HTTP API интерфейса. Интеграция с системой мониторинга настраивается путем добавления кастомного скрипта оповещения.
⚠️ Данная модель использует следующие статические поля, так как их значения невозможно получить в notification:
INSTANCE_ID="1" OBJECT_ID="1" LAST_HARD_STATE=0
Для конфигурации потока со стороны Nagios:
-
Включите enviroment_macros:
enable_environment_macros=1
-
Добавьте comands:
define command {
command_name send-service-event-to-sm
command_line /usr/local/bin/send_sm 2 > /tmp/sm.log 2>&1
}
define command {
command_name send-host-event-to-sm
command_line /usr/local/bin/send_sm 1 > /tmp/sm.log 2>&1
} -
Добавьте contact:
define contact {
use generic-contact
contact_name sm
alias Service Monitor
service_notification_period 24x7
host_notification_period 24x7
host_notifications_enabled 1
service_notifications_enabled 1
service_notification_options w,u,c,r,f
host_notification_options d,u,r,f
service_notification_commands send-service-event-to-sm
host_notification_commands send-host-event-to-sm
register 1
} -
Измените текущую contactgroup, добавив в нее созданный contact:
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members nagiosadmin,sm
} -
Создайте скрипт:
cat > /usr/local/bin/send_sm <<EOF
#!/bin/bash
#############################
##### Define constants ######
#############################
SM_URI="<sm uri with proto>"
CONNECTOR_KEY="<key>"
INSTANCE_ID="1"
OBJECT_ID="1"
LAST_HARD_STATE=0
#################################
##### Define dynamic fields #####
#################################
STATE_TIME=`date '+%F %T'`
OBJECTTYPE_ID=$1
HOST_NAME=$NAGIOS_HOSTNAME
SERVICE_DESCRIPTION=$NAGIOS_SERVICEDESC
if [[ "$1" == "1" ]];then
STATE=$NAGIOS_HOSTSTATEID
LAST_STATE=$NAGIOS_LASTHOSTSTATEID
STATE_TYPE_NAME=$NAGIOS_HOSTSTATETYPE
ATTEMPT=$NAGIOS_HOSTATTEMPT
MAX_ATTEMPTS=$NAGIOS_MAXHOSTATTEMPTS
OUTPUT=$NAGIOS_HOSTOUTPUT
else
STATE=$NAGIOS_SERVICESTATEID
LAST_STATE=$NAGIOS_LASTSERVICESTATEID
STATE_TYPE_NAME=$NAGIOS_SERVICESTATETYPE
ATTEMPT=$NAGIOS_SERVICEATTEMPT
MAX_ATTEMPTS=$NAGIOS_MAXSERVICEATTEMPTS
OUTPUT=$NAGIOS_SERVICEOUTPUT
fi
if [[ "$STATE" != "LAST_STATE" ]];then
STATE_CHANGE=1
else
STATE_CHANGE=0
fi
if [[ "$STATE_TYPE_NAME" == "HARD" ]];then
STATE_TYPE=1
else
STATE_TYPE=0
fi
#############################
##### Send http request #####
#############################
curl -X POST -H "Content-Type: application/json" $SM_URI/api/public/sm/v1/events-aggregator?connectorKey=$CONNECTOR_KEY \
-d "{
\"recordcount\": \"1\",
\"stateentry\": [
{
\"instance_id\": \"$INSTANCE_ID\",
\"state_time\": \"$STATE_TIME\",
\"object_id\": \"$OBJECT_ID\",
\"objecttype_id\": \"$1\",
\"host_name\": \"$HOST_NAME\",
\"service_description\": \"$SERVICE_DESCRIPTION\",
\"state_change\": \"$STATE_CHANGE\",
\"state\": \"$STATE\",
\"state_type\": \"$STATE_TYPE\",
\"current_check_attempt\": \"$ATTEMPT\",
\"max_check_attempts\": \"$MAX_ATTEMPTS\",
\"last_state\": \"$LAST_STATE\",
\"last_hard_state\": \"$LAST_HARD_STATE\",
\"output\": \"$OUTPUT\"
}
]
}"
EOF
chmod +x /usr/local/bin/send_smобратите внимание на строки:
SM_URI="<sm uri with proto>"
- укажите адрес вашего пространства MonqCONNECTOR_KEY="<key>"
- укажите API-ключ потока данных
-
Перезапустите Nagios Core для применения конфига.