zoukankan      html  css  js  c++  java
  • Prometheus服务发现

    Prometheus服务发现

    目标列表和关联标签都是采用手动服务发现的方式。不难看出,在繁杂的工作中维护一长串主机列表并不是一个可扩展的任务(HUP的Prometheus服务器也不是每次都可以优雅地启动)。尤其对于大多数环境的动态特性,以及被监控主机、应用程序和服务的规模来说,这种局限性更为明显。因此需要更成熟的服务发现方式。

    探索以下几种服务发现方案:

    • 通过配置管理工具填充的文件接收目标列表。
    • 查询API(如Amazon AWS API)以获取目标列表。
    • 使用DNS记录返回目标列表。

    基于文件发现

    基于文件的发现只是比静态配置更高级的一小步,但是它对于配置管理工具的配置非常有用。通过基于文件的发现,普罗米修斯使用文件中指定的目标。这些文件通常由另一个系统生成,例如配置管理系统,如Puppet、Ansible,或者从另一个源(如CMDB)查询。定期运行脚本或查询,或触发它们(重新)填充这些文件。然后,普罗米修斯按照指定的时间表从这些文件中重新加载目标。
    这些文件可以是YAML或JSON格式,并包含定义的目标列表,就像我们在静态配置中定义它们一样。

    image-20200918104234369

      - job_name: 'node'
        file_sd_configs:
          - files:
            - targets/nodes/*.json
            refresh_interval: 5m
      - job_name: 'docker'
        file_sd_configs:
          - files:
            - targets/docker/*.yml
            refresh_interval: 5m
    

    查看配置文件

    [root@localhost prometheus]# cd targets/
    [root@localhost targets]# ll
    总用量 0
    drwxr-xr-x. 2 root root 24 9月  18 10:37 docker
    drwxr-xr-x. 2 root root 24 9月  18 10:40 nodes
    [root@localhost targets]# cat docker/docker.yml
    - targets:
      - "192.168.1.124:8080"
    [root@localhost targets]# cat nodes/nodes.json
    [{
      "targets": [
         "192.168.1.124:9100"
        ]
    }]
    [root@localhost targets]#
    
    

    image-20200918104357377

    基于API的服务

    发现原生的服务发现集成在某些工具和平台上提供,它们内置支持Prometheus。这些服务发现插件使用工具和平台现有的数据存储或API来返回目标列表。当前可用的本机服务发现插件包括以下平台:

    • Amazon EC2

    • Azure

    • Consul

    • Google Compute Cloud

    • Kubernetes

    下面我在研究发现Consul中的服务

    基于DNS的服务

    发现如果基于文件的服务发现不适合你,或者你的源或服务不支持任何现有的服务发现工具,则可以选择基于DNS的服务发现。DNS服务发现允许你指定DNS条目列表,然后查询这些条目中的记录以发现目标列表。它依赖于A、AAAA或SRV DNS记录查询。提示 DNS记录将由Prometheus服务器上本地定义的DNS服务器解析。例如,Linux上的/etc/resolv.conf。让我们看一下使用DNS服务发现的新作业。

    这里有点懵,实验就不做了

    DNS服务发现依赖于查询A、AAAA或SRV DNS记录。
    # 基于 SRV 记录发现
    scrape_configs:
    - job_name: ‘webapp'
    dns_sd_configs:
    - names: [‘_prometheus._tcp.xiodi.cn’]
    注意:_prometheus 为服务名称,_tcp 为协议, xiodi.cn 为域名
    # 基于 A 记录
    - job_name: 'webapp'
    dns_sd_configs:
    - names: [ 'c720174.xiodi.cn']
    type: A
    port: 9090
    

    image-20200918104855408

  • 相关阅读:
    分布式版本控制系统Git-----5.Git 的push命令总结
    分布式版本控制系统Git-----4.Git 常用命令整理
    分布式版本控制系统Git-----3.图形化Tortoisegit创建本地库并且提交到远程服务器上
    分布式版本控制系统Git-----2.上传至远程仓库之基础版
    分布式版本控制系统Git-----1.Git 初识
    JavaWeb笔记03-Servlet
    JavaWeb笔记01-XML
    Emmet的html语法
    npm常用命令
    Node.js中事件的循环
  • 原文地址:https://www.cnblogs.com/dalianpai/p/13689965.html
Copyright © 2011-2022 走看看