【问题标题】:Cloudwatch Agent loses metrics when service is scaled-inCloudwatch 代理在服务缩减时丢失指标
【发布时间】:2021-10-12 07:58:03
【问题描述】:

我已配置 ECS 集群部署,详情如下:

  1. 服务作为 Fargate 实例启动
  2. 服务将根据 SQS 队列的大小进行缩放
  3. 每个服务都会产生一个指标时间序列
  4. 部署了一个 Cloudwatch 代理实例,每 1 分钟从服务实例中提取指标

我遇到的问题是:

  1. 一个服务实例正在运行
  2. 队列大小增加触发横向扩展
  3. 另一个服务实例已启动
  4. Cloudwatch 代理正在从两个实例中提取指标
  5. 队列大小减小并触发缩减
  6. 服务实例在 30 秒内停用
  7. 但是 Cloudwatch 代理没有及时从停用的实例中收集指标,这些指标现在丢失了

人们使用了哪些技术来解决这个问题?

我能想到的唯一解决方案是向我的服务添加睡眠,使其在发出终止信号时等待 60 多秒(同时延长 ecs_stop_container_timeout),从而让 Cloudwatch 代理有时间检索最终的一组指标。这可能有效,但感觉就像是 hack。

谢谢

【问题讨论】:

    标签: amazon-cloudwatch terraform-provider-aws aws-fargate


    【解决方案1】:

    我会说你是在正确的轨道上虽然睡眠有点生硬。将此视为有关如何优雅退出的有用指南:

    https://aws.amazon.com/blogs/containers/graceful-shutdowns-with-ecs/

    【讨论】:

    • 是的,我不喜欢睡觉,但是在测试了我的理论之后,它似乎可以完成这项工作。此外,如果一项服务在作为缩减操作的一部分而退役时停止缓慢,那么是否需要额外一分钟才能完全停止并不重要。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 2020-09-30
    • 2019-03-31
    • 2022-07-14
    • 2023-02-01
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多