Mysql 将Grafana配置为仅当查询匹配时间超过4分钟时发出警报

Mysql 将Grafana配置为仅当查询匹配时间超过4分钟时发出警报,mysql,grafana,Mysql,Grafana,我有这样一个Grafana指标: SELECT UNIX_TIMESTAMP(time) as time_sec, sum(average_hashrate_eth) as value, 'total hashrate' as metric FROM status_rig group by time; 发出这样的警报: SELECT UNIX_TIMESTAMP(time) as time_sec, sum(average_hashrate_eth) as value,

我有这样一个Grafana指标:

SELECT
  UNIX_TIMESTAMP(time) as time_sec,
  sum(average_hashrate_eth) as value,
  'total hashrate' as metric
FROM status_rig
group by time;
发出这样的警报:

SELECT
  UNIX_TIMESTAMP(time) as time_sec,
  sum(average_hashrate_eth) as value,
  'total hashrate' as metric
FROM status_rig
group by time;
查询(A,5m,现在)的last()
低于800时的

当此查询低于800并持续4分钟以上时,如何使其仅发出警报


谢谢。

假设度量的时间频率为60秒,时间为
DATETIME
类型

试试这个:

  SELECT
   UNIX_TIMESTAMP(time) as time_sec,
   SUM(case when average_hashrate_eth < 800 THEN 1 ELSE 0 END) as counter,
   SUM(average_hashrate_eth) as value,
   'total hashrate' as metric
  FROM status_rig
  WHERE time between (now()-interval 5 minute) and now()
  HAVING counter>=5;
选择
UNIX时间戳(时间)为时间秒,
求和(当平均值小于800时,则为1,否则为0结束)作为计数器,
总和(平均值),
“总哈希速率”作为度量
从“状态”到“装备”
其中(now()-间隔5分钟)和now()之间的时间
计数器>=5;

这将为您提供从当前时间算起最近五分钟的
平均值\u hashrate\u eth
,如果该值保持在800以下,您只需更新警报配置即可使用:


当查询(A,4m,现在)的max()低于800时,“Evaluate every”设置为60秒。这就是您要求的吗?好的,那么警报查询的预期输出是什么?因此,一旦查询低于800,它就会发出警报。例如,我希望它仅在低于800并持续5分钟以上时发出警报。它会给出以下错误:
error 1064:您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以获得正确的语法,将“total hashrate”用作status_rig中的度量值,其中第5行的时间间隔(now()-interval)已更新查询。检查一次