故障排查
本指南帮助你解决 SonarQube 连接器的常见问题。
连接器未就绪
症状
SonarQube 连接器显示 Ready: False 状态。
诊断步骤
-
检查连接器状态:
查看
status.conditions字段以获取具体错误消息。 -
常见原因及解决方案:
令牌无效:
- 错误:"Authentication failed" 或 "Token invalid"
- 解决方案:验证 secret 中的令牌是否正确且未过期
- 在 SonarQube 中生成新令牌并更新 secret
连接问题:
- 错误:"Connection refused" 或 "Timeout"
- 解决方案:验证集群是否能够访问 SonarQube 实例
- 检查网络策略、防火墙和 DNS 解析
地址不正确:
- 错误:"404 Not Found" 或 "Invalid URL"
- 解决方案:验证
spec.address是否包含正确的协议(https://)和路径
扫描器作业失败
症状
sonar-scanner 作业在分析过程中失败或挂起。
诊断步骤
-
检查作业日志:
-
常见原因及解决方案:
缺少 sonar-project.properties:
- 错误:"You must define the following mandatory properties"
- 解决方案:确保 sonar-project.properties 存在于项目根目录中,并包含所需字段:
代理配置未加载:
- 错误:"Authentication required"
- 解决方案:验证扫描器正在使用连接器配置:
权限不足:
- 错误:"Insufficient privileges" 或 "403 Forbidden"
- 解决方案:验证令牌是否具有项目的 "Execute Analysis" 权限
Scanner JRE 在 MicroOS 节点上失败:
- 错误:
- 背景:在 MicroOS 或其他加固过的节点镜像上,新版 SonarScanner CLI 可能会在运行扫描器引擎之前自动配置 JRE。如果下载的 JRE 无法在节点安全策略下运行,即使连接器、代理、身份验证以及到 SonarQube 的连通性都正常,扫描器容器仍可能以退出码
3失败。 - 诊断:如果扫描器日志显示它已连接到 SonarQube,并且在 JVM 初始化错误之前已下载扫描器引擎或 JRE,则应将其视为扫描器运行时兼容性问题,而不是连接器身份验证问题。
- 解决方案:在与 SonarQube 版本兼容时,使用扫描器镜像已提供的 Java 运行时: 你也可以设置等效的环境变量:
- 验证:在扫描器镜像中运行
java -version,并确认在禁用 JRE provisioning 之前已提供受支持的 Java 运行时。
未找到配置
症状
Pod 无法挂载 sonar-project.properties 配置。
诊断步骤
-
验证 CSI 卷是否正确配置: 检查 Pod 规范中的 CSI 卷是否已正确配置,并包含适当的
connectorName和configuration.names属性。 -
常见原因及解决方案:
连接器未就绪:
- 解决方案:等待连接器达到 Ready 状态
- 仅当连接器处于 Ready 状态时,配置才可用
卷配置不正确:
- 解决方案:验证 CSI 卷配置是否包含:
connectorName:你的连接器名称connectorNamespace:你的连接器命名空间configuration.names:"sonar-scanner"
质量门禁失败
症状
分析完成,但质量门禁状态与预期不符。
诊断步骤
-
检查 SonarQube 项目监控面板,查看质量门禁详细信息
-
常见原因及解决方案:
质量配置文件不匹配:
- 解决方案:验证是否为项目分配了正确的质量配置文件
未达到覆盖率阈值:
- 解决方案:检查项目是否具有测试覆盖率数据
- 确保在分析之前已生成覆盖率报告
新代码周期配置:
- 解决方案:验证 SonarQube 中的新代码周期定义
性能问题
症状
扫描器耗时过长或超时。
诊断步骤
-
常见原因及解决方案:
代码库较大:
- 解决方案:增加作业超时时间和资源限制:
网络延迟:
- 解决方案:检查到 SonarQube 实例的网络连通性
- 考虑使用更靠近集群的 SonarQube 实例
获取帮助
如果你仍然遇到问题:
-
检查连接器日志:
-
查看连接器事件:
-
验证 SonarQube 实例运行状况:
- 访问 SonarQube Web 界面
- 直接检查
/api/system/status端点
-
查阅文档: