gpt4 book ai didi

rest - Elastic Beanstalk 禁用基于 4xx 响应的健康状态更改

转载 作者:行者123 更新时间:2023-12-02 04:12:43 24 4
gpt4 key购买 nike

我有一个在 Elastic Beanstalk 上运行的 REST API,效果很好。应用程序方面的一切都运行良好,并且按预期工作。

该应用程序是一个rest api,用于查找不同的用户。

example url: http://service.com/user?uid=xxxx&anotherid=xxxx

如果找到具有任一 ID 的用户,API 将响应 200 OK,如果没有,则响应 404 Not FoundHTTP/1.1 状态代码定义。

我们的 api 在大量请求上回答 404 Not Found 的情况并不少见,弹性 beanstalk 将我们的环境从 OK 转换为 Warning 甚至因此而陷入 Degraded 。由于这种降级状态,nginx 似乎已拒绝连接到应用程序。 (看起来它有超过 30% 的阈值进入警告状态,超过 50% 的阈值进入降级状态。这是一个问题,因为应用程序实际上按预期工作,但是Elastic Beanstalks 默认设置认为这是一个问题,但实际上不是。

有谁知道在 EB 中编辑 4xx 警告和状态转换的阈值或完全禁用它们的方法吗?

或者我真的应该进行症状治疗并停止在这样的通话中使用 404 Not Found 吗? (我真的不喜欢这个选项)

最佳答案

更新:AWS EB 最终包含了一个内置设置: https://stackoverflow.com/a/51556599/1123355

旧解决方案:深入研究 EB 实例并花了几个小时寻找 EB 的运行状况检查守护程序实际上将状态代码报告回 EB 进行评估的位置,我终于找到了它,并提出了一个补丁,可以作为一个完美的解决方法,防止 4xx 响应代码将环境转变为 Degraded 环境健康状态,并通过此电子通知毫无意义地通知您邮件:

Environment health has transitioned from Ok to Degraded. 59.2 % of the requests are erroring with HTTP 4xx.

状态代码报告逻辑位于 healthd-appstat 内,这是由 EB 团队开发的 Ruby 脚本,持续监控 /var/log/nginx/access.log并向 EB 报告状态代码,具体路径如下:

/opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.2.0/gems/healthd-appstat-1.0.1/lib/healthd-appstat/plugin.rb

以下 .ebextensions 文件将修补此 Ruby 脚本以避免向 EB 报告 4xx 响应代码。这意味着 EB 永远不会因为 4xx 错误而降低环境运行状况,因为它只是不知道这些错误正在发生。这也意味着 EB 环境中的“运行状况”页面将始终显示 04xx 响应代码计数。

container_commands:
01-patch-healthd:
command: "sudo /bin/sed -i 's/\\# normalize units to seconds with millisecond resolution/if status \\&\\& status.index(\"4\") == 0 then next end/g' /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.2.0/gems/healthd-appstat-1.0.1/lib/healthd-appstat/plugin.rb"
02-restart-healthd:
command: "sudo /usr/bin/kill $(/bin/ps aux | /bin/grep -e '/bin/bash -c healthd' | /usr/bin/awk '{ print $2 }')"
ignoreErrors: true

是的,它有点难看,但它可以完成工作,至少在 EB 团队提供一种通过某些配置参数忽略 4xx 错误的方法之前是这样。部署时将其包含在您的应用程序中,位于相对于项目根目录的以下路径中:

.ebextensions/ignore_4xx.config

祝你好运,请告诉我这是否有帮助!

关于rest - Elastic Beanstalk 禁用基于 4xx 响应的健康状态更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36398456/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com