V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
eryajf
V2EX  ›  分享发现

分享我的开源项目: cloud_dns_exporter。自动获取 DNS 提供商的域名及解析列表,同时自动获取每个域名解析的证书信息

  •  
  •   eryajf · 69 天前 · 1290 次点击
    这是一个创建于 69 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目地址: https://github.com/eryajf/cloud_dns_exporter

    项目简介

    在我们维护网站的时候,偶尔可能会犯一些相对低级的错误,莫过于忘记更换域名证书而使网站无法访问。然而当我们记得并更换了证书,却又因为遗漏了某些解析而导致网站无法访问。这些都是令人难受的错误。

    这个项目,希望能够让你轻松掌握到每个域名解析的证书信息,从而在更换证书时,不会遗漏任何一个解析。

    支持多种 DNS 提供商(目前支持阿里云,腾讯云,其他更多,期待有缘人 PR),且支持单提供商多账号管理。

    如何使用

    可以直接在 Release 发布页面下载二进制,然后更改配置文件,直接运行即可。

    默认端口监听在21798,为什么选择这个端口,因为项目对应在 grafana 中的仪表板 ID 就是21798

    你也可以选择使用 docker 部署,部署时把 config.yaml 在本地配置好,然后运行时,通过挂载(-v ./config.yaml:/app/config.yaml)覆盖容器内默认配置即可。

    镜像地址:

    目前应用还提供了-v参数,用于打印当前所使用的版本信息。

    一些注意

    • 为了提高请求指标数据时的效率,项目设计为通过定时任务提前将数据缓存的方案,默认情况下,域名及解析记录信息为 30s/次,证书信息在每天凌晨获取一次。如果你想重新获取,则重启一次应用即可。
    • 解析记录的证书信息获取,会受限于不同的网络访问场景,因此请尽可能把本程序部署在能够访问所有解析记录的地方。
    • 很多域名证书可能与域名没有 match ,是因为取到了所在负载服务监听的 443 对应的证书信息,可根据自己的情况选择忽略或进行处理。

    如果发现证书获取不准确或错误的情况,请提交 issue 交流。

    指标说明

    本项目提供指标有如下几项:

    名称 说明
    domain_list 域名列表
    record_list 域名解析记录列表
    record_cert_info 解析记录证书信息列表

    指标标签说明:

    <!-- 域名列表 -->
    domain_list{
        cloud_provider="DNS 提供商",
        cloud_name="云账号名称",
        domain_id="域名 ID",
        domain_name="域名",
        domain_remark="域名备注",
        domain_status="域名状态",
        create_time="域名创建时间"} 0
    
    <!-- 域名记录列表 -->
    record_list{
        cloud_provider="DNS 提供商",
        cloud_name="云账号名称",
        domain_name="域名",
        record_id="记录 ID",
        record_type="记录类型",
        record_name="记录",
        record_value="记录值",
        record_ttl="记录缓存时间",
        record_weight="记录权重",
        record_status="状态",
        record_remark="记录备注",
        update_time="更新时间",
        full_record="完整记录"} 0
    
    <!-- 域名记录证书信息 -->
    record_cert_info{
        cloud_provider="DNS 提供商",
        cloud_name="云账号名称",
        domain_name="域名",
        record_id="记录 ID",
        full_record="完整记录",
        subject_common_name="颁发对象 CN(公用名)",
        subject_organization="颁发对象 O(组织)",
        subject_organizational_unit="颁发对象 OU(组织单位)",
        issuer_common_name="颁发者 CN(公用名)",
        issuer_organization="颁发者 O(组织)",
        issuer_organizational_unit="颁发者 OU(组织单位)",
        created_date="颁发日期",
        expiry_date="过期日期",
        cert_matched="与主域名是否匹配",
        error_msg="错误信息"} 30 (此 value 为记录的证书距离到期的天数)
    

    Grafana 仪表板

    项目对应的 Grafana Dashboard ID: 21798

    概览与域名列表:

    解析记录与证书详情列表:

    5 条回复    2024-09-02 09:22:08 +08:00
    semxau789
        1
    semxau789  
       69 天前
    👍👍厉害了,请问最后两张截图是用什么软件截的,可以分享一下吗?
    Earsum
        2
    Earsum  
       69 天前
    感谢开源分享
    eryajf
        3
    eryajf  
    OP
       69 天前
    @semxau789 截图我是用的 ishot ,然后背景以及水印用的是 utoos 里边的 photor-截图美化插件。
    eryajf
        4
    eryajf  
    OP
       69 天前
    @Earsum 欢迎体验,项目根据自己的理解写的,可能还有很多不足
    semxau789
        5
    semxau789  
       68 天前
    @eryajf #3 学习了,感谢👍
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1636 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 16:54 · PVG 00:54 · LAX 08:54 · JFK 11:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.