如果主从数据库服务器出现故障,则在 Prometheus 中触发警报
Posted
技术标签:
【中文标题】如果主从数据库服务器出现故障,则在 Prometheus 中触发警报【英文标题】:Trigger alert in Prometheus if master and slave database server goes down 【发布时间】:2020-08-22 00:26:39 【问题描述】:我有 2 个问题。如果它们匹配,我需要触发警报但它不起作用:
up name="DEV-DB-1-EC2" == 0 and up name="DEV-DB-2-EC2" == 0
我关闭了两台服务器,但没有得到数据,它说:no data
作为输出。
如果我单独运行每个查询,它会起作用。
长话短说:
如果 master db (DEV-DB-1-EC2) 和 slave db (DEV-DB-2-EC2) 都出现故障,我需要触发警报.
有人可以为此要求提供正确的语法吗?
【问题讨论】:
我不使用 Grafana。这只是一个猜测:upname="DEV-DB-1-EC2",name="DEV-DB-2-EC2"=1
或 upinstance="DEV-DB-1-EC2",job="DEV-DB-2-EC2"=1
感谢您的回复,但以上查询无效
阅读this。它将帮助您改进您的问题。
我觉得你的标题应该是:Prometheus 主从数据库宕机时在 Grafana 中触发警报。
【参考方案1】:
就像 Prometheus logical binary operators 中的每个二元运算符一样,都需要标签集匹配。
vector1 和 vector2 生成一个由以下元素组成的向量 vector1 中 vector2 中存在完全匹配的元素 标签集。
在您的情况下,名称显然不匹配,因此您需要添加 ON()/IGNORING() 子句。
一个简单的最小修复是:
up name="DEV-DB-1-EC2" == 0 and on() up name="DEV-DB-2-EC2" == 0
如果您有多个主要/次要并需要匹配它们,您可能需要对其进行优化。
【讨论】:
以上是关于如果主从数据库服务器出现故障,则在 Prometheus 中触发警报的主要内容,如果未能解决你的问题,请参考以下文章