Elastic Stack 的自定义 Beat 与基于 Polycube 的 eBPF 多维数据集进行交互。
确保此文件夹位于以下位置: ${GOPATH}/src/gitlab.com/astrid-repositories/cubebeat
mkdir -p ${GOPATH}/src/gitlab.com/astrid-repositories/
cd ${GOPATH}/src/gitlab.com/astrid-repositories
git clone https://gitlab.com/astrid-repositories/cubebeat.git
要构建Cubebeat
的二进制文件,请运行以下命令。这将在同一目录中生成一个名为cubebeat 的二进制文件。
chmod +x build.sh
build.sh
要在启用调试输出的情况下运行Cubebeat
,请运行:
./cubebeat -c cubebeat.yml -e -d "*"
要在不启用调试输出的情况下运行Cubebeat
,请运行:
./cubebeat -c cubebeat.yml -e
Cubebeat
读取作为参数传递的配置文件(默认: cubebeat.yml
)。
该文件接受配置文件格式中所述的常见节拍配置。
此外,它还接受特定配置,如下例所示:
cubebeat :
config.inputs :
path : config/*.yml
reload :
enabled : true
period : 10s
以下各节将解释不同的选项。
Cubebeat
可以加载外部配置文件作为输入,允许您将配置分成多个较小的配置文件。
在具有
POSIX
文件权限的系统上,所有配置文件都受到所有权和文件权限检查。
有关更多信息,请参阅Beats Platform Reference中的配置文件所有权和权限。
您可以在cubebeat.yml
的cubebeat.config.inputs
部分中指定path
选项。例如:
cubebeat :
config.inputs :
path : config.d/*.yml
通过path
Glob 找到的每个文件都必须包含一个或多个输入定义的列表。
每个外部配置文件的第一行必须是以
- name
开头的输入定义。
例如:
- name : synflood
enabled : true
period : 10s
polycube.api-url : " http://localhost:9000/polycube/v1/synflood/sf/stats/ "
- name : packetcapture
enabled : true
period : 5s
polycube.api-url : " http://localhost:9000/polycube/v1/packetcapture/pc "
两个正在运行的输入不能具有相同的
name
,这一点至关重要。如果多个输入相同的name
,则只接受第一个;而其他的则被丢弃。
当该选项enabled
为true
时,特定多维数据集输入会在period
中定义的每个时间间隔定期与特定 Polycube 多维数据集交互,从而向polycube.api-url
中定义的 URL 发出 HTTP 请求。
如果多维数据集不可访问或者在检索数据时出现一些错误,
cubebeat
将继续工作,并在period
中定义的一段时间后尝试新连接。
每个时间period
,特定的多维数据集输入都会将新的Elastic
事件发送到配置文件cubebeat.yml
中定义的输出
您可以将cubebeat
配置为在发生更改时动态重新加载外部配置文件。此功能适用于作为外部配置文件加载的输入配置。您无法使用此功能重新加载主cubebeat.yml
配置文件。
要配置此功能,您需要指定一个path
(Glob) 来监视配置更改。当 Glob 找到的文件发生更改时,新的输入将根据配置文件中的更改启动和停止。
此功能在容器环境中特别有用,其中一个容器用于跟踪同一主机上其他容器中运行的服务的日志。
要启用动态配置重新加载,请在cubebeat.config.inputs
部分下指定path
和reload
选项。例如:
cubebeat :
config.inputs :
path : config/*.yml
reload :
enabled : true
period : 10s
选项 | 描述 |
---|---|
path | 定义要检查更改的文件的 Glob。 |
reload.enabled | 设置为 true 时,启用动态配置重新加载。 |
reload.period | 指定检查文件更改的频率。 不要将 period 设置为小于1s 因为文件的修改时间通常以秒为单位存储。将 period 设置为小于1s 会导致不必要的开销。 |
在具有
POSIX
文件权限的系统上,所有配置文件都受到所有权和文件权限检查。
有关更多信息,请参阅Beats Platform Reference中的配置文件所有权和权限。