Stackdrive 代理指标未传播到 GCE 实例组管理器自动扩缩器

Stackdrive 代理指标未传播到 GCE 实例组管理器自动扩缩器

我正在尝试在 GCE 上设置自动缩放实例组。自动缩放策略设置为根据已用内存百分比添加实例。

在每个实例上我都安装了 Stackdriver 监控代理 (collectd),如下所示:

$ curl -O https://repo.stackdriver.com/stack-install.sh
$ sudo bash stack-install.sh --write-gcm   

我可以使用监控 API 将代理报告的指标读取到 Stackdriver 中:

GET https://monitoring.googleapis.com/v3/projects/test-cluster/timeSeries?filter=metric.type+%3D+%22agent.googleapis.com%2Fmemory%2Fpercent_used%22+AND+resource.label.instance_id+%3D+%224770937493855508384%22&interval.endTime=2017-01-10T01%3A10%3A00Z&interval.startTime=2017-01-10T01%3A05%3A00Z&key={API_KEY}

实例组管理器设置为使用 agent.googleapis.com/memory/percent_used 指标自动扩缩

但是,实例组管理器报告:

“未收到针对自动扩缩配置的自定义指标的数据”

问题:显然将 agent.googleapis.com/memory/percent_used 指标报告给了 Stackdriver,但由于某种原因未返回给实例组管理器。

答案1

Autoscaler 过去支持 v2 指标,而“agent.googleapis.com/memory/percent_used 指标”是 v3 指标。看来现在可以使用此指标了。

在此关联您可以获取 Stackdriver Monitoring v2 上可用的指标。

在这其他关联,您可以找到所有 v3 指标,并在其中找到“percent_used”指标。

答案2

我正在向此页面添加新的答案,以包含逐步说明,以便根据使用的内存百分比进行自动缩放,这随着平台的发展变得更加简单。

由于自动缩放功能当时不支持所需的指标,OP 可能在发布时收到了该消息。

现在可以通过在机器上安装 Stackdriver 代理来监控内存,而不需要之前创建自定义指标。因此,现在监控内存以及根据内存使用情况自动扩展(现在支持)变得更加容易。但需要注意的是,使用监控代理需要 Premium 级别的 Stackdriver 帐户。

您需要一个托管实例组来自动扩展,并且该托管实例组内的机器需要安装 Stackdriver 代理来监控内存。

有几种方法可以做到这一点。您可以向托管实例组使用的实例模板添加启动脚本,并添加安装监控代理所需的命令(请参阅这里),或者您可以创建一个已经安装了监控代理的镜像,并将此镜像用作组中实例的源镜像(请参阅代理支持的操作系统这里)。

您可以按照以下步骤通过启动脚本安装监控代理,然后根据使用的内存百分比自动缩放。

1) 设计实例模板。Compute Engine > 实例模板> 创建实例模板。

2)在创建实例模板页面的‘启动脚本’部分添加以下内容:

#!/bin/bash
curl -sSO https://dl.google.com/cloudagents/install-monitoring-agent.sh
sudo bash install-monitoring-agent.sh

3)创建托管实例组:Compute Engine>实例组>创建实例组

4) 确保在相关字段中为实例组选择以下选项(除了其他个性化选项之外):

'组类型' = '托管实例组'

‘实例模板’ = 选择您在步骤 1/2 中创建的实例模板。

'基于以下因素自动缩放' = 'Stackdriver 监控指标'

'指标标识符' = 'agent.googleapis.com/memory/percent_used'

“目标”= 您想要启动自动缩放器的内存百分比,例如 60

现在,您已将托管实例组设置为根据使用的内存百分比自动扩缩。

相关内容