SRE 必备利器:域名 DNS 探测排障工具

这篇具有很好参考价值的文章主要介绍了SRE 必备利器:域名 DNS 探测排障工具。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题背景

访问某个 HTTP 域名接口,偶发性超时,原因可能多种多样,比如 DNS 解析问题、网络质量问题、对端服务负载问题等,在客户端没有良好埋点的情况下,排查起来比较费劲,只能挨个方向尝试,这里送大家一个小工具,可以快速采样 DNS 解析延迟,快速确认是否是 DNS 解析问题。

使用演示

运行工具,传入域名,就开始探测,每秒探测一次,如果想控制频率,也可以传入第二个参数,比如 0.2 秒探测一次。

ulric@ulric-flashcat dns-lookup-latency % ./dns-lookup-latency baidu.com 0.2
Apr  7 09:25:15.414 : 26.060 ms
Apr  7 09:25:15.641 : 3.505 ms
Apr  7 09:25:15.846 : 4.584 ms
Apr  7 09:25:16.051 : 1.515 ms
Apr  7 09:25:16.253 : 6.028 ms
Apr  7 09:25:16.460 : 3.329 ms
Apr  7 09:25:16.665 : 2.943 ms
Apr  7 09:25:16.869 : 3.513 ms
Apr  7 09:25:17.073 : 1.969 ms
Apr  7 09:25:17.276 : 2.194 ms
Apr  7 09:25:17.480 : 2.394 ms
Apr  7 09:25:17.683 : 2.211 ms
Apr  7 09:25:17.886 : 3.497 ms
Apr  7 09:25:18.090 : 3.816 ms
Apr  7 09:25:18.294 : 1.672 ms
Apr  7 09:25:18.496 : 2.913 ms
Apr  7 09:25:18.700 : 2.693 ms
Apr  7 09:25:18.904 : 2.640 ms

冒号前面是时间戳,冒号后面是 DNS 解析延迟时间,单位是毫秒。对于内网域名解析,延迟一般都比较小,如果延迟偶发性变大,那就可以甩锅给 DNS 维护人员了。

工具源码

这个需求比较简单,可以用 shell 实现,不过我是用 go 实现的,代码如下:

https://github.com/UlricQin/dns-lookup-latency

package main

import (
	"fmt"
	"net"
	"os"
	"strconv"
	"time"
)

func main() {
	if len(os.Args) < 2 {
		fmt.Printf("Usage: %s <domain> <interval-seconds>\n", os.Args[0])
		os.Exit(1)
	}

	domain := os.Args[1]

	interval := 1.0
	if len(os.Args) == 3 {
		f, err := strconv.ParseFloat(os.Args[2], 64)
		if err != nil {
			fmt.Printf("failed to parse interval(%s): %v\n", os.Args[2], err)
			os.Exit(1)
		}
		interval = f
	}

	duration := time.Millisecond * time.Duration(interval*1000)

	for {
		resolveDomain(domain)
		time.Sleep(duration)
	}
}

func resolveDomain(domain string) {
	startTime := time.Now()
	_, err := net.LookupIP(domain)
	elapsed := time.Since(startTime)

	if err != nil {
		fmt.Printf("%v : %v\n", startTime.Format(time.StampMilli), err)
		return
	}

	fmt.Printf("%v : %.3f ms\n", startTime.Format(time.StampMilli), elapsed.Seconds()*1000)
}

不到 50 行代码,核心就是一个 net.LookupIP 函数,核心代码还是我向 gpt 咨询的,哈哈。另外,我给大家打包好了二进制文件,可以直接下载使用:

https://github.com/UlricQin/dns-lookup-latency/releases

如上知识,希望对你有帮助。文末请允许我插播一个小广告。本人创业两年了,我们公司的业务如下,如果你有这方面的需求,欢迎联系我们做产品技术交流哈。

🎯 关于快猫星云

快猫星云是一家云原生智能运维科技公司,由知名开源项目“夜莺(Nightingale)”的核心开发团队组成,创始团队均来⾃阿⾥、百度、滴滴等互联⽹公司。夜莺是一款开源云原生监控工具,是中国计算机学会接受捐赠并托管的第一个开源项目,在GitHub上有超过8000颗星,迭代发布了超过100多个版本,上百位社区贡献者,是国内领先的开源可观测性解决方案。

快猫星云以开源夜莺为内核打造的“Flashcat平台”,是国内顶级互联⽹公司可观测性实践的产品化落地,致力于让可观测性技术更好的服务企业,保障服务稳定性。Flashcat 平台具有以下特点:

  • 统一采集:采用插件化思路,内置集成上百种采集插件,服务器、网络设备、中间件、数据库、应用、业务,均可监控,开箱即用。
  • 统一告警:支持几十种数据源对接,收集各类监控系统的告警事件,进行统一的告警收敛、降噪、排班、认领、升级、协同,大幅提升告警处理效率。
  • 统一观测:将 Metrics、Logs、Traces、Events、Profiling 等多种可观测性数据融会贯通,并预置行业最佳实践,既提供全局业务视角、技术视角的驾驶舱,也提供层层下钻的故障定位能力,有效缩短故障发现和定位时间。

快猫星云,让可观测性数据更有价值!
https://flashcat.cloud/文章来源地址https://www.toymoban.com/news/detail-849032.html

到了这里,关于SRE 必备利器:域名 DNS 探测排障工具的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • linux DNS域名解析

    目录  一、DNS概念 二、域名格式类型 三、查询类型 四、解析类型 五、配置DNS 六、dns解析实验 1.配置正向解析 2.反向解析 3.主从解析                          一、DNS概念 概念:域名和IP地址的相互映射的分布式数据库,可以更好的访问互联网。 计算机只能访问IP地址,

    2024年02月05日
    浏览(37)
  • DNS域名查询过程

    目录 DNS(Domain Names System) 域名转IP IP转域名  域名 域名查询流程 浏览器DNS缓存 操作系统缓存 本地host文件 完整流程 递归查询 迭代查询 域名系统,将域名和 IP 地址进行转换的服务器。 域名转IP 在命令行中通过 nslookup + 域名可以查看域名解析到ip 也可以在Chrome浏览器中 c

    2024年02月03日
    浏览(30)
  • DNS(域名解析服务)

    安装DNS服务; IspSrv作为DNS的的根域 创建test1.com - test100.com,并在所有正向区域中创建一条A记录,解析到本机地址。 所有无法解析的域名均解析为本机地址 步骤一 - 添加chinaskills.global正向区域和反向区域 前提条件:安装DNS服务 有时候会添加不成功,报区域名错误,退出去重

    2024年01月23日
    浏览(26)
  • DNS(域名系统)

    DNS(Domain Name System)是一套从域名到IP的映射系统。 在网络中要确定一台主机,可以通过IP地址来做到。但是IP地址不方便记忆,于是人们发明了一种叫主机名的东西 最初时候人们把主机名和IP地址的对应关系都写在一个hosts文件里面,然后这个hosts文件由“互联网信息中心(

    2024年02月01日
    浏览(28)
  • Linux域名解析(DNS)

    域名系统(英文:Domain Name System,缩写:DNS),使用应用层协议,是互联网的一项服务。 它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。 每一台 DNS 服务器都只负责管理一个有限范围(一个或几个域)内的主机域 名和 IP 地址的对应关系

    2024年02月09日
    浏览(54)
  • DNS域名解析过程详解

    目录 一、DNS系统 二、域名 三、域名服务器 根域名服务器 顶级域名服务器 授权域名服务器 本地域名服务器 四、域名解析过程  递归查询 递归查询与迭代查询结合 主机向本地域名服务器的查询是递归查询 本地域名服务器向根域名服务器的查询是迭代查询 一次完整的DNS域名

    2024年02月10日
    浏览(33)
  • 域名系统 DNS

            域名系统 DNS(Domain Name System) 是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为 IP 地址。域名系统其实就是名字系统。为什么不叫“名字”而叫“域名”呢?这是因为在这种因特网的命名系统中使用了许多的“域(domain)”,因此就出现了“域名”

    2024年02月08日
    浏览(26)
  • DNS域名解析服务(正向、反向解析、主从域名服务器)

    在日常生活中人们习惯便用域名访问服务器,但机器间互相只认IP地址,域名与1P地址之间是多对一的关系,一个ip地址不一定只对应一个域名,且一个域名只可以对应一个ip地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,整个过程是

    2024年02月03日
    浏览(40)
  • DNS域名解析服务器

    一、DNS简介 1、因特网的域名结构 2、域名服务器的类型划分 二、DNS域名解析的过程 三、DNS服务器配置 两个都定义,ttl的优先: 能解析,不能拼通(没有13这个主机) 别名: 测试: 主(192.168.168.138): 从(192.168.168.130): 先启主,再启从: 测试: 主: 从重启也不行:没

    2024年02月11日
    浏览(31)
  • 应用层:域名系统DNS

    笔记来源: 湖科大教书匠:应用层概述 湖科大教书匠:域名系统DNS 声明:该学习笔记来自湖科大教书匠,笔记仅做学习参考 DNS报文使用运输层的UDP协议进行封装,运输层端口号53 域名系统DNS的作用 域名(www.×××.com)- DNS - IP地址 - ARP - MAC地址 因特网不能只使用一台DNS服务

    2024年02月13日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包