【问题标题】:Create a Stackdriver Alert Policy using gcloud? (without loading from file)使用 gcloud 创建 Stackdriver 警报政策? (不从文件加载)
【发布时间】:2020-01-11 01:02:20
【问题描述】:

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

gcloud alpha monitoring channels create \
    --description='test notification' \
    --display-name='test_channel' \
    --type=email \
    --channel-labels=email_address=example@gmail.com

但我似乎无法让警报策略与command line 一起使用(尽量避免使用从文件加载,因为我需要使用模板)。看起来这应该可行:

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'

但它返回:

[--aggregation] 的值无效:仅应在以下情况下指定 --condition-filter 也被指定了。

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

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'

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

【问题讨论】:

  • TLDR 版本的答案是我缺少组合器--combiner='AND',我想我也可以做类似--condition-filter="resource.type=\"global\" AND metric.type=\"logging.googleapis.com/user/vpc_firewall_changes\"" 的事情。并且文档让我使用了不正确的1min 格式,而我尝试过的应该是1m,但还有其他错误。 Channel Name: my-channel 的标志让我在通知渠道上大吃一惊,文档确实提到了 ID,但忽略了这一点,并认为所有标志都可以工作。

标签: google-cloud-platform gcloud stackdriver


【解决方案1】:

经过一些刻意的尝试后,我设法通过一些更改使其正常工作。

首先,我强烈建议您使用最新的 Cloud SDK 版本 - 如果您还没有使用 gcloud components update,请将其更新到最新版本。就我而言,我使用了 Cloud SDK v275.0.0

您提供的第一个命令 sn-p 可以正常工作以创建通知通道,因此应保持不变:

gcloud alpha monitoring channels create \
    --description='test notification' \
    --display-name='test_channel' \
    --type=email \
    --channel-labels=email_address=example@gmail.com

不过,为了创建 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)'
    

最后,用于创建警报策略的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'

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

【讨论】:

  • 感谢您的帮助。
【解决方案2】:

谢谢@maxim,这对我帮助很大! 这是我用来部署基于日志的指标来侦听系统日志消息的方法:

创建基于日志的指标:

gcloud logging metrics create "S3-SQL-backup-failed-test2" \
    --description "The backup has failed go over the logs to find out why (tag: backup-to-s3)." \
    --log-filter "resource.type=gce_instance AND 
resource.labels.instance_id=${INSTANCE_ID} AND 
logName=projects/${PROJECT_ID}/logs/syslog AND
'SQL backup has failed failure occurred during the dump file exists validation'"

创建监控电子邮件:

gcloud alpha monitoring channels create --display-name="${MONITOR_EMAIL_NAME}" /
    --type=email /
    --channel-labels=email_address="${MONITOR_EMAIL}"

根据指标创建警报

gcloud alpha monitoring policies create \
    --notification-channels="${CHANNEL}" \
    --aggregation='{"alignmentPeriod": "60s","perSeriesAligner": "ALIGN_MEAN"}' \
    --condition-display-name='S3-SQL-backup-failed-test2'\
    --condition-filter='resource.type="gce_instance" AND metric.type="logging.googleapis.com/user/S3-SQL-backup-failed"' \
    --duration='0s' \
    --display-name='Alert-S3-SQL-backup-failed-test2' \
    --if='> 0' \
    --combiner='OR' \
    --trigger-count="1"

【讨论】:

    猜你喜欢
    • 2020-05-02
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 2018-02-27
    • 2020-11-02
    • 1970-01-01
    • 2021-06-14
    • 2015-03-07
    相关资源
    最近更新 更多