
- Hazelcast 教程
- Hazelcast - 首頁
- Hazelcast - 簡介
- Hazelcast - 設定
- Hazelcast - 第一個應用程式
- Hazelcast - 配置
- 設定多節點例項
- Hazelcast - 資料結構
- Hazelcast - 客戶端
- Hazelcast - 序列化
- Hazelcast 高階特性
- Hazelcast - Spring 整合
- Hazelcast - 監控
- Map Reduce & 聚合
- Hazelcast - 集合監聽器
- 常見問題及效能技巧
- Hazelcast 有用資源
- Hazelcast - 快速指南
- Hazelcast - 有用資源
- 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 來了解叢集的健康狀況:
https://:5701/hazelcast/health
上述 API 呼叫的輸出:
Hazelcast::NodeState=ACTIVE Hazelcast::ClusterState=ACTIVE Hazelcast::ClusterSafe=TRUE Hazelcast::MigrationQueueSize=0 Hazelcast::ClusterSize=1
這顯示我們的叢集中有一個成員,並且它是活動的。
可以使用以下命令查詢有關節點的更詳細資訊,例如 IP、埠、名稱:
https://: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 還支援對其內嵌資料結構(例如 IMap、IQueue 等)的 JMX 監控。
要啟用 JMX 監控,我們首先需要啟用基於 JVM 的 JMX 代理。這可以透過向 JVM 傳遞 "-Dcom.sun.management.jmxremote" 來完成。要使用不同的埠或使用身份驗證,我們可以分別使用 -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 客戶端(如 jConsole、VisualVM 等)連線 JMX 埠。
這是使用 jConsole 連線並檢視 VehicleMap 屬性時將獲得的快照。我們可以看到,對映的名稱為 vehicleOwnerMap,對映的大小為 1。
