0%

Zookeeper第十课

Zookeeper开源运维管理系统

阿里开源zookeeper运维管理系统TaoKeeper。

Zookeeper的健康指标

物理资源

CPU、内存、磁盘空间、磁盘IO。

应用资源

  • 连接数
  • 注册的watcher数
  • ZNode是否可读,可写(ACL权限)
  • ZK事件通知的延时是否过大
  • zk的节点是否健康(是否离线)
  • 数据状态
  • 请求延时状态
  • 节点的角色

Taokeeper

Taokeeper是阿里的开源Zookeeper运维管理系统。

主要功能

  1. CPU、MEM、LOAD监控。
  2. zk日志目录所在磁盘剩余空间监控。
  3. 单机连接数的峰值报警
  4. 单机watcher数峰值报警
  5. 节点将康状态检测
  6. 少量的统计报表

不足

  1. 缺少数据目录查看
  2. 缺少磁盘iops统计
  3. 缺少网络数据统计

安装与部署

下载Taokeeper源码进行安装。

注意事项
在配置文件中配置项指定目录下手动新建目录ZookeeperClientThroughputStat。修改类ZKServerStatusCollector中的方法storeTaoKeeperStatToDB,因为BUG,如果集群是新启动,没有统计数据,程序会报错。

1

访问地址

ip:port/taokeeper-monitor

主要功能简介

集群配置

以逗号分开集群的机器列表。如果节点都部署在同一个机器上,可以借助域名的方式,否则不会显示所有的节点信息。

集群监控

zk本身不支持rwps监控。需要使用https://issues.apache.org/jira/browse/ZOOKEEPER-1804列出的patch。需要以下步骤修改:

  1. 修改文件:NIOServerCnxn NettyServerCnxn ServerCnxn ServerStats ZookeeperServer;具体内容问题列表中的patch附件。
  2. 在zkServer中增加启动属性-DServer_process_stats=true。
  3. 修改代码中的bug,将类ZKSserverStatusCollector中的line.contains(“getDate”)改为line.contains(“getData”)
  4. 修改bug:如果每秒处理数小于1时,全部都会显示为0。修改ZKServerStatusCollector中所有计算的地方Math.round(Double.valueOf(StringUtil.trimToEmpty(line))×100)/ 100 后面的 100 改为 100d
  5. 节点自检是指集群中每个ip所在的zk节点上的path:/YINSHI.MONITOR.ALIVE.CHECK定期进行三次如下的流程:节点链接-数据发布-修改通知-获取数据-数据对比,三次流程均成功视为该节点处于正常状态。

监控报警

默认提供了阿里旺旺和短信的报警机制,需要修改成自己的。扩展接口为:

com.taobao.taokeeper.reporter.alarm.MessageSender
1

总结

TaoKeeper坑比较多,并且已经不再维护。但还是实现zk监控的从无到有。