设置
我目前有一个使用 Pacemaker+Corosync 的 2 节点 HA 集群。我的节点在 Debian 8 (Jessie) 上运行。现在,当集群中发生更改(资源停止/启动、升级/降级、移动...)时,我将能够收到通知。
由于电子邮件报告是 2008 年左右的事情,我想使用 Slack。为此,我创建了一个脚本,用于curl
使用 Slack 的网络钩子。我的脚本使用此处记录的环境变量:Pacemaker - 7.3. 通过外部代理配置通知。
该脚本在 shell 中手动执行时运行良好,并能够在指定频道上发布。它还会记录到/var/log/ocf-notifier.log
。
问题
基于这个答案之后,我使用 Pacemaker 的资源代理在集群中创建了一个新资源ocf:pacemaker:ClusterMon
,它调用了我的自定义脚本(/usr/local/bin/ocf-notifier
)。
然而我注意到,当节点发生变化时,我的脚本根本不被调用(尝试停止资源以及完全关闭节点)。
因此,我尝试crm_mon
像下面这样手动启动:
$ crm_mon -Arf --interval=2 -E /usr/local/bin/ocf-notifier -e '@jordan'
看看这是否可以通过使用另一个 shell 来操作集群来触发该事件。事实证明,crm_mon
能够看到集群中发生的变化(节点脱机、资源停止/启动……),但我的自定义脚本从未眨眼。我的自定义日志文件保持为空,Slack 中没有出现任何内容,因为我相信脚本根本没有被调用。
总结
crm_mon
不会在集群事件上调用外部代理,因为它应该使用-E
选项。我做错了什么?