【Prometheus】【Blackbox_exporter】深入理解Blackbox_exporter的 DNS 查询探针函数

在这篇技术博文中,我们将逐步解析 Go 语言中一个处理 DNS 查询的函数 ProbeDNS。该函数用于探测 DNS 服务的可用性,并将相关信息记录到 Prometheus 指标中。此类探针对于网络监控和故障诊断非常重要,尤其是在需要实时监控 DNS 响应的场景中。下面,我们将详细介绍每个代码块的含义和作用。

1. 函数签名与变量声明

func ProbeDNS(ctx context.Context, target string, module config.Module, registry *prometheus.Registry, logger *slog.Logger) bool {
   
    var dialProtocol string
    probeDNSDurationGaugeVec := prometheus.NewGaugeVec(prometheus.GaugeOpts{
   
        Name: "probe_dns_duration_seconds",
        Help: "Duration of DNS request by phase",
    }, []string{
   "phase"})
    probeDNSAnswerRRSGauge := prometheus.NewGauge(prometheus.GaugeOpts{
   
        Name: "probe_dns_answer_rrs",
        Help: "Returns number of entries in the answer resource record list",
    })
    probeDNSAuthorityRRSGauge := prometheus.NewGauge(prometheus.GaugeOpts{
   
        Name: "probe_dns_authority_rrs",
        Help: "Returns number of entries in the authority resource record list",
    })
    probeDNSAdditionalRRSGauge := prometheus.NewGauge(prometheus.GaugeOpts{
   
        Name: "probe_dns_additional_rrs",
        Help: "Returns number of entries in the additional resource record list",
    })
    probeDNSQuerySucceeded := prometheus.NewGauge(prometheus.GaugeOpts{
   
        Name: "probe_dns_query_succeeded",
        Help: "Displays whether or not the query was executed successfully",
    })
解释:
  • 函数 ProbeDNS 的目的是探测 DNS 服务并记录各种指标。
  • 函数首先声明了多个 Prometheus 指标(GaugeVecGauge),用于监控 DNS 请求的各个阶段和返回的资源记录:
    • probeDNSDurationGaugeVec: 用于跟踪 DNS 请求在不同阶段的持续时间(如解析、连接、请求)。
    • probeDNSAnswerRRSGauge: 跟踪 DNS 响应中的回答资源记录数量。
    • probeDNSAuthorityRRSGauge: 跟踪 DNS 响应中的授权资源记录数量。
    • probeDNSAdditionalRRSGauge: 跟踪 DNS 响应中的附加资源记录数量。
    • probeDNSQuerySucceeded: 标记 DNS 查询是否成功执行。

2. 注册指标

for _, lv := range []string{
   "resolve", "connect", "request"} {
   
    probeDNSDurationGaugeVec.WithLabelValues(lv)
}

registry.MustRegister(probeDNSDurationGaugeVec)
registry.MustRegister(probeDNSAnswerRRSGauge)
registry.MustRegister(probeDNSAuthorityRRSGauge)
registry.MustRegister(probeDNSAdditionalRRSGauge
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值