/ / Nagios - Status UNKNOWN pre bash skript - linux, bash, amazon-ec2, nagios, ec2-api-tools

Nagios - Status UNKNOWN pre bash skript - linux, bash, amazon-ec2, nagios, ec2-api-tools

Pokúšam sa monitorovať svoj EC2 loadblancer cez Nagios pomocou bash skriptu. Nižšie je uvedený skript, ktorý sa snažím implementovať v Nagios.

#!/bin/sh

ST_OK=0
ST_WR=1
ST_CR=2
ST_UK=3


LB_NAME="xxx"
AWS_REGION="us-west-2"
PROFILE="default"


CMD=$(/usr/bin/aws elb describe-instance-health --region ${AWS_REGION} --load-balancer-name ${LB_NAME} --profile ${PROFILE})

if [ $? -eq 0 ]; then

IN_SERVICE_COUNT=$(echo ${CMD} | jq -c ".InstanceStates[].State" | grep InService |wc -l)
TOTAL_COUNT=$(echo ${CMD} | jq -c ".InstanceStates[].State" | wc -l)

if [ ${IN_SERVICE_COUNT} -eq 0 ]; then
NAGIOS_STATE=CRITICAL
EXIT_CODE=$ST_CR
elif [ ${TOTAL_COUNT} -eq ${IN_SERVICE_COUNT} ]; then
NAGIOS_STATE=OK
EXIT_CODE=$ST_OK
elif [ ${IN_SERVICE_COUNT} -lt ${TOTAL_COUNT} ]; then
NAGIOS_STATE=WARNING
EXIT_CODE=$ST_WR
fi
echo "${NAGIOS_STATE}: ELB:${LB_NAME} is running fine. Total #instances:${TOTAL_COUNT} Healthy instances:${IN_SERVICE_COUNT}"
else
echo "Failed to retrieve ELB Instances health from AWS"
EXIT_CODE=$ST_UK
fi
exit ${EXIT_CODE}

Vyššie uvedený skript mi ​​pri manuálnom spustení funguje dobre. Tiež som to spustil s používateľom nagios a môžem získať výsledok, ako je uvedené nižšie:

OK: ELB:xxx is running fine Total:18 Healthy:18

Nemyslím si preto, že by došlo k nejakému problému s povolením. Konfiguroval som poverenia AWS pre používateľa nagios. Ale v rozhraní nagios vždy dostávam stav „NEZNÁMÝ“.

Nižšie je uvedený kód pre command.cfg

define command {
command_name    check_elb_status
command_line    /usr/local/nagios/libexec/check_elb_status.sh
}

Nižšie je uvedený kód pre hostiteľský súbor:

define service{
use generic-service
host_name Prod-ELB
service_description Prod ELB Status
check_command check_elb_status
}

Rovnaký skript, aký som použil s NRPE od iného hostiteľa, som schopný získať výsledok:

Kód pre nrpe.cfg

command[check_elb_sts]=/usr/local/nagios/libexec/check_elb_status.sh

Kód pre hostiteľský súbor

define service{
use generic-service
host_name xxx
service_description Prod ELB Status
check_command check_nrpe!check_elb_sts
}

Neviem, prečo skript nie je schopný poskytnúť výsledok pri použití na hostitelovi Nagios. Pomôžte nám problém vyriešiť.

odpovede:

2 pre odpoveď č. 1

Akokoľvek, bash skript nebol schopný nájsť konfiguračný súbor pre AWS cli. Teraz som nakonfiguroval AWS_CONFIG_FILE umiestnenie v bash skripte a funguje to dobre.