13.2. 使用监控资源的事件通知
ocf:pacemaker:ClusterMon
资源可以监控集群状态,并触发每个集群事件的警报。此资源在后台以固定间隔运行 crm_mon 命令。
默认情况下,cr m_mon 命令仅侦听资源事件;若要启用隔离事件列表,您可以在配置
ClusterMon
资源时为 命令提供 --watch-fencing
选项。crm_mon 命令不会监控成员资格问题,而是在启动隔离以及为该节点启动监控时打印一条消息,这意味着成员刚加入群集。
ClusterMon
资源可以执行外部程序,以确定如何使用 extra_options
参数来使用集群通知。表 13.3 “传递给外部监控程序的环境变量” 列出传递给该程序的环境变量,以描述发生的集群事件类型。
环境变量 | 描述 |
---|---|
CRM_notify_recipient
|
资源定义的静态外部通知
|
CRM_notify_node
|
发生状态更改的节点
|
CRM_notify_rsc
|
更改状态的资源名称
|
CRM_notify_task
|
导致状态更改的操作
|
CRM_notify_desc
|
导致状态更改的操作的文本输出相关错误代码(如果有)
|
CRM_notify_rc
|
操作的返回代码
|
CRM_target_rc
|
操作的预期返回代码
|
CRM_notify_status
|
操作状态的数字表示
|
以下示例配置了一个
ClusterMon
资源,用于执行外部程序 crm_logger.sh,它将记录程序中指定的事件通知。
以下流程创建此资源
要使用的 crm_logger.sh
程序。
- 在集群的一个节点上,创建将记录事件通知的程序。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 设置程序的所有权和权限。
chmod 700 /usr/local/bin/crm_logger.sh chown root.root /usr/local/bin/crm_logger.sh
# chmod 700 /usr/local/bin/crm_logger.sh # chown root.root /usr/local/bin/crm_logger.sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 使用 scp 命令将 crm_logger.sh 程序复制到集群的其他节点上,将程序放置在同一位置上,并为程序设置相同的所有权和权限。
以下示例配置名为
ClusterMon
-External 的 ClusterMon
资源,该资源运行程序 /usr/local/bin/crm_logger.sh
。ClusterMon
资源将集群状态输出到 a html
文件,在这个示例中是 /var/www/html/cluster_mon.html
。The pidfile
检测 ClusterMon 是否已
在运行;在本示例中,该文件为 /var/run/crm_mon-external.pid
。此资源作为克隆创建,以便其在群集中的每个节点上运行。指定了 watch-fencing
,除了资源事件(包括 start/stop/monitor、start/monitor)和停止隔离资源外,还启用对隔离事件的监控。
pcs resource create ClusterMon-External ClusterMon user=root \ update=10 extra_options="-E /usr/local/bin/crm_logger.sh --watch-fencing" \ htmlfile=/var/www/html/cluster_mon.html \ pidfile=/var/run/crm_mon-external.pid clone
# pcs resource create ClusterMon-External ClusterMon user=root \
update=10 extra_options="-E /usr/local/bin/crm_logger.sh --watch-fencing" \
htmlfile=/var/www/html/cluster_mon.html \
pidfile=/var/run/crm_mon-external.pid clone
注意
以下是此资源执行以及可以手动运行的 crm_mon 命令:
/usr/sbin/crm_mon -p /var/run/crm_mon-manual.pid -d -i 5 \ -h /var/www/html/crm_mon-manual.html -E "/usr/local/bin/crm_logger.sh" \ --watch-fencing
# /usr/sbin/crm_mon -p /var/run/crm_mon-manual.pid -d -i 5 \
-h /var/www/html/crm_mon-manual.html -E "/usr/local/bin/crm_logger.sh" \
--watch-fencing
以下示例显示了本示例生成的监控通知输出格式。