使用 apigee-monit 进行自我修复

适用于私有云的 Apigee Edge 包含 apigee-monit,这是一个基于开源工具 monit 实用程序。定期apigee-monit 轮询 Edge 服务;如果某项服务不可用,apigee-monit 会尝试重启该服务。

如需使用 apigee-monit,您必须手动安装它。它不属于 标准安装。

默认情况下,apigee-monit 每 60 秒检查一次 Edge 服务的状态。

快速入门

本部分将向您介绍如何快速启动并运行 apigee-monit

如果您使用的是 Amazon Linux 通过 Fedora 安装 monit。否则 请跳过此步骤。

sudo yum install -y https://kojipkgs.fedoraproject.org/packages/monit/5.25.1/1.el6/x86_64/monit-5.25.1-1.el6.x86_64.rpm

如需安装“apigee-monit”,请按以下步骤操作:

  安装 apigee-monit
/opt/apigee/apigee-service/bin/apigee-service apigee-monit install
/opt/apigee/apigee-service/bin/apigee-service apigee-monit configure
/opt/apigee/apigee-service/bin/apigee-service apigee-monit start

这会安装 apigee-monit 并开始默认监控节点上的所有组件。

  停止监控组件
/opt/apigee/apigee-service/bin/apigee-service apigee-monit unmonitor -c component_name
/opt/apigee/apigee-service/bin/apigee-service apigee-monit unmonitor -c all
  开始监控组件
/opt/apigee/apigee-service/bin/apigee-service apigee-monit monitor -c component_name
/opt/apigee/apigee-service/bin/apigee-service apigee-monit monitor -c all
  获取摘要状态信息
/opt/apigee/apigee-service/bin/apigee-service apigee-monit report
/opt/apigee/apigee-service/bin/apigee-service apigee-monit summary
  查看 apigee-monit 日志文件
cat /opt/apigee/var/log/apigee-monit/apigee-monit.log

下面几个部分将详细介绍上述各个主题及其他主题。

apigee-monit 简介

apigee-monit 有助于确保节点上的所有组件都保持正常运行。它通过 提供各种服务,包括:

  • 正在重启失败的服务
  • 显示摘要信息
  • Logging 监控状态
  • 发送通知
  • 监控非 Edge 服务

Apigee 建议您监控 apigee-monit 以确保其正在运行。如需更多信息 请参阅监控 apigee-monit

apigee-monit 架构

在安装和配置适用于私有云的 Apigee Edge 期间,您可以选择安装单独的实例 (共 apigee-monit 个)。这些单独的 apigee-monit 实例独立于 它们不将自己的组件状态传达给其他节点,也不会 将监控实用程序本身出现的故障传达给任何中央服务。

下图显示了 5 节点集群中的 apigee-monit 架构:

<ph type="x-smartling-placeholder">
</ph> 建筑
  5 个节点集群中 Apigee Monit 的层数
图 1:一个单独的 apigee-monit 实例在 集群

组件配置

apigee-monit 使用组件配置来确定要监控的组件、哪些组件 检查组件的各个方面,以及在发生故障时要采取的操作。

默认情况下,apigee-monit 会使用预定义组件监控节点上的所有 Edge 组件 配置。如需查看默认设置,您可以查看 apigee-monit 组件配置 文件。您无法更改默认组件配置。

apigee-monit 会检查组件的不同方面,具体取决于要检查的组件。通过 下表列出了 apigee-monit 会针对每个组件进行检查,并说明了相应组件的位置 每个组件都有各自的配置请注意,有些组件是在单个配置中定义的 其他文件都有自己的配置。

组件 配置位置 监控的内容
管理服务器 /opt/apigee/edge-management-server/monit/default.conf apigee-monit 检查: <ph type="x-smartling-placeholder">
    </ph>
  • 指定的端口处于开放状态,正在接受请求
  • 支持指定的协议
  • 响应的状态

