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

ZooKeeper 的監(jiān)控

1. 前言

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

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

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

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

  • Windows 平臺(tái)修改 zkServer.cmd

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

# 對(duì) jmx 開(kāi)放的端口,要注意避免和其它端口沖突
"-Dcom.sun.management.jmxremote.port=21810"
# 關(guān)閉 ssl
"-Dcom.sun.management.jmxremote.ssl=false"
# 關(guān)閉身份驗(yàn)證
"-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
  

在第一個(gè) ZOOMAIN 中添加以下配置:

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

添加完畢后第一個(gè) 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"

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

圖片描述

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

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

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

  • netcat 安裝

這里我們使用 netcat 進(jìn)行演示,首先我們需要安裝 netcat,使用 apt-get install 命令來(lái)安裝 nc:

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

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

  • 發(fā)送四字命令

首先我們來(lái)查看 Zookeeper 服務(wù)端的運(yùn)行狀態(tài):

# 使用 nc 向 zookeeper 的地址和端口發(fā)送 stat 命令
echo stat | nc 127.0.0.1 2181 
# 輸出 zookeeper 狀態(tài)
# Zookeeper 版本信息,構(gòu)建時(shí)間
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)
# 延時(shí)信息
Latency min/avg/max: 0/0.0/0
# 收包
Received: 3
# 發(fā)包
Sent: 2
# 當(dāng)前服務(wù)連接數(shù)
Connections: 1
# 堆積的未處理的請(qǐng)求數(shù)
Outstanding: 0
# 最大事務(wù)ID
Zxid: 0x2
# 啟動(dòng)模式
Mode: standalone
# 節(jié)點(diǎn)數(shù)
Node count: 5

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

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

說(shuō)明我們的服務(wù)端未開(kāi)啟四字命令,需要我們?cè)趩?dòng)文件 zkServcie.sh 添加四字命令的支持。

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

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

圖片描述

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

接下來(lái)我們對(duì) Zookeeper 的四字命令的含義,以及返回的信息進(jìn)行介紹。

3.1 四字命令介紹

這里我們列出常用的四字命令進(jìn)行介紹:

  • conf: 查詢 Zookeeper 服務(wù)的配置信息。
# 對(duì)客戶端開(kāi)放的端口,默認(rèn) 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
# 心跳檢測(cè)間隔毫秒
tickTime=2000
# 最大客戶端連接數(shù)
maxClientCnxns=60
# 最小的會(huì)話超時(shí)時(shí)間
minSessionTimeout=4000
# 最大的會(huì)話超時(shí)時(shí)間
maxSessionTimeout=40000
# 客戶端端口列表備份日志
clientPortListenBacklog=-1
# 服務(wù)id
serverId=0
  • cons: 列出連接到 Zookeeper 服務(wù)的所有客戶端的完整連接和會(huì)話詳細(xì)信息。包括接收和發(fā)送的數(shù)據(jù)包數(shù)量、會(huì)話id、操作延遲、最后執(zhí)行的操作等信息。
/127.0.0.1:44244[0](queued=0,recved=1,sent=0)
  • crst: 重置服務(wù)端的連接和會(huì)話統(tǒng)計(jì)信息。
Connection stats reset.
  • dump: 適用于 Leader 節(jié)點(diǎn),列出未完成的請(qǐng)求和臨時(shí)節(jié)點(diǎn)。

  • envi: 列出服務(wù)器的環(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: 測(cè)試服務(wù)是否處于正確運(yùn)行狀態(tài),如果正常返回 imok,否則返回空。

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

  • srvr: 列出服務(wù)的詳細(xì)信息。

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: 列出服務(wù)的 Watcher 的簡(jiǎn)要信息。

  • wchc: 按會(huì)話列出服務(wù)的 Watcher 的詳細(xì)信息。

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

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

    datadir_size: 67108880
    logdir_size: 914
    

4. 總結(jié)

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

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