我们打开Packetbeat项目,看看里面长什么样:
现在beats项目都合并在一起了,第一级可以看到各个子项目:
/libbeat: 公共依赖; /filebeat: 替代Logstash-forwarder,处理日志类型数据; /packetbeat: 本文扩展重点,网络抓包; /topbeat: 监控系统性能; /winlogbeat: 监控windows下面的日志信息; /vender: 依赖的第三方库; /tests: 用于测试的pcamp抓包文件,非常有用; /scripts: 一些用于开发和测试的Docker脚本文件; 现在重点看看/packetbeat下面目录都有些什么: /packetbeat/main.go: 启动入口,里面没有什么逻辑; /packetbeat/beat/: 里面就一个packetbeat.go文件,packetbeat主程序,处理配置和命令行参数,协议需要在这里进行注册; /packetbeat/config/: 里面就一个config.go文件,定义了所有的配置相关的struct结构体,新协议需要在这里定义其配置的结构体; /packetbeat/debian/: debian打包相关; /packetbeat/decoder/: 解码类,网络传输层包的解码; /packetbeat/docs/: 项目的相关文档; /packetbeat/etc/: 示例配置文件; /packetbeat/procs/: 获取系统内核运作状态与进程信息的工具类; /packetbeat/protos/:自定义协议类,每个目录对应一个应用协议,我们需要在此新增我们的协议,如SMTP; /packetbeat/sniffer/: 三种不同抓包方式的实现:pcap、af_packet、pf_ring,关于这三者的区别,请参照文档: Traffic Capturing Options(https://www.elastic.co/guide/en/beats/packetbeat/1.0.1/capturing-options.html) ; /packetbeat/tests/: 测试相关的文件,里面有每一个协议的pcab抓包样板,还有一堆Python测试脚本; 知道项目的大概架构就知道从哪下手了,下节分解。