2024 Zabbix中国峰会 关于我们 联系我们 加入我们
5

技术干货|Zabbix+SonarQube搭建代码质量监控可视化平台,手把手实操

在运维开发过程中工程师常常需要关注代码质量确保项目工作的顺利开展持续监控代码质量和性能指标并以可视化方式呈现Zabbix可以实现这一功能接下来我们以一个实际项目案例来了解如何使用并操作能快速建立一个监控环境并持续监控代码质量和性能指标从而提升代码质量。


该项目在AlmaLinux上安装了SonarQube(一个用于持续检查代码质量的开源平台)。设置完成后,SonarQube与Zabbix无缝集成,用于动态监控代码的各个指标。这种集成为项目团队提供监控的实时可见性,从而了解项目中的关键指标,如错误、漏洞和代码异味(code smells)。

以下是项目安装使用的具体步骤👇


01

在 AlmaLinux 上安装 SonarQube

1


安装前要求

进行详细的审查,以确保服务器满足有效运行 SonarQube 的最低硬件要求。

已安装并配置了必要的依赖项,包括 Java 开发工具包 (JDK) 和支持的数据库系统。

2


SonarQube 安装步骤

从官方网站下载SonarQube 服务器

按照最佳做法,创建专用的 SonarQube 用户帐户来运行服务。

SonarQube 服务配置为在启动时启动,从而确保高可用性。

3


配置

sonar.properties 文件经过精心编辑,将SonarQube 连接到所选数据库,从而优化了性能和安全性。

调整网络设置,允许 SonarQube 在所需的端口 (9000) 上运行,并可从开发人员的工作站访问。

安装其他插件,以扩展 SonarQube 的功能并支持我们项目中使用的语言。


02

SonarQube中的项目设置

在AlmaLinux服务器上成功安装并配置SonarQube之后,下一阶段涉及为代码分析设置项目。项目过程中创建了五个测试监控项目来展示SonarQube的能力,并作为质量评估的基线。


1

 创建测试监控项

创建了一系列五个不同的监控项目,即 app-java、backup-code、erp-app、test-app 和 web-app,每个监控项都在 SonarQube 中配置。

这些监控项经过配置,用于评估代码质量的各个方面,包括可靠性、安全性和可维护性。

启用代码的自动扫描,以识别每个项目中的错误、漏洞和代码异味(code smells)。

2

 分析和指标

每个监控项都进行了彻底的分析,结果表明存在不同程度的错误和漏洞以及代码异味。

覆盖率和重复率等指标被配置为进行监控,尽管最初的测试运行反映了 0.0% 的覆盖率,这表明存在进一步 CI/CD 集成的空间。

测试应用项目明显地展示了大量的错误和大量的代码异味(code smells),突出了需要立即改进的地方。

3

质量门状态

所有监控项都根据预定义的质量门设置,以确保它们符合组织的代码质量标准。 

尽管有些监控项存在错误和代码异味(code smells),但所有项目都通过了质量关口,这表明已识别出非关键问题,这些问题将以持续的方式得到解决。


03

SonarQube与Zabbix集成

SonarQube与Zabbix的集成旨在利用Zabbix强大的监控能力,密切关注项目在代码质量方面的健康状况。

1、Zabbix模板创建

项目团队构建了一个Zabbix模板,专门用于与SonarQube API接口,使其能自动发现SonarQube项目及其关键指标。为了将Zabbix与SonarQube API集成并启用项目和关键指标的自动发现,使用了以下API调用和配置:


*认证:用于身份验证的 API 调用示例

图片

*项目发现:用于列出项目的示例 API 调用:

图片

*指标检索:用于获取项目指标的 API 调用示例:

图片


2、Zabbix模板配置

创建一个定制的Zabbix模板来与SonarQube API进行交互。该模板包括发现规则、项目原型和用于提取相关指标的预处理步骤。


Zabbix模板中的发现规则和监控项原型示例:

图片


此外,团队在Zabbix中设置了监控项以跟踪错误、漏洞和代码异味(code smells)的数量,如SonarQube仪表板中所示。团队还在Zabbix中配置了触发器,以便在达到特定阈值时提醒团队,从而促进迅速采取行动以保持代码质量。


3、自动化和动态监控

团队在 SonarQube 中实现了监控项的动态发现,允许自动检测和监控新项目,而无需人工干预。实施的配置如下:

SonarQube 配置: 

Webhooks:配置了 SonarQube webhooks,以便在创建或更新新项目时通知 Zabbix。 

项目标签:对SonarQube项目使用一致的标签,以便于在Zabbix中识别。


Zabbix配置: 

发现规则:在Zabbix中创建的发现规则,定期查询SonarQube API以检查新项目。 

低级别自动发现(LLD):在 Zabbix 中实施了 LLD,以自动为每个新的 SonarQube 项目创建项目、触发器和图表。还在 SonarQube 和 Zabbix 之间建立了数据流,确保代码质量指标的更新实时反映在 Zabbix 仪表板上。


4、验证和测试

项目团队进行了一系列测试,以确保集成正常运行。验证了 SonarQube 中报告的指标与 Zabbix 中显示的指标相匹配,从而确认了监控设置的准确性和可靠性。

图片

随着项目和指标受到积极监控,重点转向有效地呈现数据。在Zabbix中创建了一个自定义仪表板,用于聚合和显示从SonarQube收集的信息。


5、设计与布局

创建一个用户友好的仪表板,以提供所有项目状态的快速概览。仪表板经过组织,可以一目了然地显示每个项目的 bug 数量、漏洞、代码异味(code smell)和质量门状态等指标。特别注意视觉层次结构和布局,确保最关键的指标立即可见。

图片


6、自定义小部件和可视化效果

为每个关键指标定制了小部件,以提高可读性和对项目状态的即时理解。

视觉指示器:如颜色编码的状态图标和进度条,被纳入其中,以提供关于每个项目健康状况的清晰视觉提示。


7、实时数据展示

将仪表板配置为定期刷新,为开发团队提供实时更新。

确保最新的数据始终可用,从而能够采取积极主动的方法实现质量保证和代码运行状况。


04

项目结果与收益

SonarQube与Zabbix的集成以及专用仪表板的创建为开发工作流程和项目管理带来了巨大的收益。

1、提升代码质量监控

通过对代码质量指标的实时监控,可以更快地识别和解决问题。

开发人员立即收到有关其代码质量的反馈,从而在开发过程中培养了质量第一的文化。


2、增强数据可视化

Zabbix仪表板提供了所有项目健康状况的集中视图,增强了开发人员和管理层的可见性。

关键问题可以一目了然地确定,从而可以确定优先次序和分配资源,以解决最紧迫的问题。


3、简化工作流程

自动化的项目发现和监控减少了手动开销,使开发人员能够专注于编码而不是报告。

来自Zabbix的警报和通知确保了没有遗漏任何关键问题。


4、提供决策支持

仪表板上可见的收集数据和趋势支持了有关代码质量改进和技术债务管理的明智决策。 

跟踪历史数据的能力使团队能够衡量已实施的更改随时间推移的影响。


5、主动问题管理

早期发现错误和漏洞使团队能够在问题升级之前解决问题,从而减少对项目时间表和质量的潜在风险。 

Quality Gate 状态有助于在所有项目中保持一致的代码质量标准。


图片

Zabbix以其强大的功能和延展性,支持与多软件系统集成,并且重视信创方向,支持多个主流的国产操作系统和数据库。

想要了解Zabbix7.0的详细功能、Zabbix与AI大模型的融合实践、Zabbix7.0环境的高标准建设与运维以及Zabbix信创融合案例分享等热门技术话题,还有多行业的应用案例分享,一起来2024Zabbix 中国峰会现场聆听原厂CEO、培训师、技术专家等的精彩演讲!

图片
图片
图片
图片

部分讲师演讲主题,更多内容敬请期待,扫码海报右下角二维码即可报名~咱们峰会见吧!

-END-


2024-08-15