前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Prometheus+Consul 自助服务发现(六)

Prometheus+Consul 自助服务发现(六)

作者头像
Kevin song
发布2023-02-22 21:33:39
1.1K0
发布2023-02-22 21:33:39
举报

Prometheus 官网

https://prometheus.io/download/

Consul 介绍

Consul 是基于 GO 语言开发的开源工具,主要面向分布式,服务化的系统提供服务注册、服务发现和配置管理的功能。Consul 提供服务注册/发现、健康检查、Key/Value存储、多数据中心和分布式一致性保证等功能。通过 Prometheus 实现监控,当新增一个 Target 时,需要变更服务器上的配置文件,即使使用 file_sd_configs 配置,也需要登录服务器修改对应 Json 文件,会非常麻烦。不过 Prometheus 官方支持多种自动服务发现的类型,其中就支持 Consul。

Consul 特性

  1. 服务发现:consul通过DNS或者HTTP接口使服务注册和服务发现
  2. 健康检查:健康检测使consul可以快速的告警在集群中的操作。和服务发现的集成,可以防止服务转发到故障的服务上面。
  3. 键/值存储:一个用来存储动态配置的系统。提供简单的HTTP接口,可以在任何地方操作。
  4. 多数据中心:无需复杂的配置,即可支持任意数量的区域。

Consul角色

  • client: 客户端, 无状态, 将 HTTP 和 DNS 接口请求转发给局域网内的服务端集群.
  • server: 服务端, 保存配置信息, 高可用集群, 在局域网内与本地客户端通讯, 通过广域网与其他数据中心通讯. 每个数据中心的 server 数量推荐为 3 个或是 5 个.

Consul 官网

https://developer.hashicorp.com/consul/downloads

Consul 安装配置

1,二进制部署Consul

代码语言:javascript
复制
wget  https://releases.hashicorp.com/consul/1.14.1/consul_1.14.1_linux_amd64.zip
unzip consul_1.14.1_linux_amd64.zip
mv consul  /usr/local/

2,consul版本信息

代码语言:javascript
复制
./consul  version

3,启动consul

代码语言:javascript
复制
./consul agent  -server  -bootstrap  -bind=192.168.100.221    -client=192.168.100.221  -data-dir=data  -ui  -node=192.168.100.221

4,consul启动参数介绍

代码语言:javascript
复制
-server :定义agent运行在server模式
-bootstrap-expect :在一个datacenter中期望提供的server节点数目,当该值提供的时候,consul一直等到达到指定sever数目的时候才会引导整个集群,该标记不能和bootstrap共用
-data-dir:提供一个目录用来存放agent的状态,所有的agent允许都需要该目录,该目录必须是稳定的,系统重启后都继续存在
-node:节点在集群中的名称,在一个集群中必须是唯一的,默认是该节点的主机名
-bind:该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的,默认是0.0.0.0
-ui:启动web界面
-config-dir:配置文件目录,里面所有以.json结尾的文件都会被加载
-rejoin:使consul忽略先前的离开,在再次启动后仍旧尝试加入集群中。
-client:consul服务侦听地址,这个地址提供HTTP、DNS、RPC等服务,默认是127.0.0.1所以不对外提供服务,如果你要对外提供服务改成0.0.0.0

5,浏览器访问Consul Web

http://192.168.100.221:8500

Consul API 注册 node-exporter 服务到 Consul

通过 API 注册node-exporter 服务信息到 Consul 中,服务地址及端口为 node-exporter 默认提供指标数据的地址。注意:服务注册到Consul的id不能相同。

Consul API注册"id=node-exporter"服务

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

Consul Web 控制台 查看注册服务

Consul API 注销"id=node-exporter" 服务

代码语言:javascript
复制
curl -X PUT http://192.168.100.221:8500/v1/agent/service/deregister/node-exporter

Prometheus 实现自动服务发现

vim /usr/local/prometheus/prometheus.yml

代码语言:javascript
复制
- job_name: 'consul-node-exporter'
    consul_sd_configs:
      - server: '192.168.100.221:8500'
        services: []
    relabel_configs:
      - source_labels: [__meta_consul_tags]
        regex: .*node-exporter.*
        action: keep
      - source_labels: ['__meta_consul_service']
        regex: '(.*)'
        target_label: 'job'
        replacement: '$1'
      - source_labels: ['__meta_consul_service_address']
        regex: '(.*)'
        target_label: 'instance'
        replacement: '$1'
      - source_labels: ['__meta_consul_service_metadata_project']
        regex: '(.*)'
        target_label: 'project'
        replacement: '$1'

consul_sd_configs 配置使用 Consul 服务发现类型

server 指定Consul 的服务地址

relabel_configs 用来实现自定义标签及分类

检查prometheus.yml文件格式

代码语言:javascript
复制
/usr/local/prometheus/promtool   check config /usr/local/prometheus/prometheus.yml

Prometheus的restful接口热加载配置

代码语言:javascript
复制
curl  -X POST http://127.0.0.1:9090/-/reload

Prometheus Web UI Targets 查看节点已经完成主动注册

Prometheus Web UI Service Discovery

在Consul 注销服务ID后 Prometheus 也会取消对Targets的监控

Consul API 注销"id=node-exporter" 服务

代码语言:javascript
复制
curl -X PUT http://192.168.100.221:8500/v1/agent/service/deregister/node-exporter
本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-11-28,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 开源搬运工宋师傅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Prometheus 监控服务
Prometheus 监控服务(TencentCloud Managed Service for Prometheus,TMP)是基于开源 Prometheus 构建的高可用、全托管的服务,与腾讯云容器服务(TKE)高度集成,兼容开源生态丰富多样的应用组件,结合腾讯云可观测平台-告警管理和 Prometheus Alertmanager 能力,为您提供免搭建的高效运维能力,减少开发及运维成本。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com