第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

ZooKeeper 的監(jiān)控

1. 前言

在我們的分布式環(huán)境中,我們可以使用 Zookeeper 來管理眾多的服務,對它們的運行狀態(tài)進行監(jiān)控和管理,這樣的話,確保 Zookeeper 的正常運行也是我們需要關注的事情。那么我們?nèi)绾螌?Zookeeper 的運行狀態(tài)進行監(jiān)控呢?在本節(jié)的內(nèi)容中,我們就來介紹 Zookeeper 的監(jiān)控工具和四字監(jiān)控命令。

2. 使用 JConsole 監(jiān)控 Zookeeper

JConsole 是 JDK 自帶的 Java 進程監(jiān)控工具,Zookeeper 是基于 Java 的應用程序,也支持 JMX( Java Management Extensions ),所以我們可以通過 JConsole 來對 Zookeeper 的運行狀態(tài)進行監(jiān)控。

在使用 JConsole 開啟監(jiān)控之前,我們需要修改 Zookeeper 關于 JMX 的配置。如果是 Windows 平臺的需要修改啟動文件 zkServer.cmd,如果是 Linux 平臺則需要修改啟動文件 zkServer.sh。

  • Windows 平臺修改 zkServer.cmd

call %JAVA% 這一行中加入以下配置:

# 對 jmx 開放的端口,要注意避免和其它端口沖突
"-Dcom.sun.management.jmxremote.port=21810"
# 關閉 ssl
"-Dcom.sun.management.jmxremote.ssl=false"
# 關閉身份驗證
"-Dcom.sun.management.jmxremote.authenticate=false"

zkServer.cmd 完整的配置如下:

@echo off
REM Licensed to the Apache Software Foundation (ASF) under one or more
REM contributor license agreements.  See the NOTICE file distributed with
REM this work for additional information regarding copyright ownership.
REM The ASF licenses this file to You under the Apache License, Version 2.0
REM (the "License"); you may not use this file except in compliance with
REM the License.  You may obtain a copy of the License at
REM
REM     http://www.apache.org/licenses/LICENSE-2.0
REM
REM Unless required by applicable law or agreed to in writing, software
REM distributed under the License is distributed on an "AS IS" BASIS,
REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
REM See the License for the specific language governing permissions and
REM limitations under the License.

setlocal
call "%~dp0zkEnv.cmd"

set ZOOMAIN=org.apache.zookeeper.server.quorum.QuorumPeerMain
set ZOO_LOG_FILE=zookeeper-%USERNAME%-server-%COMPUTERNAME%.log

echo on
call %JAVA% "-Dcom.sun.management.jmxremote.port=21810" "-Dcom.sun.management.jmxremote.ssl=false" "-Dcom.sun.management.jmxremote.authenticate=false" "-Dzookeeper.log.dir=%ZOO_LOG_DIR%" "-Dzookeeper.root.logger=%ZOO_LOG4J_PROP%" "-Dzookeeper.log.file=%ZOO_LOG_FILE%" "-XX:+HeapDumpOnOutOfMemoryError" "-XX:OnOutOfMemoryError=cmd /c taskkill /pid %%%%p /t /f" -cp "%CLASSPATH%" %ZOOMAIN% "%ZOOCFG%" %*


endlocal
  

在第一個 ZOOMAIN 中添加以下配置:

# 關閉僅本地連接
-Dcom.sun.management.jmxremote.local.only=false
# zookeeper地址
-Djava.rmi.server.hostname=127.0.0.1  
# 對 jmx 開放的端口,要注意避免和其它端口沖突
-Dcom.sun.management.jmxremote.port=21810 
# 關閉 ssl
-Dcom.sun.management.jmxremote.ssl=false  
# 關閉身份驗證
-Dcom.sun.management.jmxremote.authenticate=false  
# 開啟日志
-Dzookeeper.jmx.log4j.disable=true

添加完畢后第一個 ZOOMAIN 配置如下:

ZOOMAIN="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false -Djava.rmi.server.hostname=127.0.0.1  -Dcom.sun.management.jmxremote.port=21810 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dzookeeper.jmx.log4j.disable=true org.apache.zookeeper.server.quorum.QuorumPeerMain"

配置完啟動文件,我們就可以重啟 Zookeeper 服務端,打開 JConsole 界面,輸入 Zookeeper 地址和開放的 JMX 端口,然后就能監(jiān)控 Zookeeper 的 Java 進程了。

圖片描述

除了使用 JConsole 來監(jiān)控 Zookeeper 進程的運行狀態(tài)之外,我們還可以使用 Zookeeper 提供的四字監(jiān)控命令來查看Zookeeper 進程的運行狀態(tài),那么接下來我們就來學習 Zookeeper 的四字監(jiān)控命令。

3. Zookeeper 的四字監(jiān)控命令

Zookeeper 的四字監(jiān)控命令,每個命令都由 4 個字母組成,我們可以通過 telnet 或者 nc(netcat)向 Zookeeper 服務端發(fā)送命令,來獲取 Zookeeper 的運行狀態(tài)及相關信息。

  • netcat 安裝

這里我們使用 netcat 進行演示,首先我們需要安裝 netcat,使用 apt-get install 命令來安裝 nc:

# 安裝 netcat
sudo apt-get -y install netcat-traditional 
# 更新 nc 命令,使用 netcat-traditional 的 nc 命令
sudo update-alternatives --config nc 

nc 安裝完畢,接下來我們就可以使用 nc 來向 Zookeeper 服務端發(fā)送命令了。

  • 發(fā)送四字命令

