Amazon web services AWS:没有一个实例正在发送数据

Amazon web services AWS:没有一个实例正在发送数据,amazon-web-services,amazon-ec2,amazon-elastic-beanstalk,Amazon Web Services,Amazon Ec2,Amazon Elastic Beanstalk,我正在尝试使用Amazon Web Services设置一个弹性Beanstalk应用程序,但是我收到了大量错误消息没有一个实例正在发送数据。我曾多次尝试使用示例应用程序删除Elastic Beanstalk应用程序和EC2实例,然后重试,但都出现了相同的错误 我还尝试使用AWS Elastic Beanstalk命令行工具上载flask应用程序,但随后收到以下错误: Environment health has transitioned from Pending to Severe. 100.

我正在尝试使用Amazon Web Services设置一个弹性Beanstalk应用程序,但是我收到了大量错误消息
没有一个实例正在发送数据。我曾多次尝试使用示例应用程序删除Elastic Beanstalk应用程序和EC2实例,然后重试,但都出现了相同的错误

我还尝试使用AWS Elastic Beanstalk命令行工具上载flask应用程序,但随后收到以下错误:

Environment health has transitioned from Pending to Severe. 100.0 % of the requests to the ELB are failing with HTTP 5xx. Insufficient request rate (0.5 requests/min) to determine application health (7 minutes ago). ELB health is failing or not available for all instances. None of the instances are sending data
为什么会出现此错误以及如何修复它?谢谢。

您正在使用。 通过增强的运行状况监视功能,EC2实例上安装了一个监视重要的系统和应用程序级别的运行状况指标,并将其直接发送到Elastic Beanstalk

当您看到类似“所有实例均未发送数据”的错误消息时,表示实例上的代理已崩溃,或者由于网络错误或其他错误,无法将数据发布到Elastic Beanstalk

为了调试它,我建议从AWS控制台下载“完整日志”。您可以按照“从Elastic Beanstalk控制台下载捆绑日志”一节中获取日志的说明进行操作。 如果由于任何原因无法使用控制台下载日志,也可以使用ssh连接到实例,并查看
/var/log
中的日志

您将在
/var/log/healthd/daemon.log
中找到运行状况代理的日志。 对于这种情况有用的其他日志包括
/var/log/cfn init.log
/var/log/eb cfn init.log
/var/log/eb activity.log
。您能否查看日志并提供所看到错误的更多详细信息? 这将有望为您提供有关错误“没有任何实例正在发送数据”的更多详细信息

关于您看到的其他健康“原因”:

  • 环境健康状况已从挂起状态过渡到严重状态-这是因为最初您的环境健康状况处于挂起状态。如果实例在宽限期内没有正常运行,则运行状况将转换为严重。在您的情况下,由于没有一个实例是健康的/正在发送数据,因此健康状态将转换为严重

  • 100.0%的ELB请求在HTTP 5xx中失败。请求速率(0.5个请求/分钟)不足,无法确定应用程序运行状况(7分钟前)。 在使用增强的运行状况监视时,Elastic Beanstalk监视EC2实例之外的其他资源。例如,它监视ELB的cloudwatch指标。此错误意味着发送到您的环境CNAME/负载平衡器的所有请求都会失败,并出现HTTP 5xx错误。同时,请求速率非常低,每分钟仅0.5个请求,因此这表明即使所有请求都失败,请求速率也非常低。“7分钟前”意味着关于ELB指标的信息有点陈旧。因为Elastic Beanstalk每隔几分钟监控一次cloudwatch指标,所以数据可能会有些陈旧。这与我们直接从EC2实例获得的“近实时”健康数据相反。在您的情况下,由于实例没有发送数据,唯一可用的健康源是ELB度量,它延迟了大约7分钟

  • ELB运行状况失败或不适用于所有实例 Elastic Beanstalk正在查看ELB的运行状况,也就是说,它正在检查ELB后面有多少实例在使用。在您的情况下,ELB后面的所有实例都已停止服务,或者由于其他原因,运行状况不可用。您应该仔细检查您的服务角色配置是否正确。您可以阅读如何正确配置服务角色,也可以在中阅读。您的应用程序可能无法启动

在您的情况下,我建议将重点放在第一个错误“没有任何实例正在发送数据”。为此,您需要查看上面概述的日志。让我知道你在日志中看到了什么。代理在实例的引导过程中很早就启动了。因此,如果您看到“没有任何实例正在发送数据”这样的错误,很可能是引导失败或代理由于某种原因无法启动。日志应该会告诉你更多

另外,请确保在环境中使用实例概要文件。实例配置文件允许EC2实例上运行的运行状况代理使用Elastic Beanstalk进行身份验证。如果实例配置文件未与您的环境关联,则代理将无法向Elastic Beanstalk发送数据。阅读有关使用Elastic Beanstalk的实例配置文件的更多信息

更新 健康原因“所有实例均未发送数据”的一个常见原因可能是您的实例位于VPC中,并且您的VPC不允许NTP访问。此问题的典型指示器是
/var/log/messages:ntpdate:与时间服务器同步:[失败]
中的以下消息。当这种情况发生时,EC2实例上的时钟可能会失去同步,数据被视为无效。您还应该在AWS web控制台的运行状况页面上的实例上看到运行状况原因,它告诉您实例时钟不同步。解决方法是确保您的VPC允许访问NTP



健康代理无法发送任何数据的原因可能有很多,因此这可能不是您问题的答案,但这是我的问题,希望可以帮助其他人:

我收到了相同的错误,并查看
/var/log/healthd/daemon.log
反复报告了以下内容:

sending message(s) failed: (Aws::Healthd::Errors::GroupNotFoundException) Group 97c30ca2-5eb5-40af-8f9a-eb3074622172 does not exist
这是由于我在弹性Beanstalk环境中从EC2实例生成并使用AMI映像造成的。也就是说,我创建了一个临时环境,其中一个实例的配置与我的生产环境相同,进入EC2控制台并创建了实例的映像,终止了临时环境,然后创建了另一个environment