文章目录

  • 1. 简介
  • 2. docker安装consul
    • 3. Handle
    • 4. watch参数
    • 5. Watches类型
      • 5.1 key
        • 第一种方法:
        • 第二种方法:
        • 第三种方法
        • 第四种方法
        • 第五种方法
      • 5.2 keyprefix
      • 5.3 services
      • 5.4 nodes
      • 5.5 service
      • 5.6 check

1. 简介

  • Watches是查看指定数据信息的一种方法,比如查看nodes列表、键值对、健康检查。当监控到更新时,可以调用外部处理程序——可以自定义。比如,发现健康状态发生变化可以通知外部系统健康异常。
  • Watches在调用http api接口使用阻塞队列。Agent会自动调用合适的API接口俩监控数据的变化。
  • Watches可以作为Agent配置的一部分。在Agent初始化时就运行,并且支持重新载入配置——运行时新添加或删除配置。
  • 在任意情况下,watches的type都必须指定。Watch支持的每一个type需要的不同的参数,一些是必须的一些事非必须的。这些都是通过JSON来设置的。

2. docker安装consul

docker run -d --net=host --name=dev-consul consul agent -dev -client 0.0.0.0

3. Handle

Watch配置可以指定监控的数据。一旦数据发生变化,可以运行指定的处理程序——可以是任意可执行的程序。

处理程序可以从标准输入中读取输入,也可以读取json数据。数据格式依赖于watch类型。Watch类型与Json格式是想对象的。因为watch是直接调用HTTP API,因此输入数据要格式化。

4. watch参数

除了每一种类型支持的参数外,还有一些全局参数:

type - 监控的数据类型
key - 监控的键值数据的Key
handler_type - 通知类型,支持script和http
args - 配置通知类型为script的,执行命令,是一个数组,第一个元素是命令,后面第2个到第N个元素是命令的参数。
handler – 监控到数据变化后的调用程序。

http_handler_config参数说明:

path - 通知Url
method - http请求方法
header - 自定义Http请求头,没有可以忽略
timeout - 超时时间,10秒
tls_skip_verify - 是否跳过tls验证

5. Watches类型

不同的watch类型对应着不同HTTP API

  • Key – 监视指定K/V键值对
  • Keyprefix – Watch a prefix in the KV store
  • Services – 监视服务列表
  • nodes – 监控节点列表
  • service – 监视服务实例
  • checks- 监视健康检查的值
  • event – 监视用户事件

5.1 key

Key watch类型通常用来监视指定键值对的变化。要求提供key参数

第一种方法:

注意: watch json配置要放在和配置文件同一个目录下才会生效

{"watches": [ {"type": "key","key": "foo/bar/baz","handler": "/usr/bin/my-key-handler.sh hello"
}]
}
root@node1:~/consul# cat /root/consul/demo/my-service-handler.sh
#!/bin/sh
echo "This is a test  $1 !"

修改foo/bar/baz的值

consul kv putfoo/bar/baz 2

当watch发现foo/bar/baz的值发生变化,便会执行一次/root/consul/demo/my-key-handler.sh

consul reload
#界面修改key:foo/bar/baz的值。,或者命令行修改 consul kv put foo/bar/baz 1
docker logs dev-consul -f --tail 200  #会看到执行/consul/demo/my-service-handler.sh输出
第二种方法:
{"watches": [{"type": "key","key": "foo/bar/baz","handler_type": "script","args": ["/consul/demo/my-service-handler.sh", "-redis"]}]
}
第三种方法

使用命令行:放在后台监控

$ consul watch -type key -key foo/bar/baz /usr/bin/my-service-handler.sh hello &
This is a test hello !

当然这会是命令行输出结果,而不是日志,当然你也可以自定义日志。

第四种方法

和配置文件写在一起也是可以的

{"datacenter": "dc1", "data_dir": "/consul/data", "ui": true,"watches": [{"type": "key","key": "foo/bar/baz","handler_type": "script","args": ["/usr/bin/my-service-handler.sh", "-redis"]}]
}
第五种方法

通过http API接口通知

{"datacenter": "dc1","data_dir": "/consul/data","ui": true,"watches": [{"type": "key","key": "foo/bar/baz","handler_type": "http","http_handler_config": {"path": "https://localhost:8000/watch","method": "POST","header": {"x-foo": ["bar", "baz"]},"timeout": "10s","tls_skip_verify": false}}]
}

当然http API https://localhost:8000/watch是我们自定义开发的。

5.2 keyprefix

第一种方法:
Keyprefix类型是用来监视KV存储中keys的前缀。必须提供prefix参数。
监视会返回匹配prefix的所有键值对。

{"watches": [{"type": "keyprefix","prefix": "foo/","handler": "/usr/bin/my-prefix-handler.sh"
}]
}
$ consul watch -typekeyprefix -prefix foo/ /usr/bin/my-prefix-handler.sh

5.3 services

监视一系列有效的service,无参数
内部接口/v1/catalog/services

命令行输出信息如下:

{"consul": [],"redis": [],"web": []
}

5.4 nodes

监视一系列有效的节点,无参数。
内部API:/v1/catalog/nodes

