Prometheus 支持的服务发现

通过自动化的手段将被监控端监控起来,之前是每次都在普罗米修斯的配置文件里面写要监控谁,然后重载一下就生效了。最后就可以在普罗米修斯图形界面这里看到其配置了

如果被监控端的数据量很大的话,每次修改配置文件很复杂也容易出错。自动化的目的就是将预期的被监控端自动的加入监控。不需要人工干预这件事

Prometheus服务发现

Prometheus添加被监控端支持两种方式:

• 静态配置:手动配置   手动的在配置文件里面添加

• 服务发现:动态发现需要监控的Target实例

最常用的就是consul

静态配置的局限

 要了解服务发现的工作原理,我们需要回顾数据抓取的生命周期(如图所示 数据抓取生命周期 )。当Prometheus开始作业时,第一步就是服务发现,这将生成作业将要抓取的目标和元数据标签列表。

Prometheus 支持的服务发现_第1张图片

在现有的配置中,服务发现机制是在 static_configs 块中定义的: 静态服务发现 

# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).
 
# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093
 
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"
  #
  #
 
remote_write:
  - url: "http://192.168.60.100:8090/prometheus"  # 对应prometheusbeat对应IP
  
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=` to any timeseries scraped from this config.
  - job_name: 'prometheus'
 
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
 
    static_configs:
    - targets: ['localhost:9090']
 
 
  - job_name: 'pushgateway'
    scrape_interval: 10s # 每过10秒拉取一次
    honor_labels: true
    static_configs:
      - targets: ['192.168.60.100:9091']
        labels:
          instance: pushgateway

目标列表和关联标签都是采用手动服务发现的方式。不难看出,在繁杂的工作中维护一长串主机列表并不是一个可扩展的任务(HUP的Prometheus服务器也不是每次都可以优雅地启动)。尤其对于

大多数环境的动态特性,以及被监控主机、应用程序和服务的规模来说,这种局限性更为明显。因此需要更成熟的服务发现方式,那么都有哪些方案可供选择呢?我们将探索以下几种服务发现
方案:

  • 基于文件的方式
  • 基于云的方式
  • 基于DNS的方式

我们将从基于文件的服务发现开始
作业可以使用多种类型的服务发现。我们可以通过多种服务发现技术在作业中指定目标。

支持服务发现的来源

  •  azure_sd_configs
  •  consul_sd_configs
  • dns_sd_configs
  • ec2_sd_configs
  • openstack_sd_configs
  • file_sd_configs
  • gce_sd_configs
  • kubernetes_sd_configs
  • marathon_sd_configs
  • nerve_sd_configs
  • serverset_sd_configs
  • triton_sd_configs

你可能感兴趣的