如果主从数据库服务器出现故障,则在 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 作为输出。

如果我单独运行每个查询,它会起作用。

长话短说:

如果 ma​​ster db (DEV-DB-1-EC2)slave db (DEV-DB-2-EC2) 都出现故障,我需要触发警报.

有人可以为此要求提供正确的语法吗?

【问题讨论】:

我不使用 Grafana。这只是一个猜测:upname="DEV-DB-1-EC2",name="DEV-DB-2-EC2"=1upinstance="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 中触发警报的主要内容,如果未能解决你的问题,请参考以下文章

mysql主从出现问题 如何诊断故障点   如何恢复数据

Redis主从复制

Redis主从复制

MYSQL 主从同步故障-Error1062--解决方案

Redis 主从复制

ejabberd 集群:多主或主从