概述
本文将介绍如何借助Winlogbeat和Vector在鸿鹄里采集Windows event log数据,使技术人员能够在鸿鹄里更便捷和高效地分析Windows event log数据。
操作步骤
Winlogbeat是一个开源的日志数据采集器,专门用于采集Windows操作系统中的event log数据。它可以采集多种Windows event log,例如Application、System和Security等。在Windows上安装完成后,如果要将采集的数据发送到控制台,只需在配置文件winlogbeat.yml中设置output.console即可,如下所示:
以下是运行winlogbeat.exe -c winlogbeat.yml后的两条样例输出(有裁剪),可以看到每行数据是JSON格式的。
这里顺便提一下,Winlogbeat会在winlogbeat.exe进程的启动目录里生成名为data的数据目录,如果想让Winlogbeat重新获取所有event log数据,可以在winlogbeat.exe进程停止运行后删除该目录,再重启即可。
接下来要解决的问题是如何将采集到的Windows event log数据发送到鸿鹄。这里需要引入Datadog的Vector。Vector作为一款流行的开源数据采集和传输工具,可以灵活地采集不同来源的数据并将其发送到不同的目标。
我们可以通过Vector的Exec方式来调用Winlogbeat,并将其输出作为数据源。而鸿鹄直接支持从Vector接收数据,把数据流串起来就可以把Windows event log数据导入到鸿鹄里了。
vector.toml配置文件的模版可以从鸿鹄的外部数据源管理页面里获取到,需要设置必需的目标数据集和数据源类型信息,这里分别是test_winlog和json。下载到的模版内容如下:
我们针对Windows event log修改配置文件内容如下:
在配置文件中,首先定义了一个名为vector_input_config的数据源,指定type为exec,表示要执行一个外部命令。command参数指定了Winlogbeat的完整命令,其中-c指定了Winlogbeat的配置文件路径,这里是C:\tools\winlogbeat.yml,可根据实际的配置文件位置自行更新。mode为streaming表示输出数据将被实时处理。
接下来定义了一个名为transform_fields的数据转换,_datatype和_target_table是鸿鹄的元数据,用于指定数据源类型和目标数据集。_host和_source也是鸿鹄的元数据,用于指定数据的host(这里通过函数get_hostname!()(https://vector.dev/docs/reference/vrl/functions/#get_hostname)获取了当前主机名)和source信息。
最后定义了两个名为honghu和console的输出目标。
honghu是发送数据到鸿鹄的输出目标,指定了地址和版本号。console是在控制台中输出数据,以便调试使用,调试完毕后可以删除该配置。
最后,我们只需要运行vector.exe -c vector.toml,一切正常的话数据就会导入到鸿鹄里了。从鸿鹄的查询界面可以看到数据正确地以JSON格式进行了字段提取,方便进一步分析和处理。