IT运维监控/可观测性
·
在 Categraf 中采集 es-exporter 的数据,明明配置了 insecure_skip_verify = true 为什么还是报错:x509: cannot validate certificate for 10.0.x because it doesn't contain any IP SANs。
截图如下:


我对 Categraf 这个开源项目很熟悉,可以一眼知道问题,但是普通用户是不清楚的。授人以鱼不如授人以渔,普通用户应该如何让 AI 协助排查这类问题呢?
其实也很简单,你只需要把如下信息告诉 AI 即可:
- 开源项目的文档地址,如果有本地目录那最好了,如果没有,就把文档 URL 告诉 AI 也可以
- 开源项目的代码目录,clone 下来放到本机让 AI 分析
- 你的需求,比如在上例中就是想采集 ElasticSearch 的监控数据
- 你的配置,上例中有截图,那个截图就够用了
- 遇到的问题,比如报错消息,看到的现象。只描述现象即可,不要说你的推测,你的推测可能对 AI 是负向引导
于是,我就把上面的信息问了 AI:
文档和代码信息我之前已经写到 AI Agent 的 Knowledge 里了,所以这次没有重复给,我只是给了群友的截图和问题。把群友的问题原封不动发给了 AI,实际后来发现,群友的问题问的不准确,那根本不是采集 es-exporter 的数据,而是直连 es,无所谓了,AI 也做到了正确回复。

详细回复如下:
根因分析
问题出在 缺少 use_tls = true 配置。
两张图的信息对照
| 配置(图1) | 报错(图2) | |
|---|---|---|
| 内容 | servers = ["https://10.0.x:9200"] + insecure_skip_verify = true |
x509: cannot validate certificate for 10.0.x because it doesn't contain any IP SANs |
| 关键 | 只设了 insecure_skip_verify,没有 use_tls |
TLS 证书校验失败 |
为什么会这样?
Categraf 的 elasticsearch 插件源码逻辑(pkg/tls/config.go)是:
- 先检查
UseTLS(对应 toml 字段use_tls)是否为true - 只有
use_tls = true时,才会构建tls.Config并将InsecureSkipVerify传进去 - 如果
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更多推荐



所有评论(0)