一般来说,在生产设置中,您应在 Apigee Edge for Private Cloud 部署中启用监控机制。这些监控技术会向网络管理员(或运维人员)发出错误或故障警告。生成的每个错误都会在 Apigee Edge 中报告为提醒。如需详细了解提醒,请参阅监控最佳实践。
Apigee 组件主要分为两类:
- 特定于 Apigee 的 Java 服务器服务:包括管理服务器、消息处理器、Qpid 服务器和 Postgres 服务器。
- 第三方服务:包括 Nginx 路由器、Apache Cassandra、Apache ZooKeeper、SymasLDAP、PostgreSQL 数据库和 Qpid。
在 Apigee Edge 的本地部署中,下表简要介绍了您可以监控的参数:
组件 | 系统检查 | 进程级统计数据 | API 级别检查 | 消息流检查 | 特定于组件 | |
---|---|---|---|---|---|---|
特定于 Apigee 的 Java 服务 |
管理服务器 |
|||||
消息处理器 |
||||||
Qpid 服务器 |
||||||
Postgres 服务器 |
||||||
第三方服务 |
Apache Cassandra |
|||||
Apache ZooKeeper |
||||||
SymasLDAP |
||||||
PostgreSQL 数据库 |
||||||
Qpid |
||||||
Nginx 路由器 |
一般来说,安装 Apigee Edge 后,您可以执行以下监控任务来跟踪 Apigee Edge for Private Cloud 安装的性能。
系统健康检查
从更高层面衡量 CPU 利用率、内存利用率和端口连接性等系统健康状况参数非常重要。您可以监控以下参数,了解系统健康状况的基本信息。
- CPU 利用率:指定有关 CPU 利用率的基本统计信息(用户/系统/IO 等待/空闲)。例如,系统使用的 CPU 总量。
- 可用/已用内存:以字节为单位指定系统内存利用率。 例如,系统使用的物理内存。
- 磁盘空间使用情况:根据当前磁盘使用情况指定文件系统信息。例如,系统使用的硬盘空间。
- 平均负载:指定等待运行的进程数。
- 网络统计信息:传输和接收的网络数据包和/或字节,以及指定组件的传输错误。
流程/应用检查
在进程级别,您可以查看有关所有正在运行的进程的重要信息。例如,这些指标包括进程或应用使用的内存和 CPU 用量统计信息。对于 Qpid、Postgres Postmaster、Java 等进程,您可以监控以下内容:
- 进程标识:标识特定的 Apigee 进程。例如,您可以监控是否存在 Apigee 服务器 Java 进程。
- 线程统计信息:查看进程使用的底层线程模式。例如,您可以监控峰值线程数、所有进程的线程数。
- 内存利用率:查看所有 Apigee 进程的内存用量。 例如,您可以监控进程使用的堆内存用量、非堆内存用量等参数。
API 级别检查
在 API 级别,您可以监控服务器是否正在运行,以了解 Apigee 代理的常用 API 调用。例如,您可以调用以下 curl
命令,对管理服务器、路由器和消息处理器执行 API 检查:
curl http://host:port/v1/servers/self/up
其中,host 是 Apigee Edge 组件的 IP 地址。port 编号是每个 Edge 组件特有的。例如:
管理服务器:8080
- 路由器:8081
- 消息处理器:8082
- 等等
如需了解如何针对每个组件运行此命令,请参阅下文中的各个部分
此调用会返回“true”和“false”。为获得最佳效果,您还可以直接在后端(Apigee 软件与之交互)上发出 API 调用,以便快速确定错误是存在于 Apigee 软件环境中还是后端。
消息流检查
您可以从路由器和消息处理器收集有关消息流模式/统计信息的数据。这样一来,您将能够监控以下内容:
- 有效客户数量
- 响应数量(10 倍、20 倍、30 倍、40 倍和 50 倍)
- 连接失败
这有助于您为 API 消息流提供信息中心。如需了解详情,请参阅如何监控。
消息处理器的路由器健康检查
路由器实现了一种健康检查机制,用于确定哪些消息处理器正在按预期运行。如果检测到消息处理器处于关闭状态或运行缓慢,路由器可以自动将该消息处理器从轮换中移除。如果发生这种情况,路由器会将“标记为不可用”消息写入 /opt/apigee/var/log/edge-router/logs/system.log
的路由器日志文件。
您可以监控路由器日志文件,以查看这些消息。例如,如果路由器将消息处理器从轮换中移除,则会以以下格式将消息写入日志:
2014-05-06 15:51:52,159 org: env: RPCClientClientProtocolChildGroup-RPC-0 INFO CLUSTER - ServerState.setState() : State of 2a8a0e0c-3619-416f-b037-8a42e7ad4577 is now DISCONNECTED. handle = MP_IP at 1399409512159 2014-04-17 12:54:48,512 org: env: nioEventLoopGroup-2-2 INFO HEARTBEAT - HBTracker.gotResponse() : No HeartBeat detected from /MP_IP:PORT Mark Down
其中,MP_IP:PORT 是消息处理器的 IP 地址和端口号。
如果路由器稍后执行健康检查并确定消息处理器运行正常,则路由器会自动将消息处理器重新纳入轮替中。路由器还会将“标记”消息写入日志,格式如下:
2014-05-06 16:07:29,054 org: env: RPCClientClientProtocolChildGroup-RPC-0 INFO CLUSTER - ServerState.setState() : State of 2a8a0e0c-3619-416f-b037-8a42e7ad4577 is now CONNECTED. handle = IP at 1399410449054 2014-04-17 12:55:06,064 org: env: nioEventLoopGroup-4-1 INFO HEARTBEAT - HBTracker.updateHB() : HeartBeat detected from IP:PORT Mark Up