Zookeeper开源运维管理系统
阿里开源zookeeper运维管理系统TaoKeeper。
Zookeeper的健康指标
物理资源
CPU、内存、磁盘空间、磁盘IO。
应用资源
- 连接数
- 注册的watcher数
- ZNode是否可读,可写(ACL权限)
- ZK事件通知的延时是否过大
- zk的节点是否健康(是否离线)
- 数据状态
- 请求延时状态
- 节点的角色
Taokeeper
Taokeeper是阿里的开源Zookeeper运维管理系统。
主要功能
- CPU、MEM、LOAD监控。
- zk日志目录所在磁盘剩余空间监控。
- 单机连接数的峰值报警
- 单机watcher数峰值报警
- 节点将康状态检测
- 少量的统计报表
不足
- 缺少数据目录查看
- 缺少磁盘iops统计
- 缺少网络数据统计
安装与部署
下载Taokeeper源码进行安装。
注意事项
在配置文件中配置项指定目录下手动新建目录ZookeeperClientThroughputStat。修改类ZKServerStatusCollector中的方法storeTaoKeeperStatToDB,因为BUG,如果集群是新启动,没有统计数据,程序会报错。
1 |
访问地址
ip:port/taokeeper-monitor
主要功能简介
集群配置
以逗号分开集群的机器列表。如果节点都部署在同一个机器上,可以借助域名的方式,否则不会显示所有的节点信息。
集群监控
zk本身不支持rwps监控。需要使用https://issues.apache.org/jira/browse/ZOOKEEPER-1804列出的patch。需要以下步骤修改:
- 修改文件:NIOServerCnxn NettyServerCnxn ServerCnxn ServerStats ZookeeperServer;具体内容问题列表中的patch附件。
- 在zkServer中增加启动属性-DServer_process_stats=true。
- 修改代码中的bug,将类ZKSserverStatusCollector中的line.contains(“getDate”)改为line.contains(“getData”)。
- 修改bug:如果每秒处理数小于1时,全部都会显示为0。修改ZKServerStatusCollector中所有计算的地方Math.round(Double.valueOf(StringUtil.trimToEmpty(line))×100)/ 100 后面的 100 改为 100d。
- 节点自检是指集群中每个ip所在的zk节点上的path:/YINSHI.MONITOR.ALIVE.CHECK定期进行三次如下的流程:节点链接-数据发布-修改通知-获取数据-数据对比,三次流程均成功视为该节点处于正常状态。
监控报警
默认提供了阿里旺旺和短信的报警机制,需要修改成自己的。扩展接口为:
1 |
总结
TaoKeeper坑比较多,并且已经不再维护。但还是实现zk监控的从无到有。