第 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
# install --mode=0755 /usr/share/pacemaker/alerts/alert_file.sh.sample /var/lib/pacemaker/alert_file.sh
安装脚本后,您可以创建使用该脚本的报警。
28.1.1. 配置一个使用 alert_file.sh
警报代理的警报
以下流程安装 alert_file.sh
报警代理,并将警报配置为将事件记录到文件中。报警代理是以用户 hacluster
身份运行的,该用户具有最小的权限集。
流程
在集群中的每个节点上,将
alert_file.sh.sample
脚本安装为alert_file.sh
。install --mode=0755 /usr/share/pacemaker/alerts/alert_file.sh.sample /var/lib/pacemaker/alert_file.sh
# install --mode=0755 /usr/share/pacemaker/alerts/alert_file.sh.sample /var/lib/pacemaker/alert_file.sh
Copy to Clipboard Copied! 在集群中的每个节点上,创建用于记录事件的日志文件。
touch /var/log/pcmk_alert_file.log
# touch /var/log/pcmk_alert_file.log
Copy to Clipboard Copied! 将文件
pcmk_alert_file.log
的所有权更改为用户hacluster
。chown hacluster:haclient /var/log/pcmk_alert_file.log
# chown hacluster:haclient /var/log/pcmk_alert_file.log
Copy to Clipboard Copied! 将文件
pcmk_alert_file.log
的权限更改为用户hacluster
的读和写。chmod 600 /var/log/pcmk_alert_file.log
# chmod 600 /var/log/pcmk_alert_file.log
Copy to Clipboard Copied!
在集群中的一个节点上创建警报。
pcs alert create id=alert_file description="Log events to a file." path=/var/lib/pacemaker/alert_file.sh
# pcs alert create id=alert_file description="Log events to a file." path=/var/lib/pacemaker/alert_file.sh
Copy to Clipboard Copied! 将日志文件的路径添加作警报的接收者。
pcs alert recipient add alert_file id=my-alert_logfile value=/var/log/pcmk_alert_file.log
# pcs alert recipient add alert_file id=my-alert_logfile value=/var/log/pcmk_alert_file.log
Copy to Clipboard Copied!
28.1.2. 配置一个使用 alert_snmp.sh
警报代理的警报
以下流程将 alert_snmp.sh.sample
脚本安装为 alert_snmp.sh
,并配置一个使用安装的 alert_snmp.sh
报警代理,来将集群事件作为 SNMP 陷阱发送。默认情况下,该脚本会发送除成功监控调用 SNMP 服务器外的所有事件。
流程
在集群中的每个节点上,将
alert_snmp.sh.sample
脚本安装为alert_snmp.sh
。install --mode=0755 /usr/share/pacemaker/alerts/alert_snmp.sh.sample /var/lib/pacemaker/alert_snmp.sh
# install --mode=0755 /usr/share/pacemaker/alerts/alert_snmp.sh.sample /var/lib/pacemaker/alert_snmp.sh
Copy to Clipboard Copied! 在集群中的一个节点上,配置一个使用
alert_snmp.sh
代理的警报,将时间戳格式配置为 meta 选项。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 create id=snmp_alert path=/var/lib/pacemaker/alert_snmp.sh meta timestamp-format="%Y-%m-%d,%H:%M:%S.%01N"
Copy to Clipboard Copied! 为警报配置接收者
pcs alert recipient add snmp_alert value=192.168.1.2
# pcs alert recipient add snmp_alert value=192.168.1.2
Copy to Clipboard Copied! 显示警报配置。
pcs alert
# 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)
Copy to Clipboard Copied!
28.1.3. 配置一个使用 alert_smtp.sh
警报代理的警报
以下流程安装 alert_smtp.sh
代理,然后配置一个使用安装的报警代理,来将集群事件作为电子邮件消息发送。
流程
在集群中的每个节点上,将
alert_smtp.sh.sample
脚本安装为alert_smtp.sh
。install --mode=0755 /usr/share/pacemaker/alerts/alert_smtp.sh.sample /var/lib/pacemaker/alert_smtp.sh
# install --mode=0755 /usr/share/pacemaker/alerts/alert_smtp.sh.sample /var/lib/pacemaker/alert_smtp.sh
Copy to Clipboard Copied! 在集群中的一个节点上,配置一个警报,来将集群事件作为电子邮件发送。
pcs alert create id=smtp_alert path=/var/lib/pacemaker/alert_smtp.sh options email_sender=donotreply@example.com
# pcs alert create id=smtp_alert path=/var/lib/pacemaker/alert_smtp.sh options email_sender=donotreply@example.com
Copy to Clipboard Copied! 为警报配置接收者。
pcs alert recipient add smtp_alert value=admin@example.com
# pcs alert recipient add smtp_alert value=admin@example.com
Copy to Clipboard Copied! 显示警报配置。
pcs alert
# 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)
Copy to Clipboard Copied!