夜莺-Nightingale
夜莺V7
夜莺V6
项目介绍
架构介绍
快速开始
黄埔营
安装部署
升级
采集器
使用手册
API
数据库表结构
users
notify_tpl
board
users
target
target
user_group
user_group_member
task_tpl
task_tpl_host
task_record
sso_config
role
role_operation
recording_rule
notify_tpl
metric_view
datasource
configs
chart_share
busi_group
busi_group_member
builtin_cate
builtin_cate
builtin_cate
builtin_cate
board
board_payload
alerting_engines
alert_subscribe
alert_rule
alert_mute
alert_his_event
alert_cur_event
alert_aggr_view
FAQ
转发数据给多个时序库
机器列表数据异常
数据流图
监控数据时有时无
查询原始监控数据
快捷视图详解
告警自愈模块使用
仪表盘里只展示我的机器
仪表盘里图表数据缺失
设置自定义告警通知方式
target_up指标的问题
夜莺可以监控 x 么
夜莺告警常见问题排查思路
告警和恢复的判断逻辑
容量规划问题
connection refused
登录与认证
数据采集器Categraf
日志写到`/var/log/messages`
告警规则&告警模板如何引用变量
采集到的数据是字符串怎么处理
管理员密码忘记了
制作大盘如何添加图片
添加loki数据源报错
v6小版本升级有什么 sql 要执行吗
机器列表有展示,但采集数据查询不到
n9e 启动异常报错
n9e集群部署配置修改
推送 Promethus 报错 OOO
机器列表怎么忽略云资源
告警规则仅在本业务组生效失败
categraf 启动 oracle 插件报错
告警自愈不生效
n9e查询时序库EOF报错
手动编译项目报错
promQL 使用函数标签信息丢失
内存使用率+可用率不等于100
夜莺仪表盘有哪些内置变量
categraf配置文件支持热加载吗
导入 Grafana 仪表盘无效数据源
如何查看报错消息
采集器-Categraf
插件配置
插件综述
基础指标采集插件
netstat采集插件
netstat_filter采集插件
procstat采集插件
http_response
mysql插件
redis插件
snmp插件
ipmi采集插件
dns_query插件
dcgm插件
nvidia_smi插件
cadvisor采集插件
smart采集插件
postgresql插件
mongodb插件
elasticsearch采集插件
exec采集插件
emqx采集插件
阿里云指标采集插件
Zabbix 指标转换插件
cloudwatch指标采集插件
google cloud指标采集插件
mtail插件
prometheus采集插件
页面配置采集插件
Flashcat 企业版
开源生态
Telegraf
Prometheus
版权声明
第1章:天降奇兵
第2章:探索PromQL
开篇
理解时间序列
Metrics类型
初识PromQL
PromQL操作符
PromQL聚合操作
PromQL内置函数
在HTTP API中使用PromQL
最佳实践:4个黄金指标和USE方法
小结
第3章:Prometheus告警处理
开篇
Prometheus告警简介
自定义Prometheus告警规则
部署Alertmanager
Alertmanager配置概述
基于标签的告警处理路由
使用Receiver接收告警信息
告警模板详解
屏蔽告警通知
使用Recoding Rules优化性能
小结
第4章:Exporter详解
第5章:数据与可视化
第6章:集群与高可用
第7章:Prometheus服务发现
第8章:监控Kubernetes
开篇
初识Kubernetes
在Kubernetes下部署Prometheus
Kubernetes下的服务发现
使用Prometheus监控Kubernetes集群
基于Prometheus的弹性伸缩
小结
第9章:Prometheus Operator
参考资料
dns_query插件
插件概述
DNS Query 插件是一个用于监控 DNS 服务器性能和可用性的监控插件。它可以定期向指定的 DNS 服务器发送查询请求,测量响应时间,检测查询结果,并监控域名劫持等安全问题。
工作原理
插件通过以下步骤进行 DNS 监控:
- DNS 查询执行:向配置的 DNS 服务器发送指定类型的域名查询请求
- 响应时间测量:记录 DNS 查询的往返时间(RTT)
- 结果分析:解析 DNS 响应,提取 IP 地址信息
- 状态判断:根据响应码(rcode)判断查询是否成功
- 域名劫持检测:对比实际响应 IP 与期望 IP 列表,检测潜在的域名劫持(企业版v0.4.20及以上版本)
配置
[[instances]]
auto_detect_local_dns_server = false # 是否自动检测本地 DNS 服务器。当设置为 true 时,插件会从 /etc/resolv.conf 文件中读取本地配置的 DNS 服务器
servers = ["114.114.114.114"] # 要查询的 DNS 服务器列表
network = "udp" # 查询使用的协议 udp还是tcp
domains = ["flashcat.cloud"] # 要查询的域名列表
record_type="NS" # DNS 查询的记录类型
port = 53 # DNS 服务器端口号
timeout = 2 DNS 查询超时时间(秒)
expect_query_ips = { "域名" = ["IP1", "IP2", ...] } # 用于域名劫持检测的期望 IP 地址配置
配置文件在 conf/input.dns_query/dns_query.toml
。
record_type
支持以下类型:
- A:IPv4 地址记录,返回域名对应的 IPv4 地址
- AAAA:IPv6 地址记录,返回域名对应的 IPv6 地址
- CNAME:别名记录,返回域名的规范名称
- MX:邮件交换记录,返回邮件服务器信息
- NS:名称服务器记录,返回域名的权威 DNS 服务器
- PTR:指针记录,用于反向 DNS 查询(IP 地址到域名)
- TXT:文本记录,返回与域名关联的文本信息
- SOA:起始授权机构记录,返回域名的权威信息
- SPF:发送方策略框架记录,用于邮件防伪
- SRV:服务记录,指定服务的位置信息
- ANY:任意记录类型,返回所有可用的记录
expect_query_ips
需要满足一下条件
- 只有当 record_type 为 A 或 AAAA 时才有效
- IP 列表应该尽可能完整,包含该域名的所有合法 IP 地址
- 建议定期更新 IP 列表以确保准确性
产生的指标示例
dns_query_rcode_value{agent_hostname="localhost",domain="baidu.com",record_type="A",server="114.114.114.114"} 0
dns_query_result_code{agent_hostname="localhost",domain="baidu.com",record_type="A",server="114.114.114.114"} 0
dns_query_query_time_ms{agent_hostname="localhost",domain="baidu.com",record_type="A",server="114.114.114.114"} 19.482583
其中dns_query_time_ms
表示查询的响应时间,单位ms; dns_query_result_value
是categraf自定义的查询结果,0表示成功,1表示超时,2表示出错了。
当expect_query_ips
配置了对应的域名后, categraf会对比响应的IP列表与配置的IP列表, 此时会产生新的指标 dns_query_status_change
, 0 表示响应的IP与期望的IP一致, 1表示响应的IP与期望的IP出现差异。 当出现差异时,会生成新的指标 dns_query_status_change_detail{ips="响应的IP列表", diff="响应IP列表-期望IP列表"} 1
dns_query_status_change{agent_hostname="localhost",domain="baidu.com",record_type="A",server="114.114.114.114"} 1
dns_query_status_change_detail{agent_hostname="localhost",diff="182.61.201.211",domain="baidu.com",ips="182.61.201.211,182.61.244.181",record_type="A",server="114.114.114.114"} 1
dns_query_rcode_value
是 DNS 响应中的状态码,表示查询请求的处理结果:
- 0 (NOERROR):查询成功,没有错误
- 1 (FORMERR):格式错误,DNS 服务器无法理解查询请求
- 2 (SERVFAIL):服务器失败,DNS 服务器遇到内部错误
- 3 (NXDOMAIN):域名不存在
- 4 (NOTIMP):查询类型不被支持
- 5 (REFUSED):查询被拒绝,通常是策略原因 在监控中,RCODE 为 0 表示查询成功,其他值通常表示存在问题需要关注
对于其他RCODE含义,可以参考DNS参数.
DNS RCODE
是IANA
(Internet Assigned Numbers Authority
,互联网号码分配机构) 来定义的。
问题排查参考