数据采集模块经验总结

一、背景

历时两个月的数据采集模块最近测试接近尾声,这是我独立完成的第一个大模块,所以有必要做下总结。

二、编码流程梳理

第一步、了解模块的作用

模块是采集系统的各种数据,汇总发送到服务器。数据分为几大类:

       环境数据

      性能数据

      存储库数据

      关键进程数据

      日志数据

      以及接受并转发虚机采集的数据

第二步、将模块划分为子模块

首先,该模块在三种类型的环境(管理节点、计算节点、一体机)中都能运行,因此需要一个标志来区分这三种环境

其次,可将进程划分为两个线程,一个线程与其它模块交互(接受并转发虚机的数据,以及其它);主线程采集这五类数据

最后,采集的五类数据,独立到五个函数模块中,每个函数模块分为三大步骤:采集、封装和发送

第三步、各个子模块的处理

采集函数部分参考现有的模块代码

封装和发送函数经搜索调研后采用json-c库和curl库

第四步、最大化利用现有代码,搭建起进程骨架

第五步、将所有函数内聚到我的模块中,并将该模块从两个尺度进行模块化隔离

1)文件尺度:分为日志模块、工具模块、主模块(采集封装发送)

2)功能尺度:主要针对主模块的五种类型类型

第六步、对代码进行几个步骤的梳理

1)代码命名规范化、标准化

2)函数进行统一抽象

3)完善异常处理

4)对动态内存泄漏进行重点核查

5)借助编译器对所有warning进行排查

6)对代码性能进行优化:减少循环、减少shell调用次数

7)请同事进行代码走查

第七步、详细测试

三、收获

1.编译器的warning真的很给力,不要轻易放过任何一个

2.高质量的代码(模块化、命名、一致性抽象等等)阅读起来真是赏心悦目,并且很容排查错误

3.终于领略到了C语言的内存操作是需要多么细心,指针未赋值、未初始化、不匹配等等

4.编译Makefile、库也收获一些常识。比如新增了一个函数,老是启动不了,就是因为没有替换环境上的包含这个函数的动态库。

5.学会了配置rsyslog模板,以及logrotate转储配置

你可能感兴趣的:(数据采集模块经验总结)