此外,对于这些 apigee-monit 组件:

  • 需要在给定的周期内多次失败才能采取行动
  • 设置自定义请求路径
消息处理器 /opt/apigee/edge-message-processor/monit/default.conf
Postgres 服务器 /opt/apigee/edge-postgres-server/monit/default.conf
Qpid 服务器 /opt/apigee/edge-qpid-server/monit/default.conf
路由器 /opt/apigee/edge-router/monit/default.conf
Cassandra
Edge 界面
OpenLDAP
Postgres
Qpid
ZooKeeper
/opt/apigee/data/apigee-monit/monit.conf apigee-monit 检查: <ph type="x-smartling-placeholder">
    </ph>
  • 服务正在运行

以下示例展示了 edge-router 的默认组件配置 组件:

check host edge-router with address localhost
  restart program = "/opt/apigee/apigee-service/bin/apigee-service edge-router monitrestart"
  if failed host 10.1.1.0 port 8081 and protocol http
    and request "/v1/servers/self/uuid"
    with timeout 15 seconds
    for 2 times within 3 cycles
  then restart

  if failed port 15999 and protocol http
    and request "/v1/servers/self"
    and status < 600
    with timeout 15 seconds
    for 2 times within 3 cycles
  then restart

以下示例展示了经典版界面 (edge-ui) 的默认配置 组件:

check process edge-ui
 with pidfile /opt/apigee/var/run/edge-ui/edge-ui.pid
 start program = "/opt/apigee/apigee-service/bin/apigee-service edge-ui start" with timeout 55 seconds
 stop program = "/opt/apigee/apigee-service/bin/apigee-service edge-ui stop"

这适用于传统版界面,不适用于组件名称为 edge-management-ui

您无法更改任何适用于私有云的 Apigee Edge 组件的默认组件配置。您可以 不过,您可以为外部服务(例如您的目标端点)添加您自己的组件配置 或 httpd 服务。如需了解详情,请参阅 非 Apigee 组件配置

默认情况下,apigee-monit 会监控运行它的节点上的所有组件。您可以启用或 并为所有组件或单个组件停用此关联。如需了解详情,请参阅:

安装 apigee-monit

默认情况下,apigee-monit 未安装;你可以在升级或安装后手动安装 4.19.01 版或更高版本的 Apigee Edge for Private Cloud。

本部分介绍了如何安装 apigee-monit

如需了解如何卸载 apigee-monit,请参阅 卸载 apigee-monit

安装 apigee-monit

本部分介绍了如何安装 apigee-monit

如需安装 apigee-monit,请执行以下操作

  1. 使用以下命令安装 apigee-monit
    /opt/apigee/apigee-service/bin/apigee-service apigee-monit install
  2. 使用以下命令配置 apigee-monit
    /opt/apigee/apigee-service/bin/apigee-service apigee-monit configure
  3. 使用以下命令启动 apigee-monit
    /opt/apigee/apigee-service/bin/apigee-service apigee-monit start
  4. 在集群中的每个节点上重复此过程。

停止和启动监控组件

当服务因任何原因停止时,apigee-monit 会尝试重启该服务。

如果您想有意地停止组件,可能会导致问题。例如,您可以 在需要备份或升级组件时停止组件。 如果 apigee-monit 在备份或升级期间重启了服务,则维护过程可能如下: 并可能导致它失败

以下各部分介绍了用于停止监控组件的选项。

停止组件并取消监控

要停止并取消监控组件,请执行以下命令:

/opt/apigee/apigee-service/bin/apigee-service apigee-monit stop-component -c component_name
component_name 可以是以下项之一:
  • apigee-cassandra(卡桑德拉)
  • apigee-openldap(打开 LDAP)
  • apigee-postgresql(PostgreSQL 数据库)
  • apigee-qpidd(Qpidd)
  • apigee-sso(边缘单点登录)
  • apigee-zookeeper (ZooKeeper)
  • edge-management-server(管理服务器)
  • edge-management-ui(新版 Edge 界面)
  • edge-message-processor(消息处理器)
  • edge-postgres-server(Postgres 服务器)
  • edge-qpid-server (Qpid Server)
  • edge-router(边缘路由器)
  • edge-ui(传统版界面)

