温馨提示×

linux zookeeper怎样排错日志

小樊
47
2026-10-28 07:33:51
栏目: 智能运维

在 Linux 上排查 ZooKeeper 问题,核心就是看日志 + 看状态 + 看配置。下面按“从快到慢、从常见到深入”给你一套实用排错思路。


一、ZooKeeper 日志在哪里

1️⃣ 日志目录(最常见)

一般在:

$ZOOKEEPER_HOME/logs

常见文件:

  • zookeeper.out —— 最常用(启动 & 运行错误)
  • zookeeper-<user>-server-<host>.log
  • zookeeper-<user>-server-<host>.out

如果你用 systemd:

journalctl -u zookeeper -f

2️⃣ 配置文件里的日志设置

查看 zoo.cfg:

cat $ZOOKEEPER_HOME/conf/zoo.cfg

重点关注:

dataDir=/var/lib/zookeeper
dataLogDir=/var/lib/zookeeper/log
  • dataDir:快照
  • dataLogDir:事务日志(性能 & 一致性问题重点看)

二、最常见的排错步骤(实战)

✅ 1. 先看 ZooKeeper 是否真的在跑

ps -ef | grep zookeeper

或

ss -lntp | grep 2181

✅ 2. 看启动报错(90% 问题在这)

tail -n 200 $ZOOKEEPER_HOME/logs/zookeeper.out

常见错误:

  • 端口被占用
    Address already in use
    
  • myid 不对
    My id 2 not in the peer list
    
  • 集群配置错误
    Cannot open channel to X at election address
    

✅ 3. 四字命令看状态(非常重要)

echo stat | nc localhost 2181

或

echo ruok | nc localhost 2181

返回:

  • imok → 正常
  • 无返回 → 服务挂了或端口不对

其他常用:

echo conf | nc localhost 2181
echo mntr | nc localhost 2181

三、集群排错重点(ZooKeeper 最坑的地方)

✅ 1. myid 必须一致

每个节点:

cat /var/lib/zookeeper/myid

必须和 zoo.cfg 里对应:

server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888

✅ 2. 集群无法选主

日志特征:

LOOKING
Cannot open channel to 2

排查:

  • 防火墙
iptables -L
  • 端口连通性
telnet node2 2888

四、日志级别调高(排不出问题时用)

修改:

$ZOOKEEPER_HOME/conf/log4j.properties

例如:

zookeeper.root.logger=DEBUG,CONSOLE

重启 ZooKeeper。


五、典型问题速查表

现象 可能原因
启动就退出 myid / 配置错误
一直 LOOKING 集群节点不通
客户端连不上 防火墙 / 端口
性能差 dataLogDir 在 HDD
数据不一致 强制杀进程

六、最小排错命令合集(复制即用)

ps -ef | grep zookeeper
tail -n 200 $ZOOKEEPER_HOME/logs/zookeeper.out
echo ruok | nc localhost 2181
echo stat | nc localhost 2181
cat /var/lib/zookeeper/myid

如果你愿意,可以把 具体报错日志贴出来(或 zookeeper.out 片段),我可以直接帮你定位是哪一类问题。

0 踩