如何使用 AI 解答开源项目的问题,其实只需要一句话

0 阅读2分钟

昨天社区小伙伴问了一个问题:

说:在 Categraf 中采集 es-exporter 的数据,明明配置了 insecure_skip_verify = true 为什么还是报错:x509: cannot validate certificate for 10.0.x because it doesn't contain any IP SANs

截图如下: Categraf ElasticSearch Plugin Configurations

Categraf ElasticSearch Plugin Error Logs 我对 Categraf 这个开源项目很熟悉,可以一眼知道问题,但是普通用户是不清楚的。授人以鱼不如授人以渔,普通用户应该如何让 AI 协助排查这类问题呢?

其实也很简单,你只需要把如下信息告诉 AI 即可:

  • 开源项目的文档地址,如果有本地目录那最好了,如果没有,就把文档 URL 告诉 AI 也可以
  • 开源项目的代码目录,clone 下来放到本机让 AI 分析
  • 你的需求,比如在上例中就是想采集 ElasticSearch 的监控数据
  • 你的配置,上例中有截图,那个截图就够用了
  • 遇到的问题,比如报错消息,看到的现象。只描述现象即可,不要说你的推测,你的推测可能对 AI 是负向引导

于是,我就把上面的信息问了 AI:

文档和代码信息我之前已经写到 AI Agent 的 Knowledge 里了,所以这次没有重复给,我只是给了群友的截图和问题。把群友的问题原封不动发给了 AI,实际后来发现,群友的问题问的不准确,那根本不是采集 es-exporter 的数据,而是直连 es,无所谓了,AI 也做到了正确回复。

Flashduty AI SRE 详细回复如下:

根因分析

问题出在 缺少 use_tls = true 配置

两张图的信息对照

配置(图1)报错(图2)
内容servers = ["https://10.0.x:9200"] + insecure_skip_verify = truex509: cannot validate certificate for 10.0.x because it doesn't contain any IP SANs
关键只设了 insecure_skip_verify没有 use_tlsTLS 证书校验失败

为什么会这样?

Categraf 的 elasticsearch 插件源码逻辑(pkg/tls/config.go)是:

  1. 先检查 UseTLS(对应 toml 字段 use_tls)是否为 true
  2. 只有 use_tls = true,才会构建 tls.Config 并将 InsecureSkipVerify 传进去
  3. 如果 use_tls 没有显式设为 true,即使 servers 里写的是 https://,TLS 配置不会生效insecure_skip_verify = true 被忽略

所以虽然你写了 insecure_skip_verify = true,但因为没开启 use_tls,插件没有应用这个跳过验证的设置,仍然走了标准证书验证——而你的 ES 证书里没有包含 IP 地址的 SAN(Subject Alternative Name),导致校验失败。

正确配置

[[instances]]
servers = ["https://10.0.x.x:9200"]
username = "elastic"
password = "your-password"

## 关键:必须显式开启 TLS
use_tls = true
insecure_skip_verify = true

加上 use_tls = true 后重启 Categraf 即可解决。

⚠️ 补充说明:insecure_skip_verify = true 会跳过证书校验,适用于自签名证书或证书 SAN 不匹配的测试/内网环境。生产环境建议配置正确的证书或使用 tls_ca 指定 CA。

结语

这个时代,比拼的是把问题描述清楚的能力。兄弟们,共勉。