Stackdriver Мониторинг оповещений: могу ли я использовать функции вместо констант для порога условия? - PullRequest
1 голос
/ 08 февраля 2020

Я играю с предупреждениями Stackdriver Monitoring и немного использовал Prometheus / Alertmanager. Я очень разочарован отсутствием опций.

Например, у меня есть ресурс, который генерирует одно назначение данных в день, Вторая эпоха эпохи определенного ресурса. Я хотел бы создать предупреждение, которое сравнивает точку данных с текущим временем, и если ресурс слишком старый, предупреждение должно сработать.

В Prometheus это будет выражаться так:

- alert: TooOldAlert
  expr: sum(time() - datapoint_epoch_second) BY (datapoint_group) > 48 * 60 * 60
  for: 1m
  labels:
    severity: critical

Таким образом, если возраст точки данных превышает 48 часов go, я буду предупрежден.

Похоже, что такой опции в предупреждении Stackdriver Monitoring просто не существует. Я также пытался проверить интерфейс API / programmati c, но там тоже не хватало.

TL; DR: Существуют ли вообще встроенные функции в предупреждениях Stackdriver Monitoring?

1 Ответ

1 голос
/ 09 февраля 2020

Оповещение Stackdriver имеет встроенные функции. Но они связаны с агрегацией, фильтрацией, сравнением и созданием rat ios. См. Документы для политики предупреждений здесь . Пример для их настройки: здесь .

Однако нет функции time(), которую можно использовать для получения времени эпохи в этих выражениях. Это руб.

Чтобы перенести оповещение о возрасте в Stackdriver, один из подходов состоит в том, чтобы изменить журнал «вверх по течению», чтобы служба выдавала журнал о том, сколько ему лет относительно «сейчас». В этом случае вы можете отфильтровать возраст, не обращаясь к тому, который сейчас час.

Если вы не можете изменить структуру журнала в своей службе, вы можете выбрать запись журнала «вниз по течению» и выполнить преобразование в нем. Один из подходов состоит в том, чтобы передать этот журнал Stackdriver в Pub / Sub и заставить это событие вызвать функцию Cloud. Пример руководства здесь .

...