Stackdriver 无法根据自定义指标创建警报

Stackdriver failing to create alert based on custom metric

我有以下高级日志查询:

resource.type="container"
resource.labels.cluster_name="my-cluster"
resource.labels.namespace_id="mynamespace"
"SOMESTRING"

执行时获取预期结果。

我根据这个查询创建了一个自定义指标。

然后我 select "Create Alert from Metric" (my-custom-metric) 并尝试设置警报。

尝试保存警报策略后,出现以下错误:

Error 400: Field alert_policy.conditions[0].condition_threshold.filter had an invalid value of “metric.type=“logging.googleapis.com/user/my-custom-metric” resource.type=“container”“: The filter contains unknown resource type: container

这怎么可能?

当我 selected

时,Stackdriver 本身会自动填写资源类型

Create Alert from Metric

出现此错误消息的原因是在 Kubernetes [1] 中使用了 Legacy Stackdriver。

在旧版 Kubernetes Stackdriver 中,GCP 有 2 种不同的 Kubernetes 资源类型;

1-gke_container;仅用于指标

2-容器;仅用于日志

在新版 Stackdriver 中,GCP 只有一种名为“k8s_container”的资源类型,包括指标和日志。这意味着使用这个新版本将最终解决问题。

新的 Stackdriver 版本在 Kubernetes 1.14+ 上默认启用,但如果您使用不同的版本,您可以按照本文档 [2][3] 中的说明手动更改它。

但是,作为解决方法,您可以简单地将红色受污染的资源类型删除到 Stackdriver 工作区中,然后添加“gke_container”。这对我有用。

[1] https://cloud.google.com/monitoring/kubernetes-engine/migration#what-is-changing

[2]https://cloud.google.com/monitoring/kubernetes-engine/installing#migrating

[3] https://cloud.google.com/monitoring/kubernetes-engine/migration#upgrade-timeline