linux - Nagios - bash 脚本的状态未知

标签 linux bash amazon-ec2 nagios ec2-api-tools

我正在尝试使用 bash 脚本通过 Nagios 监控我的 EC2 负载均衡器。下面是我尝试用 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}

上面的脚本在手动运行时对我来说工作得很好。我还用 nagios 用户运行了它,我能够得到如下结果:

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

所以,我不认为有任何权限问题。我已经为 nagios 用户配置了 AWS 凭证。但在 nagios 界面中我总是得到“未知”状态。

下面是command.cfg的代码

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

以下是主机文件的代码:

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

我使用来自不同主机的 NRPE 的相同脚本,我能够得到结果:

nrpe.cfg 代码

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

主机文件代码

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

不知道为什么脚本在 Nagios 主机上使用时无法给出结果。请帮助解决问题。

最佳答案

不知何故,bash 脚本无法找到 AWS cli 的配置文件。现在我已经在 bash 脚本中配置了 AWS_CONFIG_FILE 位置,并且工作正常。

关于linux - Nagios - bash 脚本的状态未知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22396878/

相关文章:

php - 设置正确的时区、服务器和 PHP

amazon-web-services - 如何使用 Terraform 为 AWS 指定 Dockerrun.aws.json

amazon-web-services - 存储 AMI 的成本

android - 检测是否在具有异构 CPU 架构的设备上运行

c - 如何在linux上编译运行在windows上的c程序

c - 如何将 'ls' 命令转换为 'cat' 命令?

nginx - 使用 Capistrano 3、Nginx、Puma、GitHub 和 RVM 到 Amazon EC2 的 Rails 4 API 部署示例?

bash - 如何在 bash 脚本中 scp 所有文件(或选择文件)

linux - 如何使用 Linux/Unix 实用程序提取每个输入行开头的整数或小数?

regex - 如何在 bash 中将空白字符与正则表达式匹配?