第 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
Copy to Clipboard

安装脚本后,您可以创建使用该脚本的报警。

28.1.1. 配置一个使用 alert_file.sh 警报代理的警报

以下流程安装 alert_file.sh 报警代理,并将警报配置为将事件记录到文件中。报警代理是以用户 hacluster 身份运行的,该用户具有最小的权限集。

流程

  1. 在集群中的每个节点上,将 alert_file.sh.sample 脚本安装为 alert_file.sh

    # install --mode=0755 /usr/share/pacemaker/alerts/alert_file.sh.sample /var/lib/pacemaker/alert_file.sh
    Copy to Clipboard
  2. 在集群中的每个节点上,创建用于记录事件的日志文件。

    # touch /var/log/pcmk_alert_file.log
    Copy to Clipboard
    1. 将文件 pcmk_alert_file.log 的所有权更改为用户 hacluster

      # chown hacluster:haclient /var/log/pcmk_alert_file.log
      Copy to Clipboard
    2. 将文件 pcmk_alert_file.log 的权限更改为用户 hacluster 的读和写。

      # chmod 600 /var/log/pcmk_alert_file.log
      Copy to Clipboard
  3. 在集群中的一个节点上创建警报。

    # pcs alert create id=alert_file description="Log events to a file." path=/var/lib/pacemaker/alert_file.sh
    Copy to Clipboard
  4. 将日志文件的路径添加作警报的接收者。

    # pcs alert recipient add alert_file id=my-alert_logfile value=/var/log/pcmk_alert_file.log
    Copy to Clipboard

28.1.2. 配置一个使用 alert_snmp.sh 警报代理的警报

以下流程将 alert_snmp.sh.sample 脚本安装为 alert_snmp.sh,并配置一个使用安装的 alert_snmp.sh 报警代理,来将集群事件作为 SNMP 陷阱发送。默认情况下,该脚本会发送除成功监控调用 SNMP 服务器外的所有事件。

流程

  1. 在集群中的每个节点上,将 alert_snmp.sh.sample 脚本安装为 alert_snmp.sh

    # install --mode=0755 /usr/share/pacemaker/alerts/alert_snmp.sh.sample /var/lib/pacemaker/alert_snmp.sh
    Copy to Clipboard
  2. 在集群中的一个节点上,配置一个使用 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"
    Copy to Clipboard
  3. 为警报配置接收者

    # pcs alert recipient add snmp_alert value=192.168.1.2
    Copy to Clipboard
  4. 显示警报配置。

    # 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

28.1.3. 配置一个使用 alert_smtp.sh 警报代理的警报

以下流程安装 alert_smtp.sh 代理,然后配置一个使用安装的报警代理,来将集群事件作为电子邮件消息发送。

流程

  1. 在集群中的每个节点上,将 alert_smtp.sh.sample 脚本安装为 alert_smtp.sh

    # install --mode=0755 /usr/share/pacemaker/alerts/alert_smtp.sh.sample /var/lib/pacemaker/alert_smtp.sh
    Copy to Clipboard
  2. 在集群中的一个节点上,配置一个警报,来将集群事件作为电子邮件发送。

    # pcs alert create id=smtp_alert path=/var/lib/pacemaker/alert_smtp.sh options email_sender=donotreply@example.com
    Copy to Clipboard
  3. 为警报配置接收者。

    # pcs alert recipient add smtp_alert value=admin@example.com
    Copy to Clipboard
  4. 显示警报配置。

    # 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
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat