使用 DeepFlow 开启 DNS 可观测性

云杉 世纪

2024年4月1日

云杉动态

目前针对 DNS 监控的 Grafana Dashboard 并不多,使用率较高的 Grafana CoreDNS[1] 只适用于 K8s 环境,对于云服务器、物理硬件模式下的 DNS 监控也并不通用;同时,对于应用研发人员想定位 DNS 查询异常或者时延问题时,CoreDNS 的 Dashboard 仅提供 DNS 服务端视角,无法从应用视角出发来分析问题,只能依赖自身代码增加了 DNS 日志。
明确这些问题后,我们基于 DeepFlow 构建了对一个高效、可配置、无侵入、面向应用的 DNS 监控面板,可监控 DNS 服务的网络异常、吞吐、时延,以及访问日志,以快速定位性能瓶颈和排查故障原因。部署了 DeepFlow 之后,deepflow-agent 会自动采集所在节点上的可观测数据,我们基于这些数据构建了一个 Dashboard,内容包括:
Overview
Delay
Error
Request
Log Analysis
Dashboard 介绍
接下来,详细介绍下 Dashboard 的使用
进入 Dashboard 后,可通过变量来控制需要分析的 DNS 服务端,下面详细说下变量的使用方式:
①:DNS 服务端部署在 K8s 环境中,例如 CoreDNS,使用 cluster/dns_service/dns_wildcard 变量
cluster:选择 DNS 服务端所部署的 K8s 集群
dns_service:选择 DNS 服务端对应的 K8s 服务名
dns_wildcard:通过通配符的形式筛选 dns_service
②:DNS 服务端部署在云服务器环境中,使用 dns_chost 变量
特别说明:此时需要将 cluster/dns_service 设置为Disabled
③:使用外部的 DNS 服务端,例如使用运营商提供的114.114.114.114,则在 dns_ip 变量输入对应的 IP 即可
特别说明:此时需要将 cluster/dns_service/dns_chost 设置为Disabled
④:DeepFlow 可在多个位置采集数据,可通过 tap_side 来控制需要查看的数据统计位置,位置点的详细说明

模板变量说明

设置好变量后,接下来就可以利用 Dashboard 来分析 DNS 了,通过 Overview 可快速了解 DNS 请求总量、有无异常存在、应用的 DNS 访问拓扑、DNS 响应时延的整体分布情况,得到大概总览情况后,可以结合 Error、Delay、Request 模块中的曲线快速分析问题发生的时间点,然后利用 client 分组,可快速得到触发问题发生的客户端服务
接下来可以利用 Log_Analysis 模块来详细分析发生问题的客户端服务的 DNS 请求,分析之前,需要先设置 client_for_Log_Analysis 和 status_for_Log_Analysis 变量
⑤ client_for_Log_Analysis:输入在前面模块得到的客户端服务
⑥ status_for_Log_Analysis:确定需要分析的 DNS 请求的状态
⑦ domain_for_Log_Analysis:输入需要分析的 DNS 请求的域名
通过 Log_Analysis 模块,可快速得到存在问题的 TOP N Client、Request Domain、Request Type、 Response Desc 以及客户端服务访问 DNS 的整个时延分布

Related Posts

云杉网络 DeepFlow 联合 TDSQL 完成技术兼容互认证

近日,北京云杉世纪网络科技有限公司(以下简称:云杉网络)的云原生可观测性产品 DeepFlow&nb […]

Read More

浅谈云原生可观测性生态的优化和丰富

云杉 世纪

2024年4月5日

云杉动态

云原生可观测数据中的时序数据 Metrics,在业务高基数、持久化存储、乱序写入、多租户隔离等场景下,对后端时 […]

Read More