Prometheus结合Consul实现自助服务发现


系列文章目录

第一章:超详细 CentOS7安装部署Prometheus及其简单使用(exporter、探针、告警)
第二章:超详细 Centos7下Prometheus Alertmanager配置钉钉告警与邮箱告警(已亲手验证)
第三章:CentOS7中Prometheus PushGateway的使用
第四章(当前):Prometheus结合Consul实现自助服务发现
第五章:CentOS7中使用Prometheus 集成 mtail 实现错误日志采集
扩展:CentOS7中使用Prometheus Process-exporter监控进程状态
扩展:CentOS7中使用Prometheus监控Windows主机


一、Consul简介

Consul 介绍

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

Consul 特性

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

Consul角色

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

Consul 官网

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

二、Consul部署

1,二进制部署Consul


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版本信息

./consul  version

3,启动consul

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

consul启动参数介绍

-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

4,浏览器访问Consul Web

http://192.168.168.12:8500

在这里插入图片描述

5、使用Consul API 注册 node-exporter 服务到 Consul

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

如果没有安装node-exporter,请先安装,参考:
超详细 CentOS7安装部署Prometheus及其简单使用(exporter、探针、告警)
在这篇文章的二、node-exporter部署

然后使用Consul API注册"id=node-exporter"服务到consul中

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

前面的ip写node-exporter的地址,最后一个ip写consul的地址

6、Consul Web 界面查看注册服务

在这里插入图片描述

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

curl -X PUT http://192.168.168.12:8500/v1/agent/service/deregister/node-exporter

三、将Prometheus与consul集成

1、Prometheus 实现自动服务发现

vim  /usr/local/prometheus/prometheus.yml

添加

  - job_name: 'consul-node-exporter'
    consul_sd_configs:
      - server: '192.168.168.12: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 用来实现自定义标签及分类

2、检查prometheus.yml文件格式

/usr/local/prometheus/promtool   check config /usr/local/prometheus/prometheus.yml

3、Prometheus的热加载配置或重启

curl  -X POST http://127.0.0.1:9090/-/reload
systemctl restart prometheus

4、访问Prometheus的web界面

注意:consul中至少要添加一个服务才能在这里显示出来!
查看Targets
在这里插入图片描述
查看 Service Discovery
在这里插入图片描述

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

curl -X PUT http://192.168.168.12:8500/v1/agent/service/deregister/node-exporter

  • 26
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值