首先我們來查看 Zookeeper 服務端的運行狀態(tài):

# 使用 nc 向 zookeeper 的地址和端口發(fā)送 stat 命令
echo stat | nc 127.0.0.1 2181 
# 輸出 zookeeper 狀態(tài)
# Zookeeper 版本信息,構建時間
Zookeeper version: 3.6.1--104dcb3e3fb464b30c5186d229e00af9f332524b, built on 04/21/2020 15:01 GMT
Clients:
 /127.0.0.1:44226[0](queued=0,recved=1,sent=0)
# 延時信息
Latency min/avg/max: 0/0.0/0
# 收包
Received: 3
# 發(fā)包
Sent: 2
# 當前服務連接數(shù)
Connections: 1
# 堆積的未處理的請求數(shù)
Outstanding: 0
# 最大事務ID
Zxid: 0x2
# 啟動模式
Mode: standalone
# 節(jié)點數(shù)
Node count: 5

如果在發(fā)送命令時出現(xiàn)下面的情況:

stat is not executed because it is not in the whitelist.

說明我們的服務端未開啟四字命令,需要我們在啟動文件 zkServcie.sh 添加四字命令的支持。

zkService.sh 文件中大約 77 行處添加 :

ZOOMAIN="-Dzookeeper.4lw.commands.whitelist=* ${ZOOMAIN}"

圖片描述

添加完畢后,使用 zkServcie.sh restart 命令重啟 Zookeeper 服務端,再使用四字命令進行監(jiān)控。

接下來我們對 Zookeeper 的四字命令的含義,以及返回的信息進行介紹。

3.1 四字命令介紹

這里我們列出常用的四字命令進行介紹:

  • conf: 查詢 Zookeeper 服務的配置信息。
# 對客戶端開放的端口,默認 2181
clientPort=2181
# 安全的客戶端的端口
secureClientPort=-1
# 數(shù)據(jù)文件目錄
dataDir=/usr/local/zookeeper/apache-zookeeper-3.6.1-bin/data/version-2
# 數(shù)據(jù)文件大小
dataDirSize=67108880
# 日志文件目錄
dataLogDir=/usr/local/zookeeper/apache-zookeeper-3.6.1-bin/data/log/version-2
# 日志文件大小
dataLogSize=914
# 心跳檢測間隔毫秒
tickTime=2000
# 最大客戶端連接數(shù)
maxClientCnxns=60
# 最小的會話超時時間
minSessionTimeout=4000
# 最大的會話超時時間
maxSessionTimeout=40000
# 客戶端端口列表備份日志
clientPortListenBacklog=-1
# 服務id
serverId=0
  • cons: 列出連接到 Zookeeper 服務的所有客戶端的完整連接和會話詳細信息。包括接收和發(fā)送的數(shù)據(jù)包數(shù)量、會話id、操作延遲、最后執(zhí)行的操作等信息。
/127.0.0.1:44244[0](queued=0,recved=1,sent=0)
  • crst: 重置服務端的連接和會話統(tǒng)計信息。
Connection stats reset.
  • dump: 適用于 Leader 節(jié)點,列出未完成的請求和臨時節(jié)點。

  • envi: 列出服務器的環(huán)境信息。

Environment:
zookeeper.version=3.6.1--104dcb3e3fb464b30c5186d229e00af9f332524b, built on 04/21/2020 15:01 GMT
host.name=fbbc740a6217
java.version=1.8.0_261
java.vendor=Oracle Corporation
java.home=/usr/local/java/jdk1.8.0_261/jre
java.class.path=/usr/local/java/jdk1.8.0_261/jre/lib
java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
java.io.tmpdir=/tmp
java.compiler=<NA>
os.name=Linux
os.arch=amd64
os.version=4.19.128-microsoft-standard
user.name=root
user.home=/root
user.dir=/usr/local/zookeeper/apache-zookeeper-3.6.1-bin
os.memory.free=142MB
os.memory.max=889MB
os.memory.total=192MB
  • ruok: 測試服務是否處于正確運行狀態(tài),如果正常返回 imok,否則返回空。

  • srst: 重置服務的統(tǒng)計信息。

  • srvr: 列出服務的詳細信息。

Zookeeper version: 3.6.1--104dcb3e3fb464b30c5186d229e00af9f332524b, built on 04/21/2020 15:01 GMT
Latency min/avg/max: 0/0.0/0
Received: 9
Sent: 8
Connections: 1
Outstanding: 0
Zxid: 0x2
Mode: standalone
Node count: 5
  • wchs: 列出服務的 Watcher 的簡要信息。

  • wchc: 按會話列出服務的 Watcher 的詳細信息。

  • wchp: 按路徑列出服務帶有 znode 列表的 Watcher 的詳細信息。如果 Watcher 的數(shù)量多,會影響服務器性能,請謹慎使用。

  • dirs: 以字節(jié)為單位顯示快照和日志文件的總大小。

    datadir_size: 67108880
    logdir_size: 914
    

4. 總結

在本節(jié)內(nèi)容中,我們學習了如何使用 JConsole 來監(jiān)控 Zookeeper 的 Java 進程,還學習了使用 Zookeeper 的四字監(jiān)控命令來監(jiān)控 Zookeeper 的運行狀態(tài)。以下是本節(jié)內(nèi)容總結:

  1. JConsole 監(jiān)控 Zookeeper。
  2. 四字命令監(jiān)控 Zookeeper。