使用Packetbeat,收集网络流量
首先
我們將來介紹一個由 Elastic 公司開發的 Beats 系列之一的 Packetbeat。
关于Beats
请参阅以下Classmethod网站上的文章以获取更多详细信息,简单来说,通过在每台服务器上进行安装,可以收集各种数据,并将获取的数据发送到logstash和Elasticsearch等工具中。
https://dev.classmethod.jp/articles/beats-entry-matome/
关于Packetbeat。
Packetbeat是Beats系列中的一个工具,用于收集网络流量。
通过Packetbeat可以获取两种数据,一种是获取TCP流量,另一种是获取支持的协议的详细数据。
顺便说一句,您可以根据Flows和Transaction protocols获取的数据进行各种修改。
当我使用时,数据量太大了,所以我删除了以下获取协议的部分。
processors:
- drop_event:
when:
- equals:
dest.port: 80
参考: https://www.elastic.co/guide/en/beats/packetbeat/master/filtering-and-enhancing-data.html
请参考上述链接,了解有关数据过滤和增强的信息。
流动
Flows是一个简单的描述,用来说明它打开tcpdump命令并获取数据的图像。通过它可以获取到数据包中的内容,包括通信是从哪个端口以及从哪个服务器发送到另一个服务器。它可以完整地捕获服务器中流动的TCP信息。
交易协议
公式文件中列出了受支持的协议。
支持基本协议,例如PostgreSQL、MySQL、HTTP,可以获取发送了哪些SQL语句(对于数据库)或流量流向了哪个路径(对于HTTP)。
参考:https://www.elastic.co/guide/en/beats/packetbeat/current/configuration-protocols.html
亲自动手操作
让我们从安装Packetbeat开始,然后进行Elasticsearch和Kibana的设置。
请注意,本教程中有关Packetbeat设置的方法已经说明,但不包括Elasticsearch和Kibana的安装和构建部分。
前提
操作系统:CentOS7
数据包分析工具:Packetbeat 7.8
安装
根据以下官方文档的指示进行安装。
参考:https://www.elastic.co/guide/en/beats/packetbeat/7.8/setup-repositories.html#_yum
$ sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
$ sudo vi /etc/yum.repos.d/elastic.repo
-------------
[elastic-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
-------------
$ sudo yum install packetbeat
$ sudo systemctl enable packetbeat
在Elasticsearch中创建索引。
一旦安装Packetbeat,默认情况下它会带有Elasticsearch的索引模板,
通过使用该模板可以创建索引。
参考:https://www.elastic.co/guide/en/beats/packetbeat/master/packetbeat-template.html
$ /usr/share/packetbeat/bin/packetbeat setup --index-management -c /etc/packetbeat/packetbeat.yml -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'
执行packetbeat命令时,需要使用-c选项,并假设当前目录中存在packetbeat.yml文件,因此需要指定-c选项。
在 Kibana 中创建仪表板。
Kibana的仪表盘也在Packetbeat默认情况下准备好,因此我们将使用它来创建仪表盘。
参考:https://www.elastic.co/guide/en/beats/packetbeat/master/load-kibana-dashboards.html
/usr/share/packetbeat/current/packetbeat
setup --dashboards -c /etc/packetbeat/packetbeat.yml
迷上了这个点
以下是在使用Packetbeat时遇到的困难点的记录,前提是要将数据集中到Elasticsearch中。
Packetbeat的版本
使用Elasticsearch的官方Elastic公司版本时没有问题,但是如果使用AWS提供的opendistro for elasticsearch开源版本,则会出现错误提示:Packetbeat不是开源版本,没有X-Pack许可证,因此无法使用。在这种情况下,请使用此处提供的Packetbeat开源版本:https://www.elastic.co/jp/downloads/beats/packetbeat-oss
调整Elasticsearch的数据量
基本上,Elasticsearch是用于存储数据的,关于要创建哪种类型的索引和如何设置分片数,并不是由Elasticsearch来进行设置,而是由创建索引的Packetbeat的配置来决定。由于我没有理解这一点,在调整数据量时遇到了问题。
例如,如果要将Elasticsearch的默认分片数量从5减少到3,则需按照以下方式配置 /path/packetbeat.yml,并创建索引模板。
参考:https://www.elastic.co/guide/en/beats/packetbeat/master/configuration-template.html#configuration-template
setup.template.settings:
index.number_of_shards: 3
index.number_of_replicas: 1
来到结尾
通过引入Packetbeat,可以了解服务器单位和服务器类型的网络流量总量,可以追踪通信从哪里到哪里。这样就可以获取故障排除、云迁移和应用程序替换所需的基础数据。然而,引入后感受到的问题是Packetbeat获取的数据量很大,导致Elasticsearch方面出现问题,所以必须有所准备。