Consul+Prometheus系统监控之注册发现

前面几篇文章分别对系统服务、MySql以及Redis相关软件作了监控预警,可是你们有没有发现,在prometheus.yml里配置须要监听的服务时,咱们须要按服务名手动写入,也就是说之后每增长一个服务,就得手动修改此配置,并重启promethues服务。 那么咱们如何作到动态的监听服务呢?相信很多接触过度布式框架Dubbo的小伙伴们都知道它是靠zookeeper作注册监听的,最近比较流行的Spring Cloud Netflix的Eureka,consul也是比较经常使用的注册中心。nginx

参考官方文档consul_sd_config,能够发现promethues已经能够借助consul实现动态监听服务的功能了。web

Consul简介

Consul是一个服务发现和注册的工具,其具备分布式、高扩展性能特色。算法

Consul主要包含以下功能:docker

  • 服务发现: 支持 http 和 dns 两种协议的服务注册和发现方式。网络

  • 监控检查: 支持多种方式的健康检查。架构

  • Key/Value存储: 支持经过HTTP API实现分布式KV数据存储。框架

  • 多数据中心支持:支持任意数量数据中心。分布式

官方架构图:ide

1620

Consul.png工具

使用场景

  • docker 实例的注册与配置共享

  • coreos 实例的注册与配置共享

  • vitess 集群

  • SaaS 应用的配置共享

  • 与 confd 服务集成,动态生成 nginx 和 haproxy 配置文件

优点

  • 使用 Raft 算法来保证一致性, 比复杂的 Paxos 算法更直接. 相比较而言, zookeeper 采用的是 Paxos, 而 etcd 使用的则是 Raft.

  • 支持多数据中心,内外网的服务采用不一样的端口进行监听。 多数据中心集群能够避免单数据中心的单点故障,而其部署则须要考虑网络延迟, 分片等状况等. zookeeper 和 etcd 均不提供多数据中心功能的支持.

  • 支持健康检查. etcd 不提供此功能.

  • 支持 http 和 dns 协议接口. zookeeper 的集成较为复杂, etcd 只支持 http 协议.

  • 官方提供web管理界面, etcd 无此功能.

角色

  • client: 客户端, 无状态, 将 HTTP 和 DNS 接口请求转发给局域网内的服务端集群.

  • server: 服务端, 保存配置信息, 高可用集群, 在局域网内与本地客户端通信, 经过广域网与其余数据中心通信. 每一个数据中心的 server 数量推荐为 3 个或是 5 个.


本文出自https://cloud.tencent.com/developer/article/1096705

参考连接https://www.jianshu.com/p/242c25332374

相关文章
相关标签/搜索