【TiDB 使用环境】v8.5.5
【问题复现路径】
- 部署一个1个pd的TiDB集群,ng-monitoring-server在12020端口监听
- 执行tikv cluster tls enable -y
- curl ip:12020/metrics,发现不通过TLS仍然能拉取到metrics数据
【TiDB 使用环境】v8.5.5
【问题复现路径】
tiup cluster tls enable 只管控 TiDB/PD/TiKV 集群内部通信 TLS,不会自动给 ng-monitoring-server (12020)、Prometheus、node-exporter 这类监控组件开启 TLS,所以curl http://ip:12020/metrics明文可通不是 BUG,是产品设计隔离逻辑。ng-monitoring**原生支持 TLS,但必须单独配置证书,集群一键 tls 命令不接管监控组件。
确保所有的证书(CA 证书、服务器证书和客户端证书)都是有效的,并且没有过期。你可以使用 openssl 命令来检查证书的有效性
“ng-monitoring原生支持 TLS”
来源希望
我记得ng-monitoring 原生支持 TLS,查下文档,看是不要有参数才行
查看 TiDB 的日志文件,看是否有关于 TLS 配置的错误信息。这可以帮助你进一步诊断问题
启动监控时配置证书启用 HTTPS,或防火墙封禁明文 12020 端口。
可以使用防火墙限制访问,试一下
如果需要从外部安全访问 ng-monitoring 的接口,可以在前面加一层 Nginx 反向代理
TiDB 部署的架构设计核心是角色分离:PD 负责元数据管理(强一致),TiKV 负责数据存储(Raft 复制),TiDB 负责 SQL 计算(无状态弹性)。理解这个分层对排障和调优很有帮助。
ng-monitoring-server 默认未跟随 TiKV 集群全局 TLS 配置,自身监听端口未开启 TLS,因此明文仍可访问 metrics。
tiup cluster tls enable 只给 TiDB/PD/TiKV 内部通信开 TLS,不管理监控组件(ng-monitoring-server、Prometheus、node-exporter 等)。所以 curl http://ip:12020/metrics 能明文访问,不是 Bug,是设计隔离。ng-monitoring 本身支持 TLS,但要单独配证书,集群一键 TLS 命令不接管监控组件。
此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。