Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

13.2. 使用监控资源的事件通知

ocf:pacemaker:ClusterMon 资源可以监控集群状态,并触发每个集群事件的警报。此资源在后台以固定间隔运行 crm_mon 命令。
默认情况下,cr m_mon 命令仅侦听资源事件;若要启用隔离事件列表,您可以在配置 ClusterMon 资源时为 命令提供 --watch-fencing 选项。crm_mon 命令不会监控成员资格问题,而是在启动隔离以及为该节点启动监控时打印一条消息,这意味着成员刚加入群集。
ClusterMon 资源可以执行外部程序,以确定如何使用 extra_options 参数来使用集群通知。表 13.3 “传递给外部监控程序的环境变量” 列出传递给该程序的环境变量,以描述发生的集群事件类型。

表 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 程序。
  1. 在集群的一个节点上,创建将记录事件通知的程序。
    # cat <<-END >/usr/local/bin/crm_logger.sh
    #!/bin/sh
    logger -t "ClusterMon-External" "${CRM_notify_node} ${CRM_notify_rsc} \
    ${CRM_notify_task} ${CRM_notify_desc} ${CRM_notify_rc} \
    ${CRM_notify_target_rc} ${CRM_notify_status} ${CRM_notify_recipient}";
    exit;
    END
  2. 设置程序的所有权和权限。
    # chmod 700 /usr/local/bin/crm_logger.sh
    # chown root.root /usr/local/bin/crm_logger.sh
  3. 使用 scp 命令将 crm_logger.sh 程序复制到集群的其他节点上,将程序放置在同一位置上,并为程序设置相同的所有权和权限。
以下示例配置名为 ClusterMon -External 的 ClusterMon 资源,该资源运行程序 /usr/local/bin/crm_logger.shClusterMon 资源将集群状态输出到 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
注意
以下是此资源执行以及可以手动运行的 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
以下示例显示了本示例生成的监控通知输出格式。
Aug  7 11:31:32 rh6node1pcmk ClusterMon-External: rh6node2pcmk.examplerh.com ClusterIP st_notify_fence Operation st_notify_fence requested by rh6node1pcmk.examplerh.com for peer rh6node2pcmk.examplerh.com: OK (ref=b206b618-e532-42a5-92eb-44d363ac848e) 0 0 0 #177
Aug  7 11:31:32 rh6node1pcmk ClusterMon-External: rh6node1pcmk.examplerh.com ClusterIP start OK 0 0 0
Aug  7 11:31:32 rh6node1pcmk ClusterMon-External: rh6node1pcmk.examplerh.com ClusterIP monitor OK 0 0 0
Aug  7 11:33:59 rh6node1pcmk ClusterMon-External: rh6node1pcmk.examplerh.com fence_xvms monitor OK 0 0 0
Aug  7 11:33:59 rh6node1pcmk ClusterMon-External: rh6node1pcmk.examplerh.com ClusterIP monitor OK 0 0 0
Aug  7 11:33:59 rh6node1pcmk ClusterMon-External: rh6node1pcmk.examplerh.com ClusterMon-External start OK 0 0 0
Aug  7 11:33:59 rh6node1pcmk ClusterMon-External: rh6node1pcmk.examplerh.com fence_xvms start OK 0 0 0
Aug  7 11:33:59 rh6node1pcmk ClusterMon-External: rh6node1pcmk.examplerh.com ClusterIP start OK 0 0 0
Aug  7 11:33:59 rh6node1pcmk ClusterMon-External: rh6node1pcmk.examplerh.com ClusterMon-External monitor OK 0 0 0
Aug  7 11:34:00 rh6node1pcmk crmd[2887]:   notice: te_rsc_command: Initiating action 8: monitor ClusterMon-External:1_monitor_0 on rh6node2pcmk.examplerh.com
Aug  7 11:34:00 rh6node1pcmk crmd[2887]:   notice: te_rsc_command: Initiating action 16: start ClusterMon-External:1_start_0 on rh6node2pcmk.examplerh.com
Aug  7 11:34:00 rh6node1pcmk ClusterMon-External: rh6node1pcmk.examplerh.com ClusterIP stop OK 0 0 0
Aug  7 11:34:00 rh6node1pcmk crmd[2887]:   notice: te_rsc_command: Initiating action 15: monitor ClusterMon-External_monitor_10000 on rh6node2pcmk.examplerh.com
Aug  7 11:34:00 rh6node1pcmk ClusterMon-External: rh6node2pcmk.examplerh.com ClusterMon-External start OK 0 0 0
Aug  7 11:34:00 rh6node1pcmk ClusterMon-External: rh6node2pcmk.examplerh.com ClusterMon-External monitor OK 0 0 0
Aug  7 11:34:00 rh6node1pcmk ClusterMon-External: rh6node2pcmk.examplerh.com ClusterIP start OK 0 0 0
Aug  7 11:34:00 rh6node1pcmk ClusterMon-External: rh6node2pcmk.examplerh.com ClusterIP monitor OK 0 0 0