项目经历:Vigilix 系统开发
一、项目概述
Vigilix 是我自主研发的一个具备多组件、多功能的系统,主要用于自动巡检、系统监控、数据推送以及告警处理等。该项目整合了客户端、推送端、代理端和服务端等多个模块,各模块协同工作,实现系统信息的采集、处理和通知功能。同时,项目集成了 Zabbix 告警、巡检表格生成等特色功能,为运维人员提供全面的系统监控解决方案。
二、项目职责
作为该项目的独立开发者,我负责从项目的需求分析、架构设计、编码实现到测试部署的全流程工作。具体职责包括:
需求分析:与潜在用户沟通,明确系统的功能需求和性能要求。
架构设计:设计系统的整体架构,确定各个模块的功能和交互方式。
编码实现:使用 Go 语言完成各个模块的代码编写,包括客户端、推送端、代理端和服务端。
测试调试:对系统进行单元测试、集成测试和系统测试,及时修复发现的问题。
部署优化:将系统部署到生产环境,并进行性能优化和故障排查。
三、技术栈
编程语言:主要使用 Go 语言进行开发,利用其高效、并发性能好等特点。
依赖库
github.com/gorilla/websocket:用于实现 WebSocket 通信,在客户端、服务端和代理端中都有使用。
github.com/shirou/gopsutil:用于采集系统指标数据,如 CPU、内存、磁盘等信息。
gopkg.in/yaml.v3:用于解析 YAML 配置文件,方便项目的配置管理。
github.com/jmoiron/sqlx:用于数据库操作,服务端使用该库与数据库进行交互。
github.com/xuri/excelize/v2:用于处理 Excel 文件,服务端可能会使用该库进行数据导出等操作。
四、项目成果
功能实现
客户端:实现了用户登录和命令执行等功能,用户可以通过 WebSocket 与服务端进行通信。
推送端:支持通过 POST 方式对接 Server 服务端,实现告警及数据推送。同时,根据配置将信息推送给不同的第三方平台,如邮件、钉钉、短信、企业微信等。
代理端:部署在被监控的主机上,负责采集主机的系统指标数据,并将数据发送给服务端。
服务端:接收代理端发送的数据,进行处理和存储,同时处理系统信号和告警信息。可对接 Zabbix 接口收集触发器情况,如有异常,触发告警。
特色功能
自动化巡检:支持生成巡检表格,将系统监控数据以 xlsx 表格形式呈现,方便运维人员进行巡检和分析。
Zabbix 告警集成:与 Zabbix 系统集成,及时获取系统的告警信息,并通过推送端通知相关人员。
五、项目挑战与解决方案
数据采集与处理:在代理端采集系统指标数据时,需要处理大量的实时数据。为了提高数据采集的效率和准确性,我使用了 github.com/shirou/gopsutil 库,并对数据采集过程进行了优化,确保数据的及时更新和准确传输。
并发处理:在服务端处理客户端请求和代理端数据时,需要处理大量的并发请求。为了提高系统的并发性能,我使用了 Go 语言的 goroutine 和 channel 机制,实现了高效的并发处理。
第三方平台对接:在推送端与第三方平台对接时,需要处理不同平台的接口和协议。为了确保数据的准确推送,我对各个平台的接口进行了详细的研究,并编写了相应的对接代码。
六、项目总结
通过这个项目,我不仅提升了自己的技术能力,还积累了丰富的项目开发经验。在项目开发过程中,我深刻体会到了系统架构设计的重要性,以及如何选择合适的技术栈来实现项目的需求。同时,我也学会了如何应对项目中遇到的各种挑战,通过不断的优化和改进,提高系统的性能和稳定性。未来,我将继续完善 Vigilix 系统,为用户提供更加优质的系统监控解决方案。