zookeeper应用 - 监控
服务器端:监听zk上父节点的子节点变化
- package monitor;
- import java.util.List;
- import java.util.concurrent.CountDownLatch;
- import java.util.concurrent.TimeUnit;
- import org.apache.zookeeper.CreateMode;
- import org.apache.zookeeper.WatchedEvent;
- import org.apache.zookeeper.Watcher;
- import org.apache.zookeeper.Watcher.Event.KeeperState;
- import org.apache.zookeeper.ZooDefs;
- import org.apache.zookeeper.ZooKeeper;
- /**
- * 监听客户端的上下线
- * @author lisg
- *
- */
- public class ServerMonitor {
- public static final String HOSTS = "vm1";
- private ZooKeeper zk = null;
- public static final String PARENT_PATH = "/monitor";
- private static int client_count = 0;
- public ServerMonitor() {
- final CountDownLatch cdl = new CountDownLatch(1);
- try {
- zk = new ZooKeeper(HOSTS, 5000, new Watcher() {
- @Override
- public void process(WatchedEvent event) {
- if(KeeperState.SyncConnected.equals(event.getState())) {
- cdl.countDown();
- }
- }
- });
- cdl.await();
- //创建父节点
- if(zk.exists(PARENT_PATH, false) == null) {
- zk.create(PARENT_PATH,
- "".getBytes(),
- ZooDefs.Ids.OPEN_ACL_UNSAFE,
- CreateMode.PERSISTENT);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public void run() {
- try {
- zk.getChildren(PARENT_PATH, new ClientChangeWatcher());
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- class ClientChangeWatcher implements Watcher {
- @Override
- public void process(WatchedEvent event) {
- try {
- if(Event.EventType.NodeChildrenChanged.equals(event.getType())) {
- //获取子节点,同时注册监听
- final List<String> children = zk.getChildren(PARENT_PATH, this);
- if(client_count > children.size()) {
- System.out.println("有客户端下线");
- } else {
- System.out.println("有客户端上线");
- }
- client_count = children.size();
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- public static void main(String[] args) {
- new ServerMonitor().run();
- try {
- TimeUnit.DAYS.sleep(1);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- package monitor;
- package monitor;
- import java.util.concurrent.CountDownLatch;
- import java.util.concurrent.TimeUnit;
- import org.apache.zookeeper.CreateMode;
- import org.apache.zookeeper.WatchedEvent;
- import org.apache.zookeeper.Watcher;
- import org.apache.zookeeper.Watcher.Event.KeeperState;
- import org.apache.zookeeper.ZooDefs.Ids;
- import org.apache.zookeeper.ZooKeeper;
- /**
- * 客户端
- * 上线的时候在zk上创建一个短暂的子节点
- * @author lisg
- *
- */
- public class Client {
- public static final String CLIENT_PATH_PREFIX = "cli-";
- public static void main(String[] args) {
- final CountDownLatch cdl = new CountDownLatch(1);
- try {
- ZooKeeper zk = new ZooKeeper(ServerMonitor.HOSTS, 5000, new Watcher() {
- @Override
- public void process(WatchedEvent event) {
- if(KeeperState.SyncConnected.equals(event.getState())) {
- cdl.countDown();
- }
- }
- });
- cdl.await();
- //创建父节点
- zk.create(ServerMonitor.PARENT_PATH + "/" + CLIENT_PATH_PREFIX,
- "".getBytes(),
- Ids.OPEN_ACL_UNSAFE,
- CreateMode.EPHEMERAL_SEQUENTIAL);
- TimeUnit.SECONDS.sleep(5);
- zk.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
附件列表
zookeeper应用 - 监控的更多相关文章
- zookeeper 的监控指标
一 应用场景描述 在目前公司的业务中,没有太多使用ZooKeeper作为协同服务的场景.但是我们将使用Codis作为Redis的集群部署方案,Codis依赖ZooKeeper来存储配置信息.所以做好Z ...
- zookeeper 的监控指标(一)
一 应用场景描述 在目前公司的业务中,没有太多使用ZooKeeper作为协同服务的场景.但是我们将使用Codis作为Redis的集群部署方案,Codis依赖ZooKeeper来存储配置信息.所以做好Z ...
- zookeeper的监控
1.idea插件: zookeeper https://blog.csdn.net/long290046464/article/details/52974061 优点:直接查看,不用来回切换监控 缺点 ...
- JMXtrans + InfluxDB + Grafana实现Zookeeper性能指标监控
一.总体效果图 这里是将集群全部放在一起,可以根据自己的审美看怎么放 二.监控指标 其中有些指标与第一篇Zookeeper通过四字命令基础监控(Zabbix)的四字命令的指标是有重复的,二者选一个则可 ...
- zookeeper监控告警
一.ZooKeeper简介 ZooKeeper作为分布式系统中重要的组件,目前在业界使用越来越广泛,ZooKeeper的使用场景非常多,以下是几种典型的应用场景: l 数据发布与订阅(配置中心) l ...
- Hadoop记录- zookeeper 监控指标
目前zookeeper获取监控指标已知的有两种方式: 1.通过zookeeper自带的 four letter words command 获取各种各样的监控指标 2.通过JMX Client连接zo ...
- Prometheus jvm_exporter监控zookeeper
Zookeeper Prometheus 监控zookeeper使用jvm_exporter来采集数据,jvm_exporter是一个可以配置抓取和暴露JMX目标的mBeans的收集器. 下载java ...
- zabbix系列(十)zabbix添加对zookeeper集群的监控
1.应用场景描述 在目前公司的业务中,有部分ESB架构用ZooKeeper作为协同服务的场景,做好ZooKeeper的监控很重要. 2.ZooKeeper监控要点 系统监控 内存使用量 ZooK ...
- 使用Zabbix监控ZooKeeper服务的健康状态
一 应用场景描述 在目前公司的业务中,没有太多使用ZooKeeper作为协同服务的场景.但是我们将使用Codis作为Redis的集群部署方案,Codis依赖ZooKeeper来存储配置信息.所以做好Z ...
随机推荐
- 为Linux集群创建新账户,并配置hadoop集群
转自:http://blog.csdn.net/bluesky8640/article/details/6945776 之前装python.jdk.hadoop都是用的root账户,这是一个绝对的失策 ...
- Python的不定长参数研究
通过观察程序和运行结果我们发现,传参时将1传给了a,将2传给了b,将3,4,5传给了*args,将m=6,n=7,p=8传给了**kwargs.为什么是这样传参呢?*args和**kwargs又是什 ...
- django第二课 网页继承
第一步 创建项目(有问题可以看我的第一个博客) C:\Python36\Scripts\django-admin.py startproject *** (我的写法,仅供参考) 第二步 创建文件夹,同 ...
- SourceTree跳过Atlassian账号,免登陆,跳过初始设置
SourceTree 安装之后需要使用账号登陆以授权,并且是强制登陆. 登录过程非常漫长,并未在不FQ的情况下是不能成功的,下面记录一下跳过登录的方法. 装之后,转到用户本地文件夹下的 SourceT ...
- javascript快速入门1--JavaScript前世今生,HelloWorld与开发环境
JavaScript历史 大概在1992年,一家称作Nombas的公司开始开发一种叫做C--(C-minus-minus,简称Cmm)的嵌入式脚本语言. Cmm背后的理念很简单:一个足够强大可以替代宏 ...
- [笔记] Python 中JSON数据的读写
前言 JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换语言 JSON是独立于语言的文本格式, JSON 数据格式与语言无关 JSO ...
- unity之定制脚本模板
1.unity的脚本模板 新版本unity中的C#脚本有三类,第一类是我们平时开发用的C# Script:第二类是Testing,用来做单元测试:第三类是Playables,用作Time ...
- Golang xorm工具,根据数据库自动生成 go 代码
使用 golang 操作数据库的同学都会遇到一个问题 —— 根据数据表结构创建对应的 struct 模型.因为 golang 的使用首字母控制可见范围,我们经常要设计 struct 字段名和数据库字段 ...
- wcf win7+iis7 异常消息为: 可能证书“CN=PmsWcfServer”没有能够进行密钥交换的私钥
原因是证书没有用户权限,解决方法: 1.开始-运行-mmc 2.添加[证书]管理单元 3.选择[证书(本地计算机)]-[个人]-[证书],右击PmsWcfServer证书-[所有任务]-[管理密钥] ...
- [转]HTTP请求中的form data和request payload的区别
本文转自:http://www.cnblogs.com/btgyoyo/p/6141480.html jQuery的ajax方法和post方法分别发送请求,在后台Servlet进行处理时结果是不一样的 ...