CEF with Elasticsearch
本指南说明如何使用 Elasticsearch、Kibana 和 Fleet Server 配合 MikroTik RouterOS 设备配置 CEF 日志收集与分析。内容涵盖先决条件、Elastic 和 RouterOS 组件的设置步骤,包括 agent policy 创建和 CEF 集成配置。
将 CEF 与 Elasticsearch 配合使用
简介
Elasticsearch 是一个流行的 NoSQL 数据库,可用于存储各种数据,包括 CEF 日志。结合 Kibana,你可以创建一个强大的工具来分析来自 RouterOS 设备的 CEF 日志。本指南依赖 Elasticsearch 集成,要使其正常工作,你需要一个可用的 Elasticsearch 环境。本指南不会涵盖 Elasticsearch 和 Kibana 的安装说明,但会涵盖设置 CEF 日志收集与分析的相关步骤。
使用 Elasticsearch 可以进行许多可能的配置,但为了本指南的目的,我们将使用以下原则:
- 一台 RouterOS (10.0.0.1) 设备将 CEF 日志发送到运行 CEF 集成的服务器 (10.0.0.2)。
- 运行 CEF 集成的服务器 (10.0.0.2) 摄取 CEF 日志、处理数据并将其发送到 Fleet Server (10.0.0.3)。
- Fleet Server (10.0.0.3) 将数据存储在 Elasticsearch (10.0.0.4) 中。
- Kibana (10.0.0.5) 从 Elasticsearch (10.0.0.4) 检索数据、分析数据并允许你搜索数据。
信息
本指南不会使用 Logstash 作为分析 CEF 日志的一部分;它已被 Fleet Server 取代。
信息
可以将 Elasticsearch、Kibana、Fleet Server 和 CEF 日志集成安装在同一台设备上。
先决条件
- 设置 Elasticsearch。
:::info Elasticsearch 在多个平台上得到广泛支持。建议设置一个 Elasticsearch 节点集群。 ::: - 设置 Kibana。
:::info Kibana 可以安装在安装 Elasticsearch 的同一台设备上,但出于性能考虑,也可以将其安装在单独的设备上。虽然不使用 Kibana 也可以分析 CEF 日志,但需要编写自己的 API 请求。Kibana 非常易于使用,并具有广泛的功能。 ::: - 设置 Fleet Server。
:::info 可以在安装 Elasticsearch 和/或 Kibana 的同一台设备上设置 Fleet Server。建议将 Fleet Server 安装在不同的设备上。有关硬件和拓扑要求的建议,请参阅 Elasticsearch 手册。 :::
设置
设置说明分为两部分:Elastic(有关 Elasticsearch、Kibana 和 Fleet Server 的配置)和 RouterOS(与你的 RouterOS 设备相关的配置)。
Elastic
警告
某些步骤可能会随时间变化,请参阅 Elastic 的手册以查找最新的步骤。
-
在主菜单下打开 Fleet 部分。
-
打开 "Agent policies" 部分。
-
按 "Create agent policy" 按钮以创建新的 Agent Policy。
-
为该策略命名,例如 "CEF policy",根据需要调整高级设置,然后创建该策略。或者你可以使用下面的 API 请求:
POST kbn:/api/fleet/agent_policies { "name": "CEF policy", "description": "", "namespace": "default", "monitoring_enabled": [ "logs", "metrics" ], "inactivity_timeout": 1209600, "is_protected": false } -
通过点击名称打开你新创建的策略。
-
按 "Add integration" 按钮。
-
搜索 "Common Event Format (CEF)" 并按 "Add Common Event Format (CEF)"。
-
调整配置,确保:
- 在 "Collect CEF application logs (input: udp)" 部分下将 "Syslog Host" 设置为 "0.0.0.0"。
- 在 "Collect CEF application logs (input: tcp)" 部分下将 "Syslog Host" 设置为 "0.0.0.0"。
-
保存集成。
-
按 "Add Elastic Agent to your host" 按钮。
-
按照说明将 Elastic Agent 添加到你的主机。
:::info Elastic 的官方手册建议将 Elastic Agent 安装为 Fleet-managed。考虑遵循该建议,因为当 agent 由 Fleet 管理时更容易管理。 ::: -
转到主菜单上的 "Stack Management",然后打开 "Ingest Pipelines"。
-
通过按 "Create pipeline" 然后 "New pipeline" 来创建新的 Ingest Pipeline。
-
将 "Name" 设置为 "logs-cef.log@custom"。
-
按 "Import processors" 并粘贴以下 processors:
{ "processors": [ { "set": { "ignore_empty_value": true, "field": "host.name", "copy_from": "cef.extensions.deviceHostName" } }, { "set": { "ignore_empty_value": true, "field": "host.ip", "copy_from": "cef.extensions.deviceAddress" } } ] }:::info "logs-cef.log@custom" pipeline 不是必需的,但当你还使用 Elasticsearch 处理其他类型的日志时,它可以使搜索日志更容易。 :::
-
按 "Save pipeline"。
-
确保你已在主机上以及从 RouterOS 设备 (10.0.0.1) 路径中的其他位置打开 9003/UDP 端口。
-
你的 Elastic Agent 现在已准备好接收 CEF 日志。
RouterOS
-
在你的 RouterOS 设备 (10.0.0.1) 上配置 Logging action 设置:
/system/logging/action add cef-event-delimiter="\n" name=syslog remote=10.0.0.2 remote-log-format=cef remote-port=9003 syslog-facility=syslog syslog-time-format=iso8601 target=remote /system/logging add action=syslog topics=info add action=syslog topics=error add action=syslog topics=warning add action=syslog topics=critical -
添加你希望从 RouterOS 设备 (10.0.0.1) 接收的主题,例如:
/system/logging add action=syslog topics=info add action=syslog topics=error add action=syslog topics=critical add action=syslog topics=warning add action=syslog topics=bridge,stp -
你现在应该开始看到 CEF 日志被摄取。
-
继续本指南以开始使用 Kibana。
使用 Kibana
Kibana 允许你搜索已摄取的 CEF 日志。要查看已摄取的日志,请执行以下操作: