云原生监控系统Prometheus——服务发现(基于 DNS 的服务发现)

服务发现(基于 DNS 的服务发现)

  不是所有的应用环境都能使用 Prometheus 基于 文件 和基于 Consul 的服务 发现。假如我们的应用服务环境不支持任何现有的服务发现工具,那推荐你使用基于 DNS 的服务发现。

  此时,我们使用 DNS 解析服务中国的 SRV 资源记录功能来实现服务发现。DNS SRV 是 DNS 资源记录中的一种记录类型,用来指定服务地址和服务端口,并且可以设置每个服务地址的优先级和权重。访问服务的时候,本地的 DNS resolver 从 DNS 服务器查询到一个地址列表,根据优先级和权重,从中选取一个地址作为本次请求的目标地址。

  SRV 的记录格式如下:

_service._proto.name. TTL class SRV priority wieight port  target.

  RV 的记录格式说明如下:

  • -service:服务名称,前缀 "_" 是为防止与 DNS Label(普通域名)冲突。
  • proto:服务使用的通信协议,通常是 TCP 或 UDP 协议。
  • name: 此记录有效域名,以 .(点)结束。
  • TTL:标准 DNS TTL 字段,设置缓存有效时间。
  • class:标准 DNS class 字段,例如 IN。
  • priority:该记录优先级,数值越小优先级越高,范围 0 ~ 65535。
  • weigth:该记录的权重,数值越大权重越高,范围 0 ~ 65535.
  • port:服务使用的端口号。
  • target:提供服务的主机地址名称,以 .(点)结束。

一、自建 DNS 服务 SRV 记录设置

  在自建 DNS 服务器配置文件中,手工或使用自动化工具批量生产被监控服务的 SRV 记录,示例内容如下:

_prometheus._tcp.363.com 300 IN SRV 10 1 9100 no.zuoyang.tech.
_prometheus._tcp.363.com 300 IN SRV 10 1 9100 mo.zuoyang.tech
no	IN	A	192.168.2.122
mo	IN	A	192.168.2.121

  这里我们配置了两个自动发现 node_exporter 服务的 SRV 记录,生效后再在 Prometheus 服务中与其集成关联。编写 prometheus.yaml 文件,添加如下内容:

- job_name: "DNS_sd_node_exporter"
  dns_sd_configs:
    - names: [' _prometheus._tcp.zuoyang.tech']

  在上面 Prometheus.yml 配置文件中,使用 dns_sd_configs 来指定 Prometheus 是基于 DNS 的服务发现。同时,Prometheus 服务和被监控的服务器 DNS 服务地址均需要指向自建 DNS 服务器地址。

二、阿里云域名解析 SRV 记录设置

  当大量服务应用使用广域网进行域名解析,且需要对其使用 Prometheus 基于 DNS 服务发现进行监控时,我们需要到域名解析提供商提供的管理平台进行 SRV 记录设置。设置 SRV 解析记录的步骤就不贴了,简单的很。

  阿里云域名解析 SRV 记录设置完成后,与 Prometheus 集成关联和上面所述完全一样,这里不再详细描述。

posted @ 2022-07-22 15:31  左扬  阅读(716)  评论(0编辑  收藏  举报
levels of contents