使用 gcloud 创建 Stackdriver 警报政策?(无需从文件加载)

Cyn*_*nic 3 google-cloud-platform gcloud stackdriver

所以我设置了一个通知通道:

gcloud alpha monitoring channels create \
    --description='test notification' \
    --display-name='test_channel' \
    --type=email \
    --channel-labels=email_address=example@gmail.com
Run Code Online (Sandbox Code Playgroud)

但我似乎无法获得与命令行一起使用的警报策略(尝试避免使用从文件加载,因为我需要使用模板)。看起来这应该有效:

gcloud alpha monitoring policies create \
    --notification-channels=test_channel \
    --aggregation='{"alignmentPeriod": "60s","perSeriesAligner": "ALIGN_MEAN"}' \
    --condition-display-name='CPU Utilization >0.80 for 10m'\
    --condition-filter='metric.type="appengine.googleapis.com/flex/instance/cpu/utilization" resource.type="gae_instance"' \
    --duration='1min' \
    --if='> 0.80' \
    --display-name='test alert'
Run Code Online (Sandbox Code Playgroud)

但它返回:

[--aggregation] 的值无效:仅当还指定了 --condition-filter 时才应指定。

但是,正如您所看到的,上面有一个--condition-filter标志。我尝试重新排序它,使其--condition-filter出现在 之前--aggregation,但这会导致持续时间错误,尽管它已经与文档匹配,并且像=60s、那样的轻微编辑=1min或在 中 的时间附近添加引号--aggregation似乎没有帮助:

gcloud alpha monitoring policies create \
    --notification-channels=test_channel \
    --condition-filter='metric.type=appengine.googleapis.com/flex/instance/cpu/utilization resource.type=gae_instance' \
    --aggregation='{"alignmentPeriod": "20s","perSeriesAligner": "ALIGN_MEAN"}' \
    --condition-display-name='CPU Utilization >0.80 for 1m'\
    --duration='1min' \
    --if='> 0.80' \
    --display-name='test alert'
Run Code Online (Sandbox Code Playgroud)

怎么了?为什么我会收到这些错误?

Max*_*xim 5

经过一番刻意的尝试后,我成功地通过一些更改使其工作。

首先,我强烈建议您使用最新的 Cloud SDK 版本 - 如果您尚未使用gcloud components update. 就我而言,我使用了 Cloud SDK v275.0.0

您提供的第一个命令片段可以正确创建通知通道,因此应该保持不变:

gcloud alpha monitoring channels create \
    --description='test notification' \
    --display-name='test_channel' \
    --type=email \
    --channel-labels=email_address=example@gmail.com
Run Code Online (Sandbox Code Playgroud)

不过,为了创建 Stackdriver Monitoring 策略,我必须执行一些更改:

  • 标志指定的持续时间--duration似乎不能很好地识别该单位;为了不抛出错误,我必须将其更改为--duration='1min'--duration='1m'

  • 需要一个警报策略组合器,因此我添加了一个组合器,在本例中--combiner选项设置为: 。AND--combiner='AND'

  • --notification-channels标志指定的通知通道需要和/ID或完全限定的标识符 - 它不会解析显示名称,因此我将其更改为--notification-channels=13234113421234567.

    您可以找到ID之前使用以下命令创建的通知通道的标识符或完全限定标识符:

    gcloud alpha monitoring channels list \
       --filter='displayName="test_channel"' \
       --format='value(name)'
    
    Run Code Online (Sandbox Code Playgroud)

最后,gcloud创建警报策略的命令应类似于以下内容:

gcloud alpha monitoring policies create \
    --notification-channels=13234113421234567 \
    --aggregation='{"alignmentPeriod": "60s","perSeriesAligner": "ALIGN_MEAN"}' \
    --condition-display-name='CPU Utilization >0.80 for 10m'\
    --condition-filter='metric.type="appengine.googleapis.com/flex/instance/cpu/utilization" resource.type="gae_instance"' \
    --duration='1m' \
    --if='> 0.80' \
    --display-name='test alert' \
    --combiner='AND'
Run Code Online (Sandbox Code Playgroud)

请注意,此命令处于开发的alpha状态,因此某些特性或功能可能尚未完全充实和/或测试。