写点什么

07 Prometheus 之服务发现

  • 2022 年 1 月 07 日
  • 本文字数:815 字

    阅读完需:约 3 分钟

07 Prometheus之服务发现

我们安装了 exporter,并且抓取了主机和容器指标。对于指定的每个目标,我们在抓取配置中手动列出了它们的 IP 地址和端口。这种方法在主机较少时还可以,但不适用于规模较大的集群,尤其不适用于使用容器和基于云的实例的动态集群,这些实例经常会出现变化、创建或销毁的情况。Prometheus 通过使用服务发现解决了这个问题:通过自动化的机制来检测、分类和识别新的和变更的目标。服务发现可以通过以下几种机制实现:

从配置管理工具生成的文件中接收目标列表

查询 API(例如 Amazon AWS API)以获取目标列表

使用 DNS 记录以返回目标列表


基于文件的发现只比静态配置更先进一小步,但它非常适合配置管理工具。借助基于文件的服务发现,Prometheus 会使用文件中指定的目标。这些文件通常由另一个系统生成,例如 Puppet、Ansible 或 Chef 等配置管理系统,或者从其他源(如 CMDB)查询。定期执行脚本或进行查询可以(重新)生成这些文件。Prometheus 会按指定的时间计划从这些文件重新加载目标。


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

Amazon EC2、Azure、Consul、Google Compute Cloud、Kubernetes。


Amazon EC2 服务发现插件使用 Amazon Web Services EC2 API 来获取 EC2 实例列表,以用作 Prometheus 目标。要使用服务发现插件,你需要拥有 AWS 账户。


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


Prometheus 的 DNS 服务发现假定你会查询 SRV 或服务记录。服务记录是一种在 DNS 配置中定义服务的方法,服务通常由运行服务的一个或多个目标主机和端口组合组成。


发布于: 刚刚阅读数: 2
用户头像

InfoQ签约作者 2018.11.30 加入

热爱生活,收藏美好,专注技术,持续成长

评论

发布
暂无评论
07 Prometheus之服务发现