【问题标题】:Getting AWS Elastic Beanstalk health code programatically via php通过 php 以编程方式获取 AWS Elastic Beanstalk 运行状况代码
【发布时间】:2019-10-23 17:38:06
【问题描述】:

我有一个 AWS Elastic Beanstalk 实例,我在该实例上运行了一些 cron。我偶尔会遇到问题

Environment health has transitioned from Ok to Severe. 4.5 % of the requests to the ELB are failing with HTTP 5xx (2 minutes ago)

我设置了警报让我知道这一点,并且该部分工作正常。但是,如果环境健康状态不是“OK”或“Warning”,我想阻止 crons 执行。有没有办法从在同一实例上运行的 php 脚本以编程方式获取健康状态代码(如下图所示,以红色圈出)?

【问题讨论】:

    标签: php amazon-web-services amazon-elastic-beanstalk


    【解决方案1】:

    在这种情况下,我会使用 CloudWatch 警报触发发送通知电子邮件。

    首先要了解的是,Elastic Beanstalk 是一种在 AWS 上引导基础设施的便捷工具。您使用 Elastic Beanstalk 进行的任何设置,无论是通过其 cli 还是控制台,您都可以在 EC2 页面上进行几乎相同的操作。

    1. 在 AWS 控制台上,转到 EC2
    2. 转到负载平衡/目标组
    3. 找到附加到由 Elastic Beanstalk 创建的负载均衡器的正确目标组
    4. 检查“监控”选项卡,您应该会看到“CloudWatch 警报:未配置警报”
    5. 点击“创建警报”并完成其余部分,您可能需要创建主题、设置电子邮件地址并定义警报触发条件。

    【讨论】:

    • 我明白了。我已经设置了这些警报。那工作正常。我已经更新了我的问题以反映这一点。但我想知道我的 cron 脚本中的健康状况,以便决定是否运行它。这就是为什么我正在寻找一个 api 或 url/ 端点来检查状态。
    【解决方案2】:

    假设您的应用程序中有一个 health 脚本,beantalk 会定期 ping,您应该能够确定您的应用程序在您的应用程序中是否健康。您不应依赖以编程方式从 Benstalk 获取状态。

    例如,在您的health 脚本中,您可以设置一个标志,以确定您的应用程序是否健康。这样的标志可以是文件系统中被触摸文件的形式。或者如果您使用一个标志,则在缓存中的某处。例如:内存缓存。

    【讨论】:

    • 这是我的问题。如果“环境健康状况已从正常转变为严重。56.5% 的 ELB 请求因 HTTP 5xx(2 分钟前)失败”,恐怕对健康脚本的 ping 可能仍然有效。但是如果生成了这么多 5xx,我不希望某些 crons 运行。这就是为什么我想以编程方式在仪表板上获取健康码。这有意义吗?
    猜你喜欢
    • 2015-11-16
    • 2018-11-07
    • 2021-01-16
    • 2020-07-01
    • 2018-11-02
    • 2021-04-16
    • 2020-11-10
    • 2016-06-14
    • 2019-07-03
    相关资源
    最近更新 更多