Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform Stackdriver监控警报:我可以使用函数而不是常量作为条件阈值吗?_Google Cloud Platform_Stackdriver - Fatal编程技术网

Google cloud platform Stackdriver监控警报:我可以使用函数而不是常量作为条件阈值吗?

Google cloud platform Stackdriver监控警报:我可以使用函数而不是常量作为条件阈值吗?,google-cloud-platform,stackdriver,Google Cloud Platform,Stackdriver,我正在玩Stackdriver监控警报,并使用了Prometheus/Alertmanager,我对似乎缺少选项感到非常失望 例如,我有一个每天发出一个数据点的资源,这是某个资源使用年限的一个纪元秒。我想创建一个警报,将数据点与当前时间进行比较,如果资源太旧,则应触发警报 在普罗米修斯,它的表达方式如下: - alert: TooOldAlert expr: sum(time() - datapoint_epoch_second) BY (datapoint_group) > 48 *

我正在玩Stackdriver监控警报,并使用了Prometheus/Alertmanager,我对似乎缺少选项感到非常失望

例如,我有一个每天发出一个数据点的资源,这是某个资源使用年限的一个纪元秒。我想创建一个警报,将数据点与当前时间进行比较,如果资源太旧,则应触发警报

在普罗米修斯,它的表达方式如下:

- alert: TooOldAlert
  expr: sum(time() - datapoint_epoch_second) BY (datapoint_group) > 48 * 60 * 60
  for: 1m
  labels:
    severity: critical
因此,如果数据点的使用时间超过48小时,我将收到警报

在Stackdriver监控警报中似乎不存在这样的选项。我也试着检查API/编程接口,但也发现了不足

TL;DR:堆栈驱动程序监控警报中是否存在内置功能?

堆栈驱动程序警报确实具有内置功能。但它们与聚合、过滤、比较和创建比率有关。有关警报策略,请参阅文档。设置它们的一个例子是

但是,在这些表达式中没有可用于获取历元时间的
time()
函数。这就是问题所在

为了将您的年龄警报移植到Stackdriver中,一种方法是更改日志“up stream”,以便您的服务发出一个日志,说明它相对于“now”的年龄。在这种情况下,您可以过滤年龄,而无需调用现在的时间


如果无法更改服务中的日志结构,可以选择捕获“下游”日志并对其进行转换。一种方法是将此Stackdriver日志下沉到Pub/Sub,并让该事件触发一个云函数。下面是一个示例指南

谢谢,但这些都不是我的选择。真理之源每24小时准确地发射一次数据点,因此时间()函数将是监视它的唯一可靠方式。请提供有关您的用例的更多信息以及从Prometheus/Alertmanager切换到Stackdriver监视警报的原因。@Serhirohoza我正在将一些代码从永久服务转移到云函数,由于每24小时只需处理一次数据,因此无需浪费每天24小时运行的完整服务。这一变化也将缓解我对普罗米修斯的需求。Stackdriver似乎很适合,但它对24/7服务过于优化,不足以实现无服务器/云功能。如果您每天只需要一个值,可能只需要设置对齐/插值以减少采样频率。看看
Aligner
api:@c69这是一个很好的第一步,但仍然不能解决没有time()函数的问题。此外,Stackdriver处理缺失值的方式使得很难知道何时真正缺失了值。。。