Prometheus基于consul服务发现

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
简介: Prometheus基于consul服务发现

consul是什么?

Consul是一个分布式的,高可用的服务注册系统,由server端和client端组成,每个server和client都是consul的一个节点,consul客户端不保存数据,客户端将接收到的请求转发给响应的Server端。Server之间通过局域网或广域网通信实现数据一致性。

Prometheus基于consul服务发现简介

prometheus基于consul的服务发现流程如下:

(1)在consul注册服务或注销服务(监控targets)

(2)Prometheus一直监视consul服务,当发现consul中符合要求的服务有新变化就会更新Prometheus监控对象

安装consul集群

创建三个虚拟机,每台机器可以配置成4核CPU,6G内存,60G硬盘,主机名分别定义成master1、master2、master3,我的实验环境ip规划如下:

master1的ip:192.168.124.16
master2的ip:192.168.124.26
node1的ip:192.168.124.56

在master1、master2、node1三个节点部署consul

master1是consul的server,master2是consul的client,node1是consul的client

1.下载consul二进制包,在各个节点操作

mkdir /opt/consul/data-p  && cd /opt/consul

wget https://releases.hashicorp.com/consul/1.7.1/consul_1.7.1_linux_amd64.zip

unzip consul_1.7.1_linux_amd64.zip

注:https://releases.hashicorp.com/consul处可下载各个版本的consul,1.7.1是最新版本

2.启动consul

1)在master1上:

cd /opt/consul

./consul agent  -server  -bootstrap  -bind=192.168.124.16    -client=192.168.124.16  -data-dir=data  -ui  -node=192.168.124.16

这样就启动了master1上的consul

2)在master2上:

cd /opt/consul

./consul agent -bind=192.168.124.26 -client=192.168.124.26     -data-dir=data -node=192.168124.26  -join=192.168.124.16

3)在node1上:

cd /opt/consul

./consul agent-bind=192.168.124.56  -client=192.168.124.56    -data-dir=data -node=192.168.124.56  -join=192.168.124.16

各个节点都启动完之后

在浏览器访问http://192.168.124.16:8500/ 

可看到consul的管理界面

3.服务注册到consul

使用HTT PAPI方式注册node-exporter服务到Consul,可以在master1上测试,前提是master1节点需要部署node-exporter,这里不做说明,想学习详细内容可参考https://edu.51cto.com/sd/76993

在master1节点执行如下:

curl -X PUT -d '{"id":"node-exporter","name":"node-exporter","address":"192.168.124.16","port":9100,"tags":["node-exporter"],"checks":[{"http":"http://192.168.124.16:9100/","interval":"5s"}]}' http://192.168.124.16:8500/v1/agent/service/register

注:上面看到的192.168.124.16,是consul的master1节点ip

4.把consul中注册的服务移除:

curl --request PUT http://192.168.124.16:8500/v1/agent/service/deregister/192.168.124.16

5.prometheus基于consul服务发现的配置

前提是需要有prometheus,在部署prometheus的机器上执行如下

找到prometheus配置文件

cat prometheus.yaml
配置内容如下:

scrape_configs:
  - job_name: consul
    metrics_path: /metrics
    scheme: http
    consul_sd_configs:
      - server: 192.168.124.16:8500
       services: []
    relabel_configs:
    - source_labels: ['__meta_consul_tags']
      target_label: 'product'
    - source_labels: ['__meta_consul_dc']
      target_label: 'idc'
    - source_labels: ['__meta_consul_service']
      regex: "consul"  #匹配为"consul" 的service
      action: drop       # 执行的动作
    - source_labels: ['job']
      target_label: 'environment'
      regex:        '(.*)job'
      replacement:   '${1}'

如果是docker部署的prometheus,可用如下方法重启prometheus

docker restart prometheus

docker restart node-exporter

6.在prometheus web ui界面查看

http://192.168.124.16:9090/targets#job-prometheus

可看到如下,说明prometheus已经把consul作为数据源:

7.prometheus基于consul服务发现的配置说明:

  - source_labels:['__meta_consul_tags']
      target_label: 'product'
    - source_labels: ['__meta_consul_dc']
      target_label: 'idc'
    - source_labels: ['__meta_consul_service']
      regex: "consul"  #匹配为"consul" 的service
      action: drop       # 执行的动作
    - source_labels: ['job']
      target_label: 'environment'
      regex:        '(.*)job'
      replacement:   '${1}'
__meta_consul_tags:标记分隔符连接的目标的标记列表
__meta_consul_dc:目标的数据中心名称
__meta_consul_service:目标所属服务的名称
job':目标服务器的job
__meta_consul_service_port:目标的服务端口
static_configs: 配置数据源
consul_sd_configs: 基于consul服务发现的配置
rebel_configs:重新标记
consul_sd_configs:
    - server: 192.168.124.16:8500  #这个ip:port是consul的master1节点的ip


相关文章
|
Go 数据中心 微服务
Golang 语言微服务的服务发现组件 Consul 的系统架构介绍
Golang 语言微服务的服务发现组件 Consul 的系统架构介绍
185 0
|
11月前
|
API Docker 微服务
Ocelot集成Consul实现api网关与服务发现
本文介绍了如何在.NET微服务架构中集成API网关Ocelot和Consul服务发现。首先通过Docker安装并配置Consul,接着在GoodApi项目中实现服务的自动注册与注销,并配置健康检查。然后,通过修改Ocelot的配置文件`ocelot.json`和`Program.cs`,实现基于Consul的服务发现,确保API请求能够正确路由到后端服务。最后,解决了服务解析时可能出现的问题,确保服务的IP地址而非节点名称被正确解析。
237 0
Ocelot集成Consul实现api网关与服务发现
|
Prometheus Kubernetes 监控
prometheus学习笔记之集群内服务发现环境准备
本文介绍了在Kubernetes集群中部署Prometheus监控系统的详细步骤。首先创建用于监控的命名空间,并配置Docker以顺利下载镜像。接着,通过DaemonSet方式在集群中部署Node Exporter,确保每个节点上的指标都能被收集。然后,安装并配置NFS存储类别,以便为Prometheus提供持久化存储。最后,详细展示了如何在Kubernetes中部署Prometheus服务器,包括创建相关的配置文件、部署服务、设置角色权限以及暴露服务等
|
Prometheus 监控 Cloud Native
[prometheus]基于consul的服务发现
[prometheus]基于consul的服务发现
208 2
|
Prometheus 监控 Cloud Native
Prometheus结合Consul采集多个MySQL实例的监控指标
将 Prometheus 与 Consul 结合使用,实现对多个 MySQL 实例的自动发现与监控,不仅提高了监控的效率和准确性,也为管理动态扩缩容的数据库环境提供了强大的支持。通过细致配置每一部分,业务可以获得关键的性能指标和运行健康状况的即时反馈,进而优化资源配置,提高系统的稳定性和可用性。
461 3
|
存储 Ubuntu Linux
在Ubuntu 14.04上使用Consul服务发现系统的介绍
在Ubuntu 14.04上使用Consul服务发现系统的介绍
102 0
|
Prometheus 监控 Cloud Native
Linux|centos7 Prometheus的自动服务发现 一(文件发现机制)
Linux|centos7 Prometheus的自动服务发现 一(文件发现机制)
215 0
|
存储 Java 数据中心
服务发现框架Consul的使用
服务发现框架Consul的使用
381 0
|
缓存 中间件 开发工具
go-micro使用Consul做服务发现的方法和原理
go-micro使用Consul做服务发现的方法和原理
363 0
|
4月前
|
Prometheus 监控 Cloud Native
云原生监控实战:Prometheus+Grafana快速搭建指南
云原生监控实战:Prometheus+Grafana快速搭建指南