Hazelcast – 监控

Hazelcast – 监控


Hazelcast 提供了多种方式来监控集群。我们将研究如何通过 REST API 和 JMX 进行监控。让我们首先看看 REST API。

通过 REST API 监控 Hazelcast

要通过 REST API 监控集群或成员状态的健康状况,必须启用基于 REST API 的与成员的通信。这可以通过配置来完成,也可以通过编程来完成。

让我们通过 hazelcast-monitoring.xml 中的 XML 配置启用基于 REST 的监控 –

<hazelcast
   xsi:schemaLocation="http://www.hazelcast.com/schema/config
   http://www.hazelcast.com/schema/config/hazelcast-config-3.12.12.xsd"
   xmlns="http://www.hazelcast.com/schema/config"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <instance-name>XML_Hazelcast_Instance</instance-name>

   <network>
      <rest-api enabled="true">
         <endpoint-group name="CLUSTER_READ" enabled="true" />
         <endpoint-group name="HEALTH_CHECK" enabled="true" />
      </rest-api>
   </network>
</hazelcast>

让我们创建一个在 Server.java 文件中无限期运行的 Hazelcast 实例 –

public class Server {
   public static void main(String... args){
      //initialize hazelcast server/instance
      HazelcastInstance hazelcast = Hazelcast.newHazelcastInstance();
      // do not shutdown, let the server run
      //hazelcast.shutdown();
   }
}

现在让我们执行启动集群 –

java '-Dhazelcast.config=hazelcast-monitoring.xml' -cp .\target\demo-0.0.1-
SNAPSHOT.jar com.example.demo.Server

启动后,可以通过调用 API 来了解集群的健康状况 –

http://localhost:5701/hazelcast/health

上述 API 调用输出

Hazelcast::NodeState=ACTIVE
Hazelcast::ClusterState=ACTIVE
Hazelcast::ClusterSafe=TRUE
Hazelcast::MigrationQueueSize=0
Hazelcast::ClusterSize=1

这显示我们的集群中有 1 个成员并且它处于活动状态。

可以使用以下方法找到有关节点的更多详细信息,例如 IP、端口、名称:

http://localhost:5701/hazelcast/rest/cluster

上述 API 的输出 –

Members {size:1, ver:1} [
   Member [localhost]:5701 - e6afefcb-6b7c-48b3-9ccb-63b4f147d79d this
]
ConnectionCount: 1
AllConnectionCount: 2

JMX 监控

Hazelcast 还支持 JMX 监控其内部嵌入的数据结构,例如 IMap、Iqueue 等。

要启用 JMX 监控,我们首先需要启用基于 JVM 的 JMX 代理。这可以通过将“-Dcom.sun.management.jmxremote”传递给 JVM 来完成。对于使用不同的端口或使用身份验证,我们可以分别使用-Dcom.sun.management.jmxremote.port、-Dcom.sun.management.jmxremote.authenticate。

除此之外,我们必须为 Hazelcast MBeans 启用 JMX。让我们通过 hazelcast-monitoring.xml 中的 XML 配置启用基于 JMX 的监控 –

<hazelcast
   xsi:schemaLocation="http://www.hazelcast.com/schema/config
   http://www.hazelcast.com/schema/config/hazelcast-config-3.12.12.xsd"
   xmlns="http://www.hazelcast.com/schema/config"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <instance-name>XML_Hazelcast_Instance</instance-name>

   <properties>
      <property name="hazelcast.jmx">true</property>
   </properties>
</hazelcast>

让我们创建一个在 Server.java 文件中无限期运行的 Hazelcast 实例并添加一个地图 –

class Server {
   public static void main(String... args){
      //initialize hazelcast server/instance
      HazelcastInstance hazelcast = Hazelcast.newHazelcastInstance();
      //create a simple map
      Map<String, String> vehicleOwners = hazelcast.getMap("vehicleOwnerMap");
      // add key-value to map
      vehicleOwners.put("John", "Honda-9235");
      // do not shutdown, let the server run
      //hazelcast.shutdown();
   }
}

现在我们可以执行以下命令来启用 JMX –

java '-Dcom.sun.management.jmxremote' '-Dhazelcast.config=others\hazelcastmonitoring.
xml' -cp .\target\demo-0.0.1-SNAPSHOT.jar com.example.demo.Server

JMX 端口现在可以通过 JMX 客户端(如 jConsole、VisualVM 等)连接。

如果我们使用 jConsole 连接并查看 VehicleMap 的属性,这里是我们将获得的快照。如我们所见,地图名称为 VehicleOwnerMap,地图大小为 1。

JMX 客户端

觉得文章有用?

点个广告表达一下你的爱意吧 !😁