请注意,不是 stop-component 的有效选项。您可以停止和 使用 stop-component 一次仅取消监控一个组件。

要重新启动组件并恢复监控,请执行以下命令:

/opt/apigee/apigee-service/bin/apigee-service apigee-monit start-component -c component_name

请注意,不是 start-component 的有效选项。

有关如何停止和取消监控所有组件的说明,请参见 停止所有组件并取消监控

取消监控组件(但不停止监控)

如需取消监控(但不停止)组件,请执行以下命令:

/opt/apigee/apigee-service/bin/apigee-service apigee-monit unmonitor -c component_name
component_name 可以是以下项之一:
  • apigee-cassandra(卡桑德拉)
  • apigee-openldap(打开 LDAP)
  • apigee-postgresql(PostgreSQL 数据库)
  • apigee-qpidd(Qpidd)
  • apigee-sso(边缘单点登录)
  • apigee-zookeeper (ZooKeeper)
  • edge-management-server(管理服务器)
  • edge-management-ui(新版 Edge 界面)
  • edge-message-processor(消息处理器)
  • edge-postgres-server(Postgres 服务器)
  • edge-qpid-server (Qpid Server)
  • edge-router(边缘路由器)
  • edge-ui(传统版界面)

要继续监控该组件,请执行以下命令:

/opt/apigee/apigee-service/bin/apigee-service apigee-monit monitor -c component_name

取消监控所有组件(但不停止它们)

如需取消监控所有组件(但不停止它们),请执行以下命令:

/opt/apigee/apigee-service/bin/apigee-service apigee-monit unmonitor -c all

要继续监控所有组件,请执行以下命令:

/opt/apigee/apigee-service/bin/apigee-service apigee-monit monitor -c all

停止所有组件并取消监控它们

要停止所有组件并取消监控它们,请执行以下命令:

/opt/apigee/apigee-service/bin/apigee-service apigee-monit unmonitor -c all
/opt/apigee/apigee-service/bin/apigee-all stop

要重新启动所有组件并恢复监控,请执行以下命令:

/opt/apigee/apigee-service/bin/apigee-all start
/opt/apigee/apigee-service/bin/apigee-service apigee-monit monitor -c all

如需停止监控所有组件,您还可以停用 apigee-monit,如 停止、启动和停用 apigee-monit

停止、启动和停用 apigee-monit

与任何服务一样,您可以使用 apigee-service 来停止和启动 apigee-monit 命令。此外,apigee-monit 还支持 unmonitor 命令, 暂时停止监控组件。

停止 apigee-monit

如需停止 apigee-monit,请使用以下命令:

/opt/apigee/apigee-service/bin/apigee-service apigee-monit stop

启动 apigee-monit

如需启动 apigee-monit,请使用以下命令:

/opt/apigee/apigee-service/bin/apigee-service apigee-monit start

停用 apigee-monit

您可以使用以下命令暂停监控节点上的所有组件:

/opt/apigee/apigee-service/bin/apigee-service apigee-monit unmonitor -c all

或者,您可以从节点中卸载 apigee-monit,从而永久停用它,如下所述 在卸载 apigee-monit 中找到。

卸载 apigee-monit

如需卸载 apigee-monit,请执行以下操作