[{"Node": "nyc1-consul-1","Address": "192.241.159.115"},{"Node": "nyc1-consul-2","Address": "192.241.158.205"},{"Node": "nyc1-consul-3","Address": "198.199.77.133"},{"Node": "nyc1-worker-1","Address": "162.243.162.228"},{"Node": "nyc1-worker-2","Address": "162.243.162.226"},{"Node": "nyc1-worker-3","Address": "162.243.162.229"}
]

5.5 service

监控指定的单个service。必须提供参数service。tag和passingonly参数可选。
第一种方法
内部接口:/v1/health/service

{"type": "service","service": "redis","handler": "/usr/bin/my-service-handler.sh"
}

第二种方法

$ consul watch -typeservice -service redis /usr/bin/my-service-handler.sh

5.6 check

{"watches": [{"type": "checks","state": "critical","args": ["/root/hello.sh", "test"],"token":"AN8uRFhY"},{"type": "checks","state": "warning","args": ["/root/hello2", "test2"],"token":"AN8uRFhY"}]
}

consul watch使用详解相关推荐

  1. go使用grpc实现异步_(python、go)基于ETCD的gRPC分布式服务器实现详解

    作者:Zarten知乎专栏:框架工具篇详解知乎ID: Zarten简介: 互联网一线工作者,尊重原创并欢迎评论留言指出不足之处,也希望多些关注和点赞是给作者最好的鼓励 ! 1-概述 gRPC框架是一个 ...

  2. Ocelot简易教程(三)之主要特性及路由详解

    作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9664977.html 上篇<Ocelot简易教程(二)之快速开始2>教大家如何快速跑起来一个 ...

  3. Linkerd实战(2)示例详解

    概述 我们用一个step by step的基本示例来动手搭建一个linkerd代理. 服务提供方 为了简化示例,我们以ubuntu上的ngnix为例,搭建一个最基本的http服务作为服务提供方. su ...

  4. Redis基础与高可用集群架构进阶详解

    一.NoSQL简介 1.问题引入 每年到了过年期间,大家都会自觉自发的组织一场活动,叫做春运!以前我们买票都是到火车站排队,后来呢,有了 12306,有了它以后就更方便了,我们可以在网上买票,但是带来 ...

  5. EndPoint详解

    EndPoint详解 EndPoint主要用于暴露一些SpringMvc内部运行的信息,通常是通过SpringMvc的请求地址获取相关信息.如/health获取健康检查信息. 简单单元测试 @Test ...

  6. viper4android io错误,golang常用库之配置文件解析库-viper使用详解

    一.viper简介 viper 配置管理解析库,是由大神 Steve Francia 开发,他在google领导着 golang 的产品开发,他也是 gohugo.io 的创始人之一,命令行解析库 c ...

  7. ShardingShpere分库分表5-ShardingSphere分布式事务详解

    文章目录 一.ShardingJDBC分布式事务快速上手 LOCAL本地事务 XA事务快速上手 BASE柔性事务快速上手 seata部署方式: 客户端使用Base事务 二.分布式事务原理详解 XA事务 ...

  8. SpringCloud Gateway 详解

    文章目录 一.网关简介 1.服务网关介绍 1.1 API网关介绍 1.2 网关主要功能 2.常用网关介绍 2.1 Nginx+Lua 2.2 Kong 2.3 Traefik 2.4 Zuul 二.S ...

  9. 分布式事务(Seata) 四大模式详解

    前言 在上一节中我们讲解了,关于分布式事务和seata的基本介绍和使用,感兴趣的小伙伴可以回顾一下<别再说你不知道分布式事务了!> 最后小农也说了,下期会带给大家关于Seata中关于sea ...

最新文章

  1. 线段树/树状数组问题 | 问题集合
  2. python函数只有被调用才会执行_Python函数调用
  3. Discuz常见小问题-如何快速清除帖子
  4. ESFramework介绍之(16)―― Tcp数据自动发送器ITcpAutoSender
  5. linux下gem卸载,gem 安装卸载pod
  6. postman添加cookie
  7. 如何利用pandas将时间戳格式化日期字符串呢?
  8. [翻译 EF Core in Action] 1.5 关于NoSql
  9. 银行核心系统是什么?
  10. PandoraBox潘多拉无线桥接(中继)使用方法和无法使用解决----小米mini小米3路由
  11. 经纬度及其与坐标系的转换
  12. 如何清除浏览器历史记录-在Chrome,Firefox和Safari中删除浏览历史记录
  13. iPad作为Windows电脑副屏使用技巧(详细向)
  14. 大家都在努力,你凭什么不努力?
  15. 数据集成解决方案探讨
  16. 论文阅读笔记:MuTual: A Dataset for Multi-Turn Dialogue Reasoning
  17. 实现打印日历的一种方式(-,-)
  18. Spotify敏捷模式详解三部曲第三篇:工程文化
  19. 使用JS实现俄罗斯方块游戏
  20. DNS和代理服务器的介绍

热门文章

  1. VS2008C#Sqlserver2008数据库的连接以及增删改查
  2. github在linux安装教程
  3. 思维导图 基础篇(12)应用-文章分析-记忆法
  4. Windows驱动_WFP之三Callout驱动的操作
  5. python制作酒店系统_酒店前台管理系统需求分析
  6. 电脑螺旋丸html,modal_window.html
  7. 2009.11.01北京下雪了!
  8. 【Spring6】| GoF之代理模式(JDK动态代理和CGLIB动态代理)
  9. Android数据访问(一)——Asserts
  10. SQL数据库之索引优缺点