packetbeat配置分析
packetbeat
interface
device
要从中捕获流量的网络设备。指定的设备会自动设置为混杂模式,这意味着 Packetbeat 可以捕获来自同一 LAN 上其他主机的流量。
当接口为any时,不会为混杂模式。
支持设备编号,可以通过packetbeat devices
列出所有设备来选择相应的编号。
也可以通过配置default_route、default_route_ipv4、default_route_ipv6
这会将捕获设备设置为与 Packetbeat 启动时识别的第一个默认路由相关联的设备。default_route将从 IPv4 或 IPv6 中选择第一个默认路由,并优先选择 IPv4 路由,而default_route_ipv4
只会default_route_ipv6
从指定的设备中进行选择。选择的接口在选择后不会改变。
snaplen
要捕获的数据包的最大大小。默认值为 65535,对于几乎所有网络和接口类型都足够大。如果您嗅探物理网络接口,最佳设置是 MTU 大小。但是,在虚拟接口上,接受默认值会更安全。
type
- pcap:它使用 libpcap 库并适用于大多数平台,但它不是最快的选择,也是默认的选项。
- af_packet:它使用内存映射嗅探。此选项比 libpcap 更快,并且不需要内核模块,但它是特定于 Linux 的。
该af_packet
选项也称为“内存映射嗅探”,它利用了 Linux 特定的 特性。对于专用服务器和在现有应用程序服务器上部署 Packetbeat 时,这可能是最佳嗅探模式。
它的工作方式是内核和用户空间程序都映射同一个内存区域,并且在这个内存区域中组织了一个简单的循环缓冲区。内核将数据包写入循环缓冲区,用户空间程序从中读取。poll 系统调用用于获取第一个可用数据包的通知,但剩余的可用数据包可以通过内存访问简单地读取。
可以进一步调整嗅探器af_packet
以使用更多内存以换取更好的性能。循环缓冲区的大小越大,需要的系统调用就越少,这意味着消耗的 CPU 周期就越少。缓冲区的默认大小为 30 MB,但您可以像这样增加它:
packetbeat.interfaces.device: eth0
packetbeat.interfaces.type: af_packet
packetbeat.interfaces.buffer_size_mb: 100
在 Linux 上,如果您尝试优化 Packetbeat 的 CPU 使用率,我们建议您尝试该af_packet
选项。
如果您使用af_packet
嗅探器,您可以通过指定以下选项来调整其行为:
buffer_size_mb
在内核和用户空间之间使用的共享内存缓冲区的最大大小。更大的缓冲区通常会降低 CPU 使用率,但会消耗更多内存。此设置仅适用于 af_packet
嗅探器类型。默认值为 30 MB。
packetbeat.interfaces。设备:eth0
packetbeat.interfaces。类型:af_packet
packetbeat.interfaces。buffer_size_mb:100
auto_promisc_mode
Packetbeatauto_promisc_mode
在启动时会自动将接口置于混杂模式。此选项不适用于any
接口设备。默认选项为 false,需要手动设置混杂模式。警告:在某些情况下(例如节拍崩溃),即使在节拍关闭后,混杂模式仍可保持启用状态。
packetbeat.interfaces.device: eth0
packetbeat.interfaces.type: af_packet
packetbeat.interfaces.buffer_size_mb: 100
packetbeat.interfaces.auto_promisc_mode: true
with_vlans
Packetbeat 会自动生成一个 BPF,用于仅捕获它希望找到已知协议的端口上的流量。例如,如果您为 HTTP 配置了端口 80,为 MySQL 配置了端口 3306,Packetbeat 会生成以下 BPF 过滤器:"port 80 or port 3306"
.
但是,如果流量包含VLAN 标记,则 Packetbeat 生成的过滤器无效,因为偏移量移动了四个字节。要解决此问题,您可以启用该with_vlans
选项,该选项会生成如下所示的 BPF 过滤器"port 80 or port 3306 or (vlan and (port 80 or port 3306))"
bpf_filter
Packetbeat 会自动生成一个 BPF,用于仅捕获它希望找到已知协议的端口上的流量。例如,如果您为 HTTP 配置了端口 80,为 MySQL 配置了端口 3306,Packetbeat 会生成以下 BPF 过滤器:"port 80 or port 3306"
.
packetbeat.interfaces.device: eth0
packetbeat.interfaces.bpf_filter: "net 192.168.238.0/0 and port 80 or port 3306"
注意:设置此项将会禁用 BPF 过滤器的自动生成。如果您使用此设置,您有责任使 BPF 过滤器与本protocols
节中定义的端口保持同步。
internal_networks
如果internal_networks
指定了该选项,则在监控网络分路器或镜像端口时,Packetbeat 将尝试对与网络边界相关的不打算用于此主机的流量的网络方向性进行分类。中指定的任何 CIDR 块都internal_networks
被视为外围的内部,而落在这些 CIDR 块之外的任何 IP 地址都被视为外部。
当 Packetbeat 在位于网络边界(例如防火墙或 VPN)的设备上运行时,这很有用。请注意,这只影响网络流量的方向性如何分类。
ignore_outgoing
多台机器删除重复项
Flow
enabled
如果设置为 true,则启用流支持。设置为 false 以禁用网络流支持,而无需删除或注释掉流部分。默认值是true。
timeout
超时配置流的生命周期。如果在超时时间窗口内没有收到流的数据包,则流被终止并报告。默认值为 30 秒。
period
配置报告间隔。所有流量都在同一时间点报告。可以通过将值设置为 -1 来禁用定期报告。如果禁用,流在超时后仍会报告。默认值为 10 秒。
fields
您可以指定用于向输出添加附加信息的可选字段。例如,您可以添加可用于过滤日志数据的字段。字段可以是标量值、数组、字典或这些的任何嵌套组合。默认情况下,您在此处指定的字段将分组在fields
输出文档中的子字典下。要将自定义字段存储为顶级字段,请将fields_under_root
选项设置为 true。如果在通用配置中声明了重复字段,则其值将被此处声明的值覆盖。
fields_under_root
如果此选项设置为 true,则自定义字段 将作为顶级字段存储在输出文档中,而不是分组在fields
子字典下。如果自定义字段名称与 Packetbeat 添加的其他字段名称冲突,则自定义字段会覆盖其他字段。
tags
将与协议事件一起发送的标签列表。此设置是可选的。
processors
应用于协议生成的数据的处理器列表。
有关在配置中指定处理器的信息,请参阅处理器。
keep_null
如果此选项设置为 true,则具有null
值的字段将在输出文档中发布。默认情况下,keep_null
设置为false
。
index
覆盖流事件发布到的索引。