<ph type="x-smartling-placeholder">
    </ph> conf_monit_httpd_port httpd 守护程序的端口。apigee-monithttpd 用作其信息中心 应用,以及启用报告/摘要。默认值为 2812。 conf_monit_httpd_allow 对发送到 httpd 守护程序的请求的限制。apigee-monit 人使用 httpd 以运行其信息中心应用并启用报告/摘要。该值必须 指向 localhost(运行 httpd 的主机)。

    如需要求请求包含用户名和密码,请使用以下语法:

    conf_monit_httpd_allow=allow username:"password"\nallow 127.0.0.1

    添加用户名和密码时,请插入“\n”。错误做法 在值中插入实际的换行符或回车符。

    conf_monit_monit_datadir 用于存储活动详情的目录。 conf_monit_monit_delay_time apigee-monit 在首次加载到内存中之后等待的时间 。这仅影响 apigee-monit 第一次进程检查。 conf_monit_monit_logdir apigee-monit 日志文件的位置。 conf_monit_monit_retry_time apigee-monit 尝试检查每个进程的频率;默认值为 60 。 conf_monit_monit_rundir PID 和状态文件的位置,apigee-monit 将其用于检查进程。

    如需自定义默认的 apigee-monit 控件设置,请执行以下操作

    1. 修改以下文件:
      /opt/apigee/customer/application/monit.properties

      如果该文件不存在,请创建该文件并将所有者设置为“apigee”用户:

      chown apigee:apigee /opt/apigee/customer/application/monit.properties

      请注意,如果该文件已存在,则可能还定义了其他配置属性 范围之外的内容。除了 以上所列。

    2. 使用新值设置或替换属性值。

      例如,如需将日志文件的位置更改为 /tmp,请添加或修改 以下属性:

      conf_monit_monit_logdir=/tmp/apigee-monit.log

    3. 将所做的更改保存到 monit.properties 文件。
    4. 使用以下命令重新加载 apigee-monit
      /opt/apigee/apigee-service/bin/apigee-service apigee-monit reload

      如果 apigee-monit 未重启,请检查日志文件是否存在错误(如 访问 apigee-monit 日志文件

    5. 对集群中的每个节点重复此过程。

    请注意,这仅适用于非 Edge 组件。您无法自定义组件配置 适用于 Edge 组件。

    访问 apigee-monit 日志文件

    apigee-monit 会将所有活动(包括事件、重启、配置更改和提醒)记录到日志中 文件。

    日志文件的默认位置为:

    /opt/apigee/var/log/apigee-monit/apigee-monit.log

    您可以通过自定义 apigee-monit 控件来更改默认位置。 设置

    日志文件条目的格式如下:

    'edge-message-processor' trying to restart
    [UTC Dec 14 16:20:42] info     : 'edge-message-processor' trying to restart
    'edge-message-processor' restart: '/opt/apigee/apigee-service/bin/apigee-service edge-message-processor monitrestart'

    您无法自定义 apigee-monit 日志文件条目的格式。

    使用 apigee-monit 查看汇总状态

    apigee-monit 包含以下命令,可为您提供有关 组件:

    命令 用法
    report
    /opt/apigee/apigee-service/bin/apigee-service apigee-monit report
    summary
    /opt/apigee/apigee-service/bin/apigee-service apigee-monit summary

    以下各部分更详细地介绍了这些命令。

    报告

    report 命令可为您提供已启用的组件数量的汇总摘要。 节点上发生故障、当前正在初始化或当前不受监控。通过 以下示例会调用 report 命令:

    /opt/apigee/apigee-service/bin/apigee-service apigee-monit report

    以下示例展示了 AIO(一体式)上的 report 输出 配置:

    /opt/apigee/apigee-service/bin/apigee-service apigee-monit report
    up:            11 (100.0%)
    down:           0 (0.0%)
    initialising:   0 (0.0%)
    unmonitored:    1 (8.3%)
    total:         12 services

    在此示例中,apigee-monit 将 12 项服务中的 11 项报告为运行中。一项服务 目前正在监控中。

    首次执行代码时,您可能会收到 Connection refused 错误, report 命令。在本示例中,等待 conf_monit_monit_delay_time 属性,然后重试。

    摘要

    summary 命令会列出每个组件并提供其状态。以下 示例调用 summary 命令:

    /opt/apigee/apigee-service/bin/apigee-service apigee-monit summary

    以下示例展示了 AIO(一体式)上的 summary 输出 配置:

    /opt/apigee/apigee-service/bin/apigee-service apigee-monit summary
    Monit 5.25.1 uptime: 4h 20m
     Service Name                     Status                      Type
     host_name                        OK                          System
     apigee-zookeeper                 OK                          Process
     apigee-cassandra                 OK                          Process
     apigee-openldap                  OK                          Process
     apigee-qpidd                     OK                          Process
     apigee-postgresql                OK                          Process
     edge-ui                          OK                          Process
     edge-qpid-server                 OK                          Remote Host
     edge-postgres-server             OK                          Remote Host
     edge-management-server           OK                          Remote Host
     edge-router                      OK                          Remote Host
     edge-message-processor           OK                          Remote Host

    如果您在首次执行 Connection refused summary命令,请尝试等待 conf_monit_monit_delay_time 属性,然后重试。

    监控 apigee-monit

    最佳做法是定期检查每个节点上是否运行着 apigee-monit

    如需检查 apigee-monit 是否正在运行,请使用以下命令:

    /opt/apigee/apigee-service/bin/apigee-service apigee-monit monitor_monit

    Apigee 建议您在运行 apigee-monit 的每个节点上定期发出此命令。 实现此目的的方法之一是使用 cron 等实用程序,该实用程序在 预定义的时间间隔。

    如需使用 cron 监控 apigee-monit,请执行以下操作

    1. 通过复制 apigee-monit.cron 添加 cron 支持 切换到 /etc/cron.d 目录,如以下示例所示:
      cp /opt/apigee/apigee-monit/cron/apigee-monit.cron /etc/cron.d/
    2. 打开 apigee-monit.cron 文件以进行修改。

      apigee-monit.cron 文件定义要执行的 cron 作业 以及执行该作业的频率。以下示例显示了默认的 值:

      # Cron entry to check if monit process is running. If not start it
      */2 * * * * root /opt/apigee/apigee-service/bin/apigee-service apigee-monit monitor_monit

      此文件使用以下语法,其中前五个字段定义了 apigee-monit 执行操作:

      min hour day_of_month month day_of_week task_to_execute

      例如,默认执行时间为 */2 * * * *,指示 cron,每 2 分钟检查一次 apigee-monit 进程。

      执行 cron 作业的频率不能超过每分钟一次。

      如需详细了解如何使用 cron,请参阅您服务器操作系统的文档或手册 页面。

    3. 请更改cron设置,使其符合贵组织的政策。例如, 将执行频率更改为每 5 分钟一次,将作业定义设置为以下内容:
      */5 * * * * root /opt/apigee/apigee-service/bin/apigee-service apigee-monit monitor_monit
    4. 保存 apigee-monit.cron 文件。
    5. 对集群中的每个节点重复此过程。

    如果 cron 未开始监控 apigee-monit,请检查并确保:

    • cron 作业定义后面有一个空白行。
    • 该文件中仅定义了一个 cron 作业。(注释行 count.)

    如果您想停止或暂时停用“apigee-monit”,则必须停用此“cron”作业。 否则 cron 会重启 apigee-monit

    如需停用 cron,请执行以下操作之一

    • 删除 /etc/cron.d/apigee-monit.cron 文件:
      sudo rm /etc/cron.d/apigee-monit.cron

      如果出现以下情况,则必须重新复制 以后想重新启用cron来观看apigee-monit

      OR

    • 修改 /etc/cron.d/apigee-monit.cron 文件并注释掉该作业 定义“#”到行首;例如:
      # 10 * * * * root /opt/apigee/apigee-service/bin/apigee-service apigee-monit monitor_monit