write down,forget

Packetbeat协议扩展开发教程(1)

<Category: Beats> 查看评论

https://www.elastic.co/products/beats/packetbeat
是一个开源的网络抓包与分析框架,内置了很多常见的协议解析,如HTPP、MySQL、Thrift等。但是网络协议有很多,如何扩展一个自己的协议呢,本文将为您介绍如何在Packetbeat基础上扩展实现您自己的协议。

开发环境:
1.Go语言
Packetbeat是由Go语言编写,具有高性能和易部署的特点,有关Go语言的更多信息请访问:https://golang.org/。
2.Git
源码管理,相信大家都比较熟悉了。
3.Tcpdump
*nix下的抓包分析,可选,用于调试。
4.Mac本一台
Windows太伤,不建议。

这个教程给大家介绍的是编写一个SMTP协议的扩展,SMTP就是我们发邮件使用的协议,加密的比较麻烦,为了方便,本教程使用不加密的名文传输的SMTP协议,对应的端口是25。

A.源码签出
登陆Github打开https://github.com/elastic/beats
AA406C32-12F2-4633-BE49-0EA66559A722
fork后得到你自己的仓库,比如我的:https://github.com/medcl/packetbeat

注意,如果你之前已经签出过packetbeat和libbeat或者topbeat等beats项目,请先从$GOPATH/src/github.com/elastic下移除,新的beats都已经合并到一个仓库『beats』里面去了,如果你不移除,处理依赖的时候会有问题。

编译出来的文件:packetbeat,就在根目录
现在我们测试一下
修改etc/packetbeat.yml,在output下面的elasticsearch下面添加enabled: true,默认是不启用的,另外如果你的Elasticsearch安装了Shield,比如我的Elasticsearch的用户名和密码都是tribe_user,哦,忘了说了,我们的Elasticsearch跑在本机。
packetbeat.yml的详细配置可参见:https://www.elastic.co/guide/en//packetbeat/current/packetbeat-configuration.html
另外,在mac上面的网卡设置成any会启动失败,可设置为具体的网卡,如我的是en0。

现在可以运行命令启动packetbeat了,默认会监听所有内置的协议,如HTTP、DNS等。

介绍一下常用的参数:
-N dry run模式,不实际output存储日志
-e 控制台输出调试日志
-d 仅显示对应logger的日志

好的,我们打开几个网页,控制台会有相应的输出,如下:

然后Elasticsearch应该就会有数据进去了,果然:

至此,源码的build已经成功,我们整个开发流程已经跑通了,下一节正式开始介绍SMTP协议的扩展。

本文来自: Packetbeat协议扩展开发教程(1)