bash 스크립트를 사용하여 Nagios를 통해 EC2 loadblancer를 모니터링하려고합니다. 아래는 Nagios로 구현하려고하는 스크립트입니다.Nagios - 상태 알 수 없음 bash 스크립트
#!/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}
위의 스크립트는 수동으로 실행하는 동안 나에게 잘 작동합니다. 또한 nagios 사용자와 함께 실행 해본 결과 아래와 같이 결과를 얻을 수 있습니다.
OK: ELB:xxx is running fine Total:18 Healthy:18
따라서 사용 권한 문제는 생각하지 않습니다. nagios 사용자 용 AWS 자격 증명을 구성했습니다. 그러나 Nagios 인터페이스에서 나는 항상 "UNKNOWN"상태를 유지하고 있습니다.
define service{
use generic-service
host_name Prod-ELB
service_description Prod ELB Status
check_command check_elb_status
}
내가 다른 호스트에서 NRPE로 사용하고 같은 스크립트와 내가 수 있어요 : 아래
는 다음define command {
command_name check_elb_status
command_line /usr/local/nagios/libexec/check_elb_status.sh
}
호스트 파일에 대한 코드 command.cfg 코드입니다 결과를 얻을 수 있습니다 : nrpe.cfg에 대한
코드를
command[check_elb_sts]=/usr/local/nagios/libexec/check_elb_status.sh
Nagios의 호스트에서 사용하는 동안 스크립트가 결과를 줄 수없는 이유를
define service{
use generic-service
host_name xxx
service_description Prod ELB Status
check_command check_nrpe!check_elb_sts
}
이 몰라 호스트 파일 (3210)
코드입니다. 문제를 해결하는 데 도움을주십시오.
'/ usr/bin/aws elb describe-instance-health --region $ {AWS_REGION} -로드 밸런서 이름 $ {LB_NAME} --profile $ {프로필} >>/tmp/check_elb_sts를 실행하여 디버그하십시오. .log 2> & 1' 스크립트를 실행하고 Nagios가 서비스 체크를 실행 한 후 로그를 확인하십시오. –
디버깅 제안에 감사드립니다. 실제로 문제는 스크립트가 aws 설정 파일을 찾을 수없는 방법이었습니다. 이제 작동 중입니다. – linuxnewbee
좋아요! 답변을 답변으로 게시하고 나만의 답변을 수락 할 수 있으므로 질문이 답변되지 않은 상태로 계속 떠 다니지 않습니다. –