【问题标题】:Google Compute Engine autoscale based on 'used' memory基于“已用”内存的 Google Compute Engine 自动缩放
【发布时间】:2020-09-30 05:55:26
【问题描述】:

我希望根据内存扩展我的 Compute Engine 实例,内存是 Stackdriver 中的一个代理指标。需要注意的是,在代理可以监控的 5 个状态中(缓冲、缓存、空闲、平板、已使用)see the link here,我只想查看“已使用”内存以及该值是否高于某个百分比阈值组(或每个实例也适用于我),我想自动缩放。

我已经在托管实例组的所有节点中安装了 Stackdriver Monitoring 代理,并且我能够成功地在我的监控仪表板中可视化“已用”内存,因为我非常熟悉它。

很遗憾,我无法为自动缩放执行此操作。这是我在 MIG 的自动缩放部分配置它时看到的。

在我看来,添加过滤器表达式应该可以按预期工作,因为此表达式在 Stackdriver 控制台中使用 Monitoring 信息中心可以正常工作。此外,here 提到该语法与 here 给出的 Cloud Monitoring 过滤器语法兼容。

我尝试了过滤表达式字段中语法的不同组合,但没有一个有效。请帮忙。

【问题讨论】:

  • 您的指标标识符已经表明已使用的内存百分比,将相同的内容放入额外的过滤器中会不会是多余的?
  • @WilfredL.,Stackdriver 可以监控 5 个阶段的内存(缓冲、缓存、空闲、平板和已使用)。请参阅此处的链接:cloud.google.com/monitoring/api/metrics_agent#agent-memory。我只想根据“使用”的内容进行自动缩放。
  • 我尝试复制并遇到同样的问题,但在自动缩放的文档中从未提及它可以以这种方式进行微调。您可能需要向 Google 打开一个公共问题跟踪器 [1],以便他们可以更好地处理此问题。 [1]issuetracker.google.com
  • 好吧,在那种情况下,我真的不明白过滤器表达式的用途。
  • 我能够使用的唯一通过 UI 验证的语法是 metric.label.state="used"。但是,当我这样做时,之后我收到一条错误消息,说“区域托管实例组不支持使用每组指标进行自动缩放。”。因此,如果您不使用区域实例组,它可能只适用于您的用例。

标签: google-cloud-platform google-compute-engine autoscaling stackdriver google-cloud-monitoring


【解决方案1】:

我尝试使用完全相同的配置来尝试根据内存使用情况进行扩展。在测试了各种不成功的条目后,我联系了 Google 支持。根据您的问题,我无法判断您拥有什么样的实例组。这很重要,因为以下原因。

TLDR

根据来自 Google 支持的输入,只有地区实例组允许过滤表达式条目。

地区实例组

只有地区实例组将允许指标设置。对于区域实例组,您尝试输入的设置对于 metric.state=used 是正确的。但是,对于区域实例组,该字段必须留空。

区域实例组

如上所述,不支持为区域实例组应用过滤器。正如their documentation 中所述,他们提到您将该字段留空。

  1. 在“附加过滤器表达式”部分:

    对于区域 MIG,可选择输入过滤器以使用来自具有多个流或标签的指标的单个值。有关详细信息,请参阅过滤每个实例的指标。

    对于区域 MIG,请将此部分留空。

如果您添加条目,您将在尝试保存更改时收到消息“区域托管实例组不支持使用每组指标进行自动缩放。”

另一方面,如果您将该字段留空,它将保存。但是,我发现将该字段留空并在 Target Utilization 字段中设置几乎任何数字总是会导致我的组扩展到最大数量。

总结

Google 通知我,他们确实对此提出了功能要求。我表示如果不支持,即使选择percent_used 也是没有意义的。回应是我们应该看到将来更新文档以澄清这一点。

【讨论】:

    猜你喜欢
    • 2016-04-12
    • 2022-12-13
    • 1970-01-01
    • 2019-01-31
    • 2023-03-21
    • 2015-01-10
    • 2020-01-15
    • 2019-01-25
    • 2017-12-24
    相关资源
    最近更新 更多