第 28 章 为集群事件触发脚本
Pacemaker 集群是一个事件驱动的系统,其中事件可能是资源或节点故障、配置更改或资源启动或停止。您可以将 Pacemaker 集群警报配置为在集群事件发生时执行一些外部操作,警报代理是集群调用的外部程序,其方式与集群调用的资源代理处理资源配置和操作相同。
集群使用环境变量将事件信息传递给代理。代理可以执行任何操作,比如发送电子邮件信息或登录到某个文件或更新监控系统。
-
Pacemaker 提供几个示例警报代理,这些代理默认安装在
/usr/share/pacemaker/alerts
中。这些样本脚本可以像现在一样复制和使用,或者可作为模板使用,以适应您的目的。关于它们支持的所有属性,请参考样本代理的源代码。 - 如果示例警报代理不满足您的需要,您可以编写自己的警报代理来调用。
28.1. 安装并配置示例警报代理
当使用示例警报代理时,您应该检查该脚本以确保它适合您的需要。这些示例代理是作为特定集群环境自定义脚本的起点。请注意,虽然红帽支持报警代理脚本用来与 Pacemaker 进行通信的接口,但红帽并不支持自定义代理。
要使用示例报警代理中的一个,您必须在集群中的每个节点上安装代理。例如,以下命令安装 alert_file.sh.sample
脚本来作为 alert_file.sh
。
# install --mode=0755 /usr/share/pacemaker/alerts/alert_file.sh.sample /var/lib/pacemaker/alert_file.sh
安装脚本后,您可以创建使用该脚本的报警。
以下示例配置了一个报警,其使用安装的 alert_file.sh
报警代理将事件记录到文件中。报警代理是以用户 hacluster
身份运行的,该用户具有最小的权限集。
这个示例创建日志文件 pcmk_alert_file.log
,该文件将用于记录事件。然后,它会创建报警代理,并将路径添加到日志文件来作为其接收者。
# touch /var/log/pcmk_alert_file.log # chown hacluster:haclient /var/log/pcmk_alert_file.log # chmod 600 /var/log/pcmk_alert_file.log # pcs alert create id=alert_file description="Log events to a file." path=/var/lib/pacemaker/alert_file.sh # pcs alert recipient add alert_file id=my-alert_logfile value=/var/log/pcmk_alert_file.log
以下示例安装了 alert_snmp.sh.sample
脚本来作为 alert_snmp.sh
,并配置了一个报警,其使用安装的 alert_snmp.sh
报警代理来将集群事件作为 SNMP 陷阱发送。默认情况下,该脚本会发送除成功监控调用 SNMP 服务器外的所有事件。这个示例将时间戳格式配置为 meta 选项。配置报警后,本例为报警配置了一个接收者,并显示报警配置。
# install --mode=0755 /usr/share/pacemaker/alerts/alert_snmp.sh.sample /var/lib/pacemaker/alert_snmp.sh # pcs alert create id=snmp_alert path=/var/lib/pacemaker/alert_snmp.sh meta timestamp-format="%Y-%m-%d,%H:%M:%S.%01N" # pcs alert recipient add snmp_alert value=192.168.1.2 # pcs alert Alerts: Alert: snmp_alert (path=/var/lib/pacemaker/alert_snmp.sh) Meta options: timestamp-format=%Y-%m-%d,%H:%M:%S.%01N. Recipients: Recipient: snmp_alert-recipient (value=192.168.1.2)
以下示例安装了 alert_smtp.sh
代理,然后配置了一个报警,其使用安装的报警代理来将集群事件作为电子邮件消息发送。配置报警后,本示例配置了一个接收者,并显示报警配置。
# install --mode=0755 /usr/share/pacemaker/alerts/alert_smtp.sh.sample /var/lib/pacemaker/alert_smtp.sh # pcs alert create id=smtp_alert path=/var/lib/pacemaker/alert_smtp.sh options email_sender=donotreply@example.com # pcs alert recipient add smtp_alert value=admin@example.com # pcs alert Alerts: Alert: smtp_alert (path=/var/lib/pacemaker/alert_smtp.sh) Options: email_sender=donotreply@example.com Recipients: Recipient: smtp_alert-recipient (value=admin@example.com)