Создать политику оповещения о Stackdriver с помощью gcloud? (без загрузки из файла) - PullRequest
2 голосов
/ 11 января 2020

Поэтому я настроил канал уведомлений с помощью:

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

Но я не могу заставить Политику оповещения работать с командной строкой (пытаясь избежать использования загрузки из файл, как мне нужно будет использовать шаблон). Кажется, что это должно работать:

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, или добавление кавычек во времени в --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'

Что не так? Почему я получаю эти ошибки?

1 Ответ

3 голосов
/ 11 января 2020

После некоторой преднамеренной пробной ошибки мне удалось заставить это работать с несколькими изменениями.

Прежде всего, я настоятельно рекомендую вам использовать последнюю версию 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

Однако, чтобы создать политику мониторинга Stackdriver, мне пришлось внести некоторые изменения:

  • Длительность, указанная флагом --duration, похоже, плохо распознает устройство; Мне пришлось изменить его с --duration='1min' на --duration='1m', чтобы не выдавать ошибку.

  • Был необходим объединитель для политики предупреждений, поэтому я добавил один с * Опция 1023 *--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 , поэтому некоторые функции или функциональные возможности могут быть не полностью реализованы и / или протестированы.

...