Prometheus-4:服务自动发现Service Discovery

本文介绍了Prometheus服务自动发现的重要性,详细阐述了Prometheus指标抓取的生命周期,并通过实例演示了基于文件和Consul注册中心的两种自动发现方式。在Consul自动发现中,讨论了服务部署、配置更新以及API和命令行注册服务的方法。
摘要由CSDN通过智能技术生成

Prometheus的服务发现的几种类型:

  • 基于文件的服务发现;
  • 基于DNS的服务发现;
  • 基于API的服务发现:Kubernetes、Consul、Azure......

Prometheus为什么需要自动发现?#

Prometheus Server的数据抓取工作于Pull模型,因而,它必需要事先知道各Target的位置,然后才能从相应的Exporter或Instrumentation中抓取数据,

对于小型系统来说,通过static_configs就可以解决此问题,这也是最简单的配置方法;

对于中大型系统环境或具有较强动态性的云计算环境来说,静态配置显然难以适用,因此,Prometheus为此专门设计了一组服务发现机制,以便能够通过服务注册中心自动发现、检测、分类可被检测的各target,以及更新发生了变动的target。

Prometheus指标抓取的生命周期#

发现 -> 配置 -> relabel -> 指标数据抓取 -> metrics relabel

  1. 在每个scrape_interval期间,Prometheus都会检查执行的作业(Job);
  2. 这些作业首先会根据Job上指定的发现配置生成target列表,此即服务发现过程;
  3. 服务发现会返回一个Target列表,其中包含一组称为元数据的标签,这些标签都以“__meta_”为前缀;
  4. 服务发现还会根据目标配置来设置其它标签,这些标签带有“__”前缀和后缀,包括“__scheme__”、 “__address__”和“__metrics_path__”,分别保存有target支持使用协议(http或https,默认为http)、target的地址及指标的URI路径(默认为/metrics);
  5. 若URI路径中存在任何参数,则它们的前缀会设置为“__param_;
  6. 配置标签会在抓取的生命周期中被重复利用以生成其他标签,例如,指标上的instance标签的默认值就来自于__address__标签的值;
  7. 抓取而来的指标在保存之前,还允许用户对指标重新打标并过滤,在job段metric_relabel_configs配置,通常用来删除不需要的指标、删除敏感或不必要的标签和添加修改标签格式等。

自动发现的几种方式演示#

基于文件的自动发现#

此种类型也是最简单的服务发现方式,主要是通过Prometheus Server定期从文件中加载target的信息。

文件可以是json或者yaml格式,它含有定义的target列表,以及可选的标签信息。

vi prometheus.yml

# static config nodes
  - job_name: 'nodes'
    file_sd_configs:
    - files:                                               
      - targets/nodes-*.yaml  
      refresh_interv
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你已经配置了`micrometer-prometheus-discovery`,但在Prometheus的targets中仍然没有出现服务,可能有几个原因需要排查: 1. 确保micrometer-prometheus-discovery被正确添加到项目依赖中,并且版本与其他库兼容。你可以检查一下你的项目配置或构建脚本中的依赖项,确保`micrometer-prometheus-discovery`库被正确引入。 2. 检查micrometer配置是否正确:确保你已经正确配置了micrometer来使用`PrometheusMeterRegistry`,并启用了自动发现功能。你可以检查一下你的micrometer配置文件或代码中的相关配置,并确保已经启用了自动发现。 3. 检查Prometheus配置是否正确:请确保在Prometheus的配置文件中,已经添加了正确的`job_name` 和 `metrics_path` 配置,以便Prometheus可以正确访问和抓取micrometer暴露的指标。验证一下Prometheus的配置文件是否正确并且已经重新加载。 4. 检查服务发现的配置是否正确:如果你使用了其他服务发现机制(如Kubernetes的服务发现),请确保你已经正确配置了服务发现的相关配置。例如,在Kubernetes中,你需要正确设置Service和Endpoints对象的标签和注解,以便Prometheus可以通过Kubernetes SD进行服务发现。 5. 检查日志和错误信息:查看应用程序、micrometer和Prometheus的日志,以查找任何可能的错误或警告信息。这些信息可能会提供更多的线索,帮助你解决问题。 如果仍然无法解决问题,你可能需要进一步调查和分析系统的配置和日志,或者在相关社区或论坛上提问以获取更多帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值