CoreDNS实战(五)-接入prometheus监控

news2025/1/24 8:51:06

1 背景

Prometheus插件作为coredns的Plugins,默认情况下是内置在coredns中,如果是自己编译安装的版本,需要注意在编译安装的时候的plugin.cfg文件中添加了prometheus:metrics,这样才能确保编译成功。

 # 首先我们检查一下运行的版本
 [root@tiny-server coredns]# ./coredns -plugins | grep prometheus
   dns.prometheus

2 概述

prometheus 插件主要用于暴露CoreDNS相关的监控数据,除了coredns本身外,其他支持prometheus的插件(如cache插件)在启用的时候也可以通过prometheus插件暴露出相关的监控信息,默认情况下暴露出的监控数据在localhost:9153,路径为/metrics配置文件中的每个server块只能使用一次prometheus下面是一些coredns自身相关的指标:

  • coredns_build_info{version, revision, goversion} - 关于 CoreDNS 本身的信息
  • coredns_panics_total{} - panics的总数
  • coredns_dns_requests_total{server, zone, proto, family, type} - 总查询次数
  • coredns_dns_request_duration_seconds{server, zone, type} - 处理每个查询的耗时
  • coredns_dns_request_size_bytes{server, zone, proto} - 请求的大小(以bytes为单位)
  • coredns_dns_do_requests_total{server, zone} - 设置了 DO 位的查询(queries that have the DO bit set)
  • coredns_dns_response_size_bytes{server, zone, proto} - 响应的大小(以bytes为单位)
  • coredns_dns_responses_total{server, zone, rcode} - 每个zone的响应码和数量
  • coredns_plugin_enabled{server, zone, name} - 每个zone上面的各个插件是否被启用

需要注意的是上面频繁出现的几个标签(label),这里额外做一些解释:

  • zone:每个request/response相关的指标都会有一个zone的标签,也就是上述的大多数监控指标都是可以细化到每一个zone的。这对于需要具体统计相关数据和监控排查问题的时候是非常有用的
  • server:是用来标志正在处理这个对应请求的服务器,一般的格式为<scheme>://[<bind>]:<port>,默认情况下应该是dns://:53,如果使用了bind插件指定监听的IP,那么就可能是dns://127.0.0.53:53这个样子
  • proto:指代的就是传输的协议,一般就是udp或tcp
  • family:指代的是传输的IP协议代数,(1 = IP (IP version 4), 2 = IP6 (IP version 6))
  • type:指代的是DNS查询的类型,这里被分为常见的如(A, AAAA, MX, SOA, CNAME, PTR, TXT, NS, SRV, DS, DNSKEY, RRSIG, NSEC, NSEC3, IXFR, AXFR and ANY) 和其他类型 “other”

If monitoring is enabled, queries that do not enter the plugin chain are exported under the fake name “dropped” (without a closing dot - this is never a valid domain name).

3 配置

coredns中想要启用prometheus插件,只需要在对应的zone中加上这一行配置即可,默认监听的是本机127.0.0.1的9153端口,当然也可以根据自己的需要更改监听的网卡和端口。

Syntax
prometheus [ADDRESS]

我们直接来看一段配置:

 tinychen.com:53 {
     forward tinychen.com 47.107.188.168
     prometheus
 }
 ​
 google.com:53 {
     forward google.com 8.8.8.8 9.9.9.9
     prometheus 192.168.100.100:9253
 }
 ​
 example.org {
     file /home/coredns/conf/example.org
 }

prometheus的生效范围是按照zone来划分的,在上面的这个配置中:

  • tinychen.com:53这个域使用的是Prometheus的默认配置,那么此时的监听情况就是默认的127.0.0.1的9153端口,请求http://127.0.0.1:9153/metrics/这个地址就能够获取到tinychen.com:53这个域的监控信息
  • 同理在http://192.168.100.100:9253/metrics/这个地址能够获取到google.com:53这个域的监控信息
  • example.org 这个域因为没有添加prometheus指令,所以在任何地址都不会暴露相关的监控信息

如果有多个zone,每个zone都有相同的基础配置,也可以使用import指令,如:

tinychen.com:53 {
     forward tinychen.com 47.107.188.168
     log
     whoami
     errors
     prometheus 192.168.100.100:9253
     bind 192.168.100.100
     cache {
         success 10240 600 60
         denial 5120 60 5
     }
 }
 ​
 google.com:53 {
     forward google.com 8.8.8.8 9.9.9.9
     log
     whoami
     errors
     prometheus 192.168.100.100:9253
     bind 192.168.100.100
     cache {
         success 10240 600 60
         denial 5120 60 5
     }
 }
 ​
 example.org {
     file /home/coredns/conf/example.org
     log
     whoami
     errors
     prometheus 192.168.100.100:9253
     bind 192.168.100.100
     cache {
         success 10240 600 60
         denial 5120 60 5
     }
 }

