1. 初探--prometheus调研 (6)

  上面的部分,根据不同的场景演示了3种不同的高可用部署方案。当然对于Promthues部署方案需要用户根据监控规模以及自身的需求进行动态调整,下表展示了Promthues和高可用有关3个选项各自解决的问题,用户可以根据自己的需求灵活选择

 

选项\需求

 

服务可用性

 

数据持久化

 

水平扩展

 

主备HA

 

v

 

x

 

x

 

远程存储

 

x

 

v

 

x

 

联邦集群

 

x

 

x

 

v

 
四、服务发现 4.1 Prometheus与服务发现

  云原生、容器场景下按需的资源使用方式对于监控系统而言就意味着没有了一个固定的监控目标,所有的监控对象(基础设施、应用、服务)都在动态的变化,这对基于Push模式传统监控软件带来挑战。

  对于Prometheus这一类基于Pull模式的监控系统,显然也无法继续使用的static_configs的方式静态的定义监控目标。而对于Prometheus而言其解决方案就是引入一个中间的代理人(服务注册中心),这个代理人掌握着当前所有监控目标的访问信息,Prometheus只需要向这个代理人询问有哪些监控目标控即可, 这种模式被称为服务发现。 

1. 初探--prometheus调研


4.2
基于文件的服务发现通过服务发现的方式,管理员可以在不重启
Prometheus服务的情况下动态的发现需要监控的Target实例信息。

  用户可以通过JSON或者YAML格式的文件,定义所有的监控目标。例如,在下面的JSON文件中分别定义了3个采集任务,以及每个任务对应的Target列表:

[

  {

    "targets": [ "localhost:8080"],

    "labels": {

      "env": "localhost",

      "job": "cadvisor"

    }

  },

  {

    "targets": [ "localhost:9104" ],

    "labels": {

      "env": "prod",

      "job": "mysqld"

    }

  },

  {

    "targets": [ "localhost:9100"],

    "labels": {

      "env": "prod",

      "job": "node"

    }

  }

]

  创建Prometheus配置文件/etc/prometheus/prometheus-file-sd.yml,并添加以下内容:

 

global:

  scrape_interval: 15s

  scrape_timeout: 10s

  evaluation_interval: 15s

scrape_configs:

- job_name: 'file_ds'

  file_sd_configs:

- refresh_interval: 1m

   files:

    - targets.json

  通过这种方式,Prometheus会自动的周期性读取文件中的内容。当文件中定义的内容发生变化时,不需要对Prometheus进行任何的重启操作。

4.3基于Consul的服务发现

  Consul是由HashiCorp开发的一个支持多数据中心的分布式服务发现和键值对存储服务的开源软件,被大量应用于基于微服务的软件架构当中

  Consul作为一个通用的服务发现和注册中心,记录并且管理了环境中所有服务的信息。Prometheus通过与Consul的交互可以获取到相应Exporter实例的访问信息。在Prometheus的配置文件当可以通过以下方式与Consul进行集成:

- job_name: node_exporter

    metrics_path: /metrics

    scheme: http

    consul_sd_configs:

      - server: localhost:8500 #指定了consul的访问地址

        services:   #为注册到consul中的实例信息

          - node_exporter

- cadvisor

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zydwfz.html