zookeeper 서버에서 leader인지 follower인지를 다음처럼 간단히 확인할 수 있다. 


$ echo srvr | nc localhost 2181


그러면 Mode로 쉽게 파악할 수 있다. 



$ echo srvr | nc localhost 2181

Zookeeper version: 3.3.3-1203054, built on 11/17/2011 05:47 GMT

Latency min/avg/max: 0/0/82

Received: 70940852

Sent: 71197941

Outstanding: 1

Zxid: 0x2000016bf

Mode: follower

Node count: 4325



$ echo srvr | nc localhost 2181 | grep Mode

Mode: leader





실제 요청(request)이 들어오고 있는지 확인하려면 다음과 같이 진행하다. 


$ echo stat | nc localhost 2181

Zookeeper version: 3.3.3-1203054, built on 11/17/2011 05:47 GMT

Clients:

...


Latency min/avg/max: 0/0/16

Received: 4288

Sent: 4288

Outstanding: 0

Zxid: 0x1007f3e40

Mode: follower

Node count: 4317



stat 또는 srvr 정보는 다음과 같다. 



지표

내용

Latency min/avg/max

클라이언트 요청을 처리하는데 소요되는 전체 지연 시간(latency)

지연시간이 길어질수록 좋지 않다.

Outstanding

서버에서 큐잉되고 있는 요청 개수. 점점 요청 개수가 많아질 수록 개수는 늘어난다. 1,2까지는 괜찮은 것 같다. 하지만 그 이상이 되면 확인해볼 필요가 있다.

Received

지금까지 받은 클라이언트 요청 개수

Sent

지금까지 보낸 클라이언트 패킷 수(응답과 상태 알림)

Mode

노드의 상태
leader 또는 follow, standalone

Zxid

노드의 id

Node Count

주키퍼 네임스페이스의 znode 개수





참고로 나는 클러스터의 zookeeper 정보의 node count를 통해서 동기 상태를 파악한다.





정상적으로 동작하는지 확인하려면 ruok를 실행한다. imok이 들어오면 괜찮다.


$ echo ruok | nc 127.0.0.1 2181

imok




클러스터 정보를 보고 싶으면, jmx로 연결해서 확인한다.  org.apache.ZookeeperService에서 ReplicatedServer mbean을 확인한다. 





환경 정보(java, zookeeper classpath 등등)는 envi 커맨드를 사용한다. 


$ echo envi | nc 127.0.0.1 2181



dump 커맨드를 사용하면 zookeeper의 모든 노드 정보를 출력한다. 노드의 값은 나오지 않는다. 


$ echo dump | nc 127.0.0.1 2181


SessionTracker dump:

org.apache.zookeeper.server.quorum.LearnerSessionTracker@63f69aa9

ephemeral nodes dump:

Sessions with Ephemerals (225):


0x54f9dca900afb7f:

/google/plus/real/monitor/n_0000000040

.....




zookeeper의 어드민은 현재 장비를 기준으로 되어 있지, 전체적으로 모니터링이 조금 어렵다. 

zktop.py 소스를 다운받아 통합 모니터링이 가능하다. 


$ wget https://raw.githubusercontent.com/phunt/zktop/master/zktop.py

$ chmod 755 zktop.py

$ ./zktop.py --server "a.google.com:2181,b.google.com:2181,c.google.com:2181"






Posted by 김용환 '김용환'