可以简化成这样:

 (basesnip) {
     log
     whoami
     errors
     prometheus 192.168.100.100:9253
     bind 192.168.100.100
     cache {
         success 10240 600 60
         denial 5120 60 5
     }
 }
 ​
 tinychen.com:53 {
     forward tinychen.com 47.107.188.168
     import basesnip
 }
 ​
 google.com:53 {
     forward google.com 8.8.8.8 9.9.9.9
     import basesnip
 }
 ​
 example.org {
     file /home/coredns/conf/example.org
     import basesnip
 }

4 grafana配置dashboard

coredns原生支持的prometheus指标数量和丰富程度在众多DNS系统中可以说是首屈一指的,此外在grafana的官网上也有着众多现成的dashboard可用,并且由于绝大多数指标都是通用的,多个不同的dashboard之间的panel可以随意复制拖拽组合成新的dashboard并且不用担心兼容性问题。我们可以很容易的根据自己的实际需求配置对应的权威/递归/组合DNS相关的监控项。

grafana插件:https://grafana.com/grafana/dashboards?search=coredns

如上图我们可以看到能够监控出不同DNS类型的请求数量以及不同的zone各自的请求数量,还有其他的类似请求延迟、请求总数等等各项参数都能完善地监控起来。

如上图我们能看到可以监控到不同的请求的传输层协议状态,缓存的大小状态和命中情况等各种信息。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1289687.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

万亿氢能产业链崛起,汉威科技助力安全发展

近年来化石能源的大量使用带来了碳排放急剧上升、环境污染、极端天气频发、全球变暖等一系列问题&#xff0c;加之化石能源储量日益减少&#xff0c;各国不得不考虑重构能源体系&#xff0c;寻找化石能源的替代方案&#xff0c;努力降低碳排放。 在此背景下&#xff0c;氢能成…

gmid方法设计五管OTA二级远放

首先给出第一级是OTA&#xff0c;第二级是CS的二级运放电路图&#xff1a; gmid的设计方法可以根据GBW、Av、CL来进行电路设计&#xff0c;因此在设计电路之前需要以上的参数要求。 1、为了满足电路的相位裕度至少60&#xff0c;需要对GBW、主极点、零点进行分析。 首先给出其…

Python Dask库:大数据处理的利器

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com Dask是一个灵活、开源的Python库&#xff0c;专为处理大规模数据集而设计。与传统的单机计算相比&#xff0c;Dask能够在分布式系统上运行&#xff0c;有效利用集群的计算资源。本文将深入介绍Dask的核心概念、功…

近期Google paly再次卡审?需要开发者提供更多关于应用的信息以通过谷歌审查?

谷歌政策更新得越来越频繁&#xff0c;也越来越严格&#xff0c;加大了对应用的审核力度。 最近&#xff0c;不少开发者表示&#xff0c;谷歌卡审又出新花样了。与之前收到暂停审核电话验证邮件&#xff08;需要在48-72小时内&#xff0c;拨打你开发者账号的号码&#xff0c;应…

IDEA 修改encoding

IDEA 修改encoding 现象&#xff1a;idea展示乱码 打开Settings>>File Encodings&#xff0c;修改为UTF-8即可

ahk系列-windows超级运行框-表达式计算(12)—功能汇总

1、环境准备 windows 7&#xff0c;8&#xff0c;10&#xff0c;11操作系统ahk 2.x_64位翻译功能需要联网使用 2、使用方式 输入winR打开windows运行框 get/getpath 命令获取配置文件环境变量set/sets 设置 “用户/系统” 环境变量或者pathencode/decode 中文编码和解码len…

Ubuntu-Sim2Real环境配置(下)

cd ICRA-RM-Sim2Real/docker_client/ ./exec_client.sh cd ~ roslaunch rtab_navigation rtab_navigation.launch 执行上面代码的时候后台一直刷新 cd ICRA-RM-Sim2Real/docker_client/ ./exec_client.sh cd ~ roslaunch carto_navigation navigation.launch 1.Usage 执行该…

❀My学习Linux命令小记录(16)❀

目录 ❀My学习Linux命令小记录&#xff08;16&#xff09;❀ 61.who指令 62.sleep指令 63.kill指令 64.top指令 65.diff指令 ❀My学习Linux命令小记录&#xff08;16&#xff09;❀ 61.who指令 功能说明&#xff1a;显示目前登录系统的用户信息。 &#xff08;ps.who命…

Python sorted函数及用法以及如何用json模块存储数据

Python sorted函数及用法 sorted() 函数与 reversed() 函数类似&#xff0c;该函数接收一个可迭代对象作为参数&#xff0c;返回一个对元素排序的列表。 在交互式解释器中测试该函数&#xff0c;可以看到如下运行过程&#xff1a; >>> a [20, 30, -1.2, 3.5, 90, 3.…

阿里大佬讲解的接口自动化测试框架pytest系列——pluggy插件源码解读:hook钩子函数调用执行过程分析

经过pluggy源码解读系列1-4的分析&#xff0c;已经完成插件定义、spec定义&#xff0c;插件注册等环节&#xff0c;下面就到了调用插件执行了&#xff0c;即hook钩子函数是如何被调用执行的&#xff0c;下面还是先把pluggy使用的代码放下面&#xff1a; import pluggy# Hooksp…

PIKA,一个神奇的AI工具

随着人工智能技术的不断发展&#xff0c;越来越多的创新性工具开始涌现&#xff0c;为各行各业带来了巨大的变革。其中&#xff0c;视频生成AI工具PIKA&#xff0c;以其独特的功能和广泛的应用领域&#xff0c;吸引了众多用户的关注。本文将详细介绍PIKA的功能、特点以及应用前…

PyQt6 QGroupBox分组框控件

​锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计37条视频&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面开发 视频教程(无废话…

大话数据结构-查找-有序表查找

注&#xff1a;本文同步发布于稀土掘金。 3 有序表查找 3.1 折半查找 折半查找&#xff08;Binary Search&#xff09;技术&#xff0c;又称为二分查找&#xff0c;它的前提是线性表中的记录必须是关键码有序&#xff08;通常从小到大有序&#xff09;&#xff0c;线性表必须…

【Vue3从入门到项目实现】RuoYi-Vue3若依框架前端学习——登录页面

若依官方的前后端分离版中&#xff0c;前端用的Vue2&#xff0c;这个有人改了Vue3的前端出来。刚好用来学习&#xff1a; https://gitee.com/weifengze/RuoYi-Vue3 运行前后端项目 首先运行项目 启动前端&#xff0c;npm install、npm run dev 启动后端&#xff0c;按教程配置…

信息系统安全运维服务资质认证申报流程详解

随着我国信息化和信息安全保障工作的不断深入&#xff0c;以应急处理、风险评估、灾难恢复、系统测评、安全运维、安全审计、安全培训和安全咨询等为主要内容的信息安全服务在信息安全保障中的作用日益突出。加强和规范信息安全服务资质管理已成为信息安全管理的重要基础性工作…

nodeJS爬虫-爬取虎嗅新闻

1.安装依赖库到本地&#xff0c;需要的库有&#xff1a;安装方法见Node.js笔记说明 const superagent require(superagent); const cheerio require(cheerio); const async require(async); const fs require(fs); const url require(url); const request require(reques…

Apache Doris 详细教程(一)

1、Doris简介 1.1、doris概述 Apache Doris 由百度大数据部研发&#xff08;之前叫百度 Palo&#xff0c;2018 年贡献到 Apache 社区后&#xff0c; 更名为 Doris &#xff09;&#xff0c;在百度内部&#xff0c;有超过 200 个产品线在使用&#xff0c;部署机器超过 1000 台…

用OpenCV与MFC写一个图像格式转换及简单处理程序

打开不同格式的图形文件&#xff0c;彩色装灰度图像、锐化、高斯滤波、边界检测及将其存储为需求格式是图像处理的最基本的操作。如果单纯用MFC编程&#xff0c;是一个令人头痛的事情&#xff0c;有不少的代码量。可用OpenCV与MFC编程就变得相对简单。下面来详细演示这一编程操…

股票所有均线都跌破应该怎么操作?

股票跌破所有均线说明股票趋势是走坏的&#xff0c;并且均线对股票起到压制作用&#xff0c;投资者有两种操作方式&#xff0c;第一种是割肉换股&#xff0c;投资者可以在股票小幅上涨时&#xff0c;将股票全部卖出&#xff0c;再买入最近比较强势的个股&#xff0c;赚取收益、…

ubuntu安装MySQL8

1.下载mysql8 MySQL :: Download MySQL Installer (Archived Versions) 选择对应的mysql版本和对应的ubuntu版本图即可 2.下载后上传到sftp文件夹中&#xff0c;然后通过以下命令解压 tar -xvf mysql-server_8.0.29-1ubuntu20.04_amd64.deb-bundle.tar 3.依次安装即可 &#…