热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PrometheusConsul服务发现

本文记录Prometheus如何从Consul获取scrapetarget。文章目录集成consul1.启动prometheus,grafana,consul2.启动node-ex

本文记录Prometheus如何从Consul获取scrape target。

文章目录

    • 集成consul
      • 1. 启动prometheus,grafana,consul
      • 2. 启动node-exporter
      • 3. prometheus.yaml添加consul服务地址
      • 4. node-exporter注册到consul
        • 请求体
        • 注册命令
      • 5. prometheus UI查看从consul获取的服务注册项
      • 6. grafana查看node-exporter指标图形
        • 1. 加入Datasource
        • 2. 导入Dashboard
        • 3. 观察dashboard
      • 7. 总结

一般情况下,prometheus.yml配置static_configs静态配置scrape target。但是在服务动态变化的容器环境下,静态配置是不现实的。
所以需要接入注册中心,prometheus支持多种注册中心,本节只记录consul集成。

流程大概:

  1. 应用服务注册(以node-exporter为例)到注册中心consul
  2. prometheus请求注册中心获取服务注册项和metric接口地址
  3. prometheus周期性请求metric地址获取监控指标

集成consul


1. 启动prometheus,grafana,consul

prometheus+grafana+consul

  • docker
  • docker-compose

version: "3"networks:grafana:volumes:app_data: {}services:prometheus:image: prom/prometheus:v2.21.0volumes:- ./prometheus/:/etc/prometheus/command:- "--config.file=/etc/prometheus/prometheus.yml"- "--storage.tsdb.path=/prometheus"ports:- 9090:9090networks:- grafanaloki:image: grafana/loki:1.6.1ports:- 3100:3100command: -config.file=/etc/loki/local-config.yamlnetworks:- grafanapromtail:image: grafana/promtail:1.6.1volumes:- app_data:/var/lognetworks:- grafanagrafana:image: grafana/grafana:7.3.6ports:- 3000:3000networks:- grafanaapp:build: ./appports:- 8081:80volumes:- app_data:/var/lognetworks:- grafanadb:image: grafana/tns-db:latestports:- 8082:80networks:- grafanaconsul:image: consul:latestports:- 8500:8500networks:- grafana

2. 启动node-exporter

使用容器方式启动 node-exporter

version: '3.2'services:node-exporter:image: prom/node-exporter:latestcontainer_name: node-exporterrestart: unless-stoppedports:- '9100:9100'command:- '--path.procfs=/host/proc'- '--path.sysfs=/host/sys'- '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)'- '--collector.textfile.directory=/node_exporter/prom'volumes:- /proc:/host/proc- /sys:/host/sys- /:/rootfs

启动命令:

docker-compose up -d

3. prometheus.yaml添加consul服务地址

consul_sd_configs 是prometheus集成consul,从consul获取target的配置命令。实际上还有很多其他的如文件,etcd等。参考:prometheus CONFIGURATION

global:scrape_interval: 15s # 配置每15s 请求一次consul
scrape_configs:- job_name: 'consul-prometheus'consul_sd_configs:- server: 'consul:8500' # consul的服务地址services: []

4. node-exporter注册到consul

请求consul的HTTP API将服务node-exporter注册到consul中。

请求体

将下面文件保存exporter.json

{"ID": "node-exporter","Name": "node-exporter-192.168.10.100","Tags": ["test"],"Address": "192.168.10.100","Port": 9100,"Meta": {"app": "test-exporter-in-consul"},"EnableTagOverride": false,"Check": {"HTTP": "http://192.168.10.100:9100/metrics","Interval": "10s"},"Weights": {"Passing": 10,"Warning": 1}
}

注册命令

# exporter.json会作为PUT请求的body
# http://${consul_host}:${consul_port}/v1/agent/service/register?replace-existing-checks=1 为consul注册服务的API
curl --request PUT --data @exporter.json http://${consul_host}:${consul_port}/v1/agent/service/register?replace-existing-checks=1

5. prometheus UI查看从consul获取的服务注册项

Status -> Target
在这里插入图片描述

6. grafana查看node-exporter指标图形


1. 加入Datasource

在这里插入图片描述
选择prometheus,输入prometheus的地址,点击Save & Test

docker-compose提供DNS能力,处于同一network下面的容器可以使用配置的service名字作为DNS访问

在这里插入图片描述

2. 导入Dashboard

点击Load,后面选择数据源prometheus

grafana labs维持了一个dashboard的库,每个dashboard模板都有一个唯一ID. 这里只要输入dashboard
ID就可以引入该模板。 此处使用 Node Exporter Full

在这里插入图片描述

3. 观察dashboard

HOME- >选择dashboard

在这里插入图片描述
点击命名的Dashboard就可以看到node-exporter的指标可视化数据了。

在这里插入图片描述

7. 总结

prometheus支持多种服务注册中心,获取服务中心的服务注册项和metric path,定期请求metric path获取服务的监控数据。prometheus针集成每种服务注册中心都有对应的*_sd_config(服务发现配置,本例为consul_sd_config).

当然服务在哪里注册,最终都是服务注册项,最终都存储在prometheus TSDB中。

grafana本身不负责存储数据,只是使用PromQL请求prometheus的HTTP API获取数据,进行可视化展示。


推荐阅读
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • Spring学习(4):Spring管理对象之间的关联关系
    本文是关于Spring学习的第四篇文章,讲述了Spring框架中管理对象之间的关联关系。文章介绍了MessageService类和MessagePrinter类的实现,并解释了它们之间的关联关系。通过学习本文,读者可以了解Spring框架中对象之间的关联关系的概念和实现方式。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • uniapp开发H5解决跨域问题的两种代理方法
    本文介绍了uniapp开发H5解决跨域问题的两种代理方法,分别是在manifest.json文件和vue.config.js文件中设置代理。通过设置代理根域名和配置路径别名,可以实现H5页面的跨域访问。同时还介绍了如何开启内网穿透,让外网的人可以访问到本地调试的H5页面。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
author-avatar
lookadgo_544
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有