zoukankan      html  css  js  c++  java
  • zookeeper监控告警

    一、ZooKeeper简介

    ZooKeeper作为分布式系统中重要的组件,目前在业界使用越来越广泛,ZooKeeper的使用场景非常多,以下是几种典型的应用场景:

    l  数据发布与订阅(配置中心)

    l  负载均衡

    l  命名服务(Naming Service)

    l  分布式通知/协调

    l  集群管理与Master选举

    l  分布式锁

    zk环境搭建

    这里不详细说明,提供详细blog说明。

    Zookeeper集群搭建:http://www.cnblogs.com/linuxbug/p/4840137.html

    Zookeeper配置文件详解:http://www.cnblogs.com/linuxbug/p/4840136.html

    Zookeeper常用四字命令:http://www.cnblogs.com/linuxbug/p/4840135.html

    二、ZooKeeper监控

    在部门内部,有不少应用已经强依赖ZooKeeperZooKeeper的工作状态直接影响它们的正常工作。先来看一看哪些因素对ZooKeeper正常工作有比较大的影响:

     

    影响ZooKeeper工作的主要因素

    l  用于zookeeper写事务日志的目录要有足够大小,并且强烈建议在单独的磁盘(挂载点)上,这是影响ZK性能最大因素之一。

    l  连接数。

    l  注册的Watcher数。

    l  ZNode是否可读,可写。

    l  ZK事件通知的延时是否过大。

     

    针对监控平台的以上几点要求,部内内部选用了目前使用业界已经比较成熟的阿里开源ZooKeeper监控框架TaoKeeper

    TaoKeeper源码及搭建方法参考https://github.com/alibaba/taokeeper

     

    TaoKeeper介绍

    TaoKeeper是阿里开源ZooKeeper监控告警框架,提供以下功能:

    l  CPU/MEM/LOAD的监控

    l  ZK日志目录所在磁盘剩余空间监控

    l  单机连接数的峰值报警

    l  单机 Watcher的峰值报警

    l  节点自检:是指对集群中每个IP所在ZK节点上的PATH: /YINSHI.MONITOR.ALIVE.CHECK 定期进行三次如下流程 : 节点连接 - 数据发布 - 修改通知 - 获取数据 - 数据对比, 在指定的延时内,三次流程均成功视为该节点处于正常状态。

     

    工作原理

    Taokeeper通过SSH连接到ZooKeeper部署的机器上,再在上面执行ZooKeeper的四字命令来得到统计信息,再分析保存到mysql数据库中。
    监控目标机器的负载,也是通过SSH连接到目标机器,再执行top
    等命令,再分析得到数据。

    常见四字命令:

    l  echo stat|nc 127.0.0.1 2181 来查看哪个节点被选择作为follower或者leader

    l  echo ruok|nc 127.0.0.1 2181 测试是否启动了该Server,若回复imok表示已经启动。

    l  echo cons | nc 127.0.0.1 2181 列出所有连接到服务器的客户端的完全的连接/会话的详情。

    l  echo wchs | nc 127.0.0.1 2181 列出服务器 watch 的详细信息。

     

    注意事项

    1 taokeeper通过ssh信道到访登录每台机器,需要打开sshpassword登陆方式,不然taokeeper运行时会出现authentication failed错误。打开方式如下:

    l  对于contos机器(sshd版本为标准OpenSSL):需要把sshd配置文件中(本机为/etc/ssh/sshd_config.l)PasswordAuthentication变量设置成yes

    l  对于suse机器(sshd版本为SSH Secure Shell):需要把sshd配置文件中(本机为/etc/ssh2/sshd2_config.l)AllowedAuthentications变量加上passwordAllowedAuthentications publickey,keyboard-interactive,password);

    2 监控的每台机器需要安装nc命令(suse中叫netcat,可以直接做个软链到nc

     

    使用TaoKeeper,目前已建立起部门内ZooKeeper的监控视图

    ZooKeeper集群实时状态

    clip_image002

    点击查看按钮可以查看具体信息

    Watch

    clip_image004

     

    连接数

    clip_image006

     

    集群状态趋势图

    clip_image008

     

    新增监控集群

    clip_image010

    三、ZooKeeper告警

    TaoKeeper查看主要针对以下几个维度:

    l  ZooKeeper宕机告警

    l  单机连接数超过阀值告警

    l  单机Watch数超过阀值告警

    l  磁盘,CPU,内存超过阀值告警

     

    或自己使用四字命令+nc写脚本去做告警也行,这里不再详述。

     

  • 相关阅读:
    [Java优化] Java代码细节优化
    [网址] 工具类网址
    [Hadoop] 大数据环境安装博客
    简单说下Netty和RPC吧,大佬绕行
    nginx二级域名配置[CentOS]
    java面试准备-自我介绍
    同步||异步&&阻塞||非阻塞
    关于多线程的知识点-02
    [java进阶]关于多线程的知识点
    [java进阶]关于多线程的知识点
  • 原文地址:https://www.cnblogs.com/linuxbug/p/4840506.html
Copyright © 2011-2022 走看看