如何在Grafana中展示域名对应的IP地址?
如何在Grafana中展示域名对应的IP地址?
我来给你几个实用的方案,刚好匹配你要实时查询域名IP、不需要历史记录的需求,都是实操性很强的:
方案一:用Prometheus Textfile Exporter + 自定义脚本
这个方法适合已经在用Prometheus的场景,步骤很简单:
- 写一个简单的shell脚本,用来获取指定域名的IP并生成Prometheus格式的指标文件。比如脚本内容可以是:
#!/bin/bash DOMAIN="dns.google.com" IP=$(dig +short $DOMAIN | head -n1) # 生成Prometheus指标,把IP存在标签里,值设为1(因为Prometheus指标需要数值) echo "dns_domain_info{domain=\"$DOMAIN\",ip=\"$IP\"} 1" > /var/lib/node_exporter/textfile_collector/dns_metrics.prom
- 用
cron定期执行这个脚本,比如每分钟跑一次,保证IP是实时的:
* * * * * /path/to/your/script.sh
- 配置Prometheus的Textfile Exporter(或者如果用Node Exporter的话,它本身就支持textfile采集),让Prometheus能读取这个指标文件。
- 在Grafana里用Prometheus数据源,写查询语句:
dns_domain_info{domain="dns.google.com"},然后用Stat或者Table面板,设置展示内容为标签ip的值,就能看到实时的IP了。
方案二:用Grafana Exec Datasource插件
这个方法更直接,不需要经过Prometheus,直接在Grafana里执行命令获取IP:
- 在Grafana插件市场安装Exec Datasource插件(这个插件专门用来执行系统命令并返回结果)。
- 配置这个数据源:指定允许执行的命令路径,或者直接开启命令执行权限(注意安全,只允许可信的命令)。
- 在Grafana面板里新建查询,选择Exec数据源,输入命令:
dig +short dns.google.com | head -n1
或者用nslookup(如果服务器没有dig的话):
nslookup dns.google.com | grep -oP 'Address: \K[0-9.]+' | head -n1
- 选择合适的面板类型(比如Stat、Text面板),就能直接展示实时解析的IP了,完全符合你要“实时检查DNS条目”的需求。
为什么你之前的尝试没成功?
- MySQL确实没有内置的DNS解析函数,它的IP相关函数都是针对数据库连接的客户端或服务器本身,没法做外部域名解析;
- Grafana Agent的DNS发现组件是用来自动发现监控目标的,不是用来在面板展示解析结果的,方向不对;
- 专门的DNS查询数据源插件确实比较少,所以用自定义脚本/命令的方式反而更灵活;
- 没法执行PHP的话,用shell脚本或者Python脚本就够了,大多数服务器默认都有这些环境。
备注:内容来源于stack exchange,提问作者Elikill58
相关产品推荐
相关产品推荐

