在 Logstash 中使用 Winlogbeat 模块:加载并接入 Ingest Pipeline 解析 Windows 日志

📅 发布时间:2026/9/22 18:38:44
在 Logstash 中使用 Winlogbeat 模块:加载并接入 Ingest Pipeline 解析 Windows 日志
数据工程后端【免费下载链接】logstashLogstash - transport and process your logs, events, or other data项目地址https://gitcode.com/gh_mirrors/lo/logstash点击查看免费下载Logstash 与 Winlogbeat 模块的集成并不需要复杂的 Logstash 过滤器重写Winlogbeat 自带的每个模块都内置了完整的解析逻辑ingest node pipelines、Elasticsearch 模板、输入配置与 Kibana 仪表盘你只需要把 pipeline 加载进 Elasticsearch再让 Logstash 的 elasticsearch 输出按事件元数据%{[metadata][pipeline]}动态选择对应 pipeline 即可。读完本文你将掌握从winlogbeat setup --pipelines到 Logstash 管线配置的完整接入流程并能处理数据流data streams与 Kafka 中间链路等实际场景。Winlogbeat 模块与 fileset 结构Winlogbeat 随发行版预置了一批模块modules例如 security、sysmon、powershell 等它们封装了从各类 Windows 日志提供方采集、解析、丰富和可视化数据所需的全部配置。每个 Winlogbeat 模块由一个或多个 fileset 组成而每个 fileset 包含ingest node pipelines在 Elasticsearch 侧完成日志解析与字段丰富Elasticsearch 模板index templates定义索引映射Winlogbeat 输入配置指定采集的 Windows 事件日志通道如 Security、SystemKibana 仪表盘提供开箱即用的可视化。这种模块即配置包的设计意味着解析逻辑默认由 Elastic Stack 的 ingest node 承担而不是在 Logstash 中通过 grok 过滤器手工实现。你可以把 Winlogbeat 模块与 Logstash 结合使用但需要额外的几步设置最简单的方式就是使用 Winlogbeat 提供的 ingest pipelines 完成解析。两种解析路径ingest pipeline 还是 Logstash 侧解析把 Winlogbeat或 Filebeat模块数据接入 Logstash 时存在两条可行的解析路径使用 ingest pipelines推荐本文主题在 Elasticsearch 侧加载模块自带的 ingest pipelineLogstash 只负责传输不做 grok/date 等解析。Logstash 配置极其轻量且字段结构与官方模块保持一致。Logstash 侧自行解析跳过 pipeline 加载步骤在 Logstash 配置中用 grok、date、geoip 等过滤器完成等价解析。这种方式不需要 ingest node但需要手工维护解析规则。仓库中 docs/static/filebeat_modules/system/pipeline.conf 与 docs/static/filebeat_modules/nginx/pipeline.conf 就是后一种路径的参考实现它们用 grok 匹配 sshd/sudo/useradd 或 nginx access/error 日志用 date 过滤纠正时间戳用 geoip 丰富 IP 信息并输出到elasticsearch。作为对比如果采用 ingest pipeline 方案这些解析工作全部下沉到 Elasticsearch 的 ingest nodeLogstash 管线只需下面介绍的两段式配置。第一步把 ingest pipelines 加载进 Elasticsearch在安装了 Winlogbeat 的系统上运行带--pipelines选项的setup命令为指定模块加载 ingest pipelines。例如以下命令加载 security 与 sysmon 两个模块的 ingest pipelineswinlogbeat setup --pipelines --modules security,sysmon这一步必须能连上 Elasticsearch因为 Winlogbeat 需要把 ingest pipelines 真正写入 Elasticsearch。如果你的 Winlogbeat 配置了其他输出比如直接输出到 Logstash可以临时禁用当前 output、临时启用 elasticsearch output执行完 setup 命令后再恢复原配置。补充说明setup 加载的 pipelines 会以winlogbeat-module之类的命名注册到 Elasticsearch 的_ingest/pipelineAPI 中后续 Winlogbeat 采集事件时会在事件的[metadata][pipeline]字段里写入应当使用的 pipeline 名如winlogbeat-securityLogstash 正是依赖这个元数据做动态路由。第二步配置 Logstash 按元数据选择 pipeline在安装了 Logstash 的系统上创建一个 Logstash pipeline 配置从某个 Logstash 输入例如 beats 或 Kafka读取数据发送到 elasticsearch 输出在 elasticsearch 输出中把pipeline选项设为%{[metadata][pipeline]}即可使用此前加载的 ingest pipelines。下面是一个从 Beats 输入读取数据、按 Winlogbeat 模块 ingest pipelines 解析的完整示例input { beats { port 5044 } } output { if [metadata][pipeline] { elasticsearch { hosts https://061ab24010a2482e9d64729fdb0fd93a.us-east-1.aws.found.io:9243 manage_template false index %{[metadata][beat]}-%{[metadata][version]} 1 action create 2 pipeline %{[metadata][pipeline]} 3 user elastic password secret } } else { elasticsearch { hosts https://061ab24010a2482e9d64729fdb0fd93a.us-east-1.aws.found.io:9243 manage_template false index %{[metadata][beat]}-%{[metadata][version]} 1 action create user elastic password secret } } }1 如果你在配置中禁用了数据流data streams请把index设为%{[metadata][beat]}-%{[metadata][version]}-%{YYYY.MM.dd}。数据流默认启用。2 如果禁用了数据流可以移除该设置或按需改为其他值。3 该设置让 Logstash 根据事件中携带的元数据自动选择正确的 ingest pipeline。关键点拆解pipeline %{[metadata][pipeline]}这是整套方案的核心。Winlogbeat 模块采集时会在元数据中标记应使用的 ingest pipeline如 security 模块对应winlogbeat-securityLogstash 在 elasticsearch 输出时把这个字段值作为 pipeline 名传给 Elasticsearch 的_ingest执行。manage_template false索引模板由 Winlogbeat setup 步骤负责加载Logstash 不应再覆盖管理模板避免与模块自带的模板冲突。if [metadata][pipeline]条件分支对未携带 pipeline 元数据的事件如自定义输入走不带pipeline设置的输出分支防止向 Elasticsearch 传递空 pipeline 名。变体中间加一层 Kafka原文档明确指出输入可以是 beats 或 Kafka 等。当 Winlogbeat 与 Logstash 之间隔着 Kafka 时配置方式同理只是把输入换成 Kafka input。仓库中 docs/reference/use-filebeat-modules-kafka.md 给出了 Filebeat 场景的完整示例Winlogbeat 可完全照搬input { kafka { bootstrap_servers myhost:9092 topics [filebeat] codec json } } output { if [metadata][pipeline] { elasticsearch { hosts https://myEShost:9200 manage_template false index %{[metadata][beat]}-%{[metadata][version]}-%{YYYY.MM.dd} pipeline %{[metadata][pipeline]} user elastic password secret } } else { elasticsearch { hosts https://myEShost:9200 manage_template false index %{[metadata][beat]}-%{[metadata][version]}-%{YYYY.MM.dd} user elastic password secret } } }Kafka 链路下Winlogbeat 侧需要把输出从 elasticsearch 切换为 Kafka output在winlogbeat.yml中注释掉 elasticsearch output、启用 Kafka outputtopic 固定为与 Logstash Kafka input 的topics一致并确保 JSON codec 输出以便 Logstash 侧还原字段。Logstash 侧启动方式不变bin/logstash -f mypipeline.conf数据写入 Elasticsearch 后可在 Kibana 中打开 Winlogbeat 模块对应的仪表盘查看 Windows 安全事件、Sysmon 事件等可视化结果。相关文档与仓库依据本文主题文档docs/reference/working-with-winlogbeat-modules.md通用方案说明Filebeat 版docs/reference/use-ingest-pipelines.md、docs/reference/working-with-filebeat-modules.mdKafka 中间链路完整示例docs/reference/use-filebeat-modules-kafka.mdLogstash 侧自行解析的对照实现docs/static/filebeat_modules/system/pipeline.conf、docs/static/filebeat_modules/nginx/pipeline.conf小结把 Winlogbeat 模块接入 Logstash 的本质是职责分工Winlogbeat 负责采集并在元数据中标注 pipelineElasticsearch ingest node 负责解析Logstash 只做动态路由与写入。只要完成setup 加载 pipelines elasticsearch 输出配置pipeline %{[metadata][pipeline]}manage_template false这三件事就能用最少的 Logstash 配置获得与官方模块完全一致的字段结构和可视化体验。赞分享数据工程后端【免费下载链接】logstashLogstash - transport and process your logs, events, or other data项目地址https://gitcode.com/gh_mirrors/lo/logstash点击查看免费下载相关推荐30个Illustrator脚本解放你的设计时间告别重复劳动的艺术30个Illustrator脚本解放你的设计时间告别重复劳动的艺术 Adobe Illustrator是设计师的必备工具但重复性操作常常消耗宝贵时间。il数据工程后端如何在 SpacetimeDB 模块中写日志并用 CLI 查看如何在 SpacetimeDB 模块中写日志并用 CLI 查看 当你在 SpacetimeDB 模块里写了业务逻辑reducer之后调试时往往需要看运行时数据库关系型数据库后端ZynqNet核心组件解析Processing Element与Memory Controller设计原理ZynqNet核心组件解析Processing Element与Memory Controller设计原理 ZynqNet是一款基于FPGA的嵌入式卷积神经网人工智能深度学习计算机视觉嵌入式硬件开发上一篇LizzieYzy终极指南免费开源围棋AI分析工具如何提升你的棋力300%下一篇Zotero茉莉花插件终极指南3步快速搞定中文文献元数据管理创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考