云原生监控系统Prometheus——服务发现(基于 DNS 的服务发现)
服务发现(基于 DNS 的服务发现)
不是所有的应用环境都能使用 Prometheus 基于 文件 和基于 Consul 的服务 发现。假如我们的应用服务环境不支持任何现有的服务发现工具,那推荐你使用基于 DNS 的服务发现。
此时,我们使用 DNS 解析服务中国的 SRV 资源记录功能来实现服务发现。DNS SRV 是 DNS 资源记录中的一种记录类型,用来指定服务地址和服务端口,并且可以设置每个服务地址的优先级和权重。访问服务的时候,本地的 DNS resolver 从 DNS 服务器查询到一个地址列表,根据优先级和权重,从中选取一个地址作为本次请求的目标地址。
SRV 的记录格式如下:
1 | _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 记录,示例内容如下:
1 2 3 4 | _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 文件,添加如下内容:
1 2 3 | - 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 集成关联和上面所述完全一样,这里不再详细描述。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具