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

原文地址:https://www.cnblogs.com/dalianpai/p/13689965.html