prometheus基于consul的服务发现

consul在微服务中用于服务注册与发现的,在prometheus中也可以用于被监控对象的自动发现,这样就实现了在不修改prometheus配置文件、不重启的情况下,自动发现exporter并将其加入到监控范围

运行consul

可以去官网下载二进制安装包,但这里我还是推荐使用docker,快速上手
docker run -d --rm --name=consul -p 8500:8500 consul:1.15.4

浏览器访问 IP:8500 到consul的services页面,可见现在只有一个consul服务:

运行prometheus

修改默认配置文件为如下内容:

yaml 复制代码
# ...
scrape_configs:
  - job_name: "prometheus"

# 注释掉之前静态配置的内容
#    static_configs:
#      - targets: ["localhost:9090"]

# 修改服务发现为 consul_sd_configs:
	consul_sd_configs:
	- server: 'consul_ip:8500'
	  services: ['node_exporter']

启动prometheus容器:
docker run -d -p 9090:9090 -v $(pwd)/prometheus.yml:/opt/bitnami/prometheus/conf/prometheus.yml --name prometheus --rm bitnami/prometheus

浏览器访问 IP:9090 到prometheus的targets页面,目前也是一个target都没有

将node_exporter注册到consul

这里采用发HTTP请求的方式注册.先写一个注册的shell脚本

register_consul.sh:

shell 复制代码
#!/bin/bash
NodeExporterIP=""
NodeExporterPort=9200
ServiceID="node_exporter1"  # 服务唯一标记,随便写,只要保证唯一就行,一般是uuid
ServiceName="node_exporter"  # (一组)服务的名称

consulIP=""
consulPort=8500

curl -X PUT -d '{
  "id": "'$ServiceID'",
  "name": "'$ServiceName'",
  "address": "'$NodeExporterIP'",
  "port": '$NodeExporterPort',
  "tags": ["node_exporter"],
  "checks": [
    {
      "http": "http://'$NodeExporterIP':'$NodeExporterPort'/metrics",
      "interval": "10s"
    }
  ]
}' http://$consulIP:$consulPort/v1/agent/service/register

注册脚本可以写到node_exporter的启动脚本中(比如systemctl的service或者单独的shell脚本),这样就能在node_exporter启动时,自动注册到consul

运行脚本后到consul和prometheus页面上就能发现刚刚注册的服务和target:

注销服务脚本,deregister_consul.sh:

shell 复制代码
#!/bin/bash
ServiceID="node_exporter1"

consulIP=""
consulPort=8500

curl -X PUT http://$consulIP:$consulPort/v1/agent/service/deregister/$ServiceID

服务从consul注销后,prometheus也会自动将其从targets中移除

相关推荐
Cherry的跨界思维9 天前
【AI测试全栈:质量】47、Vue+Prometheus+Grafana实战:打造全方位AI监控面板开发指南
vue.js·人工智能·ci/cd·grafana·prometheus·ai测试·ai全栈
至此流年莫相忘9 天前
Kubernetes实战篇之服务发现
容器·kubernetes·服务发现
AC赳赳老秦9 天前
云原生AI故障排查新趋势:利用DeepSeek实现高效定位部署报错与性能瓶颈
ide·人工智能·python·云原生·prometheus·ai-native·deepseek
予枫的编程笔记9 天前
【Kafka高级篇】Kafka监控不踩坑:JMX指标暴露+Prometheus+Grafana可视化全流程
kafka·grafana·prometheus·可观测性·jmx·kafka集群调优·中间件监控
AC赳赳老秦9 天前
预见2026:DeepSeek与云平台联动的自动化流程——云原生AI工具演进的核心引擎
人工智能·安全·云原生·架构·自动化·prometheus·deepseek
认真的薛薛9 天前
13.k8s中Prometheus监控集群及其服务,endpoint暴露服务,es采集k8s日志
elasticsearch·kubernetes·prometheus
A-刘晨阳10 天前
K8S部署kube-state-metrics + CAdvisor 并使用 Prometheus 监控 Kubernetes 指标
运维·云原生·kubernetes·云计算·prometheus·cadvisor·state-metrics
AC赳赳老秦11 天前
多模态 AI 驱动办公智能化变革:DeepSeek 赋能图文转写与视频摘要的高效实践
java·ide·人工智能·python·prometheus·ai-native·deepseek