![监控 MySQL 复制并在复制不起作用时发出警报](https://linux22.com/image/784613/%E7%9B%91%E6%8E%A7%20MySQL%20%E5%A4%8D%E5%88%B6%E5%B9%B6%E5%9C%A8%E5%A4%8D%E5%88%B6%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%E6%97%B6%E5%8F%91%E5%87%BA%E8%AD%A6%E6%8A%A5.png)
我对 MySQL 复制监控以及特别是使用 Grafana/Prometheus 发出警报有疑问。
我们有 2 个配置了复制的 MySQL(确切地说是 MariaDB)实例:一个主实例和一个从实例。它们可以不时地改变角色,主实例可以变成从实例,反之亦然(我使用 MariaDB Maxscale 代理,这使得这种切换非常容易)
我想监控主服务器和从服务器之间的复制状态和延迟。我为此安装了 mysqld_exporter,现在我在 Grafana 中看到了数据。但我还想在复制不工作或从服务器由于某种原因未与主服务器缓存时发送警报。
问题:当 MAster 和 Replica 可以切换角色时,如何为上述场景配置警报。
也许有一些关于这个主题的文章(但我还没有找到)
如果设置是静态的 - 我认为我可以配置警报,但如何处理动态设置?非常感谢!
PS 目前我已经找到了以下资源,但没有一个告诉如何处理动态设置的警报
答案1
像这样的查询
( (mysql_slave_status_seconds_behind_master - mysql_slave_status_sql_delay) and ON (instance) mysql_slave_status_master_server_id > 0 ) > 30
从https://awesome-prometheus-alerts.grep.to/rules#rule-mysql-1-6 解决了我遇到的问题。
我的问题是我不知道如何检查 mysql 实例是作为辅助副本运行还是作为主实例运行。查询的这一部分为我解决了这个难题:
mysql_slave_status_master_server_id > 0