使用 Logstash 模块

编辑

使用 Logstash 模块

编辑

Logstash 模块提供了一种快速、端到端的解决方案,用于摄取数据并使用专用仪表板对其进行可视化。

这些模块可用

每个模块都预先打包了 Logstash 配置、Kibana 仪表板和其他元文件,使您能够更轻松地为特定用例或数据源设置 Elastic Stack。

您可以将模块视为提供三个基本功能,从而使您更容易入门。运行模块时,它将

  1. 创建 Elasticsearch 索引。
  2. 设置 Kibana 仪表板,包括在 Kibana 中可视化数据所需的索引模式、搜索和可视化。
  3. 使用读取和解析数据所需的配置运行 Logstash 管道。
Logstash modules overview

运行模块

编辑

要运行模块并设置仪表板,请指定以下选项

bin/logstash --modules MODULE_NAME --setup [-M "CONFIG_SETTING=VALUE"]

其中

  • --modules 运行由 MODULE_NAME 指定的 Logstash 模块。
  • -M "CONFIG_SETTING=VALUE" 为可选参数,用于覆盖指定的配置设置。您可以指定多个覆盖。每个覆盖必须以 -M 开头。有关更多信息,请参阅 在命令行中指定模块设置
  • --setup 在 Elasticsearch 中创建索引模式并导入 Kibana 仪表板和可视化。运行 --setup 是一个一次性设置步骤。在后续运行模块时省略此选项,以避免覆盖现有的 Kibana 仪表板。

例如,以下命令使用默认设置运行 Netflow 模块,并设置 netflow 索引模式和仪表板

bin/logstash --modules netflow --setup

以下命令运行 Netflow 模块并覆盖 Elasticsearch host 设置。这里假设您已运行了设置步骤。

bin/logstash --modules netflow -M "netflow.var.elasticsearch.host=es.mycloud.com"

配置模块

编辑

要配置模块,您可以 logstash.yml 设置文件 中指定配置设置,或使用命令行覆盖来 在命令行中指定设置

logstash.yml 中指定模块设置

编辑

要在 logstash.yml 设置文件 文件中指定模块设置,请将模块定义添加到 modules 数组中。每个模块定义以连字符 (-) 开头,后跟 name: module_name,然后是一系列指定模块设置的名称/值对。例如

modules:
- name: netflow
  var.elasticsearch.hosts: "es.mycloud.com"
  var.elasticsearch.username: "foo"
  var.elasticsearch.password: "password"
  var.kibana.host: "kb.mycloud.com"
  var.kibana.username: "foo"
  var.kibana.password: "password"
  var.input.tcp.port: 5606

有关可用模块设置的列表,请参阅模块的文档。

在命令行中指定模块设置

编辑

macOS Gatekeeper 警告

Apple 推出的更严格的公证要求影响了 8.16.0 Logstash 工件的公证。如果 macOS Catalina 在您第一次运行 Logstash 时显示一个对话框并中断它,您将需要采取措施以允许其运行。要防止 Gatekeeper 检查 Logstash 文件,请在下载的 .tar.gz 存档或提取到的目录上运行以下命令

xattr -d -r com.apple.quarantine <archive-or-directory>

例如,如果 .tar.gz 文件提取到默认的 logstash-8.16.0 目录,则命令为

xattr -d -r com.apple.quarantine logstash-8.16.0

或者,如果出现 Gatekeeper 弹出窗口,您可以通过遵循 在 Mac 上安全打开应用程序 的“如何打开尚未公证或来自未知开发人员的应用程序”部分中的说明来添加安全覆盖。

您可以通过在启动 Logstash 时指定一个或多个配置覆盖来覆盖模块设置。要指定覆盖,请使用 -M 命令行选项

-M MODULE_NAME.var.PLUGINTYPE1.PLUGINNAME1.KEY1=VALUE

请注意,完全限定的设置名称包含模块名称。

您可以指定多个覆盖。每个覆盖必须以 -M 开头。

以下命令运行 Netflow 模块并覆盖 Elasticsearch host 设置和 udp.port 设置

bin/logstash --modules netflow -M "netflow.var.input.udp.port=3555" -M "netflow.var.elasticsearch.hosts=my-es-cloud"

在命令行中定义的任何设置都是临时的,并且不会在后续 Logstash 运行中持久保存。如果要持久保存配置,则需要在 logstash.yml 设置文件 中进行设置。

在命令行中指定的设置将与 logstash.yml 文件中指定的任何设置合并。如果在一个选项在两个地方都设置,则命令行中指定的 value 优先。

从模块发送数据到 Elasticsearch Service

编辑

可以在 logstash.yml 设置文件 中指定 Cloud ID 和 Cloud Auth。它们应与您之前可能添加的任何模块配置设置分开添加。

Cloud ID 覆盖这些设置

var.elasticsearch.hosts
var.kibana.host

Cloud Auth 覆盖这些设置

var.elasticsearch.username
var.elasticsearch.password
var.kibana.username
var.kibana.password
# example with a label
cloud.id: "staging:dXMtZWFzdC0xLmF3cy5mb3VuZC5pbyRub3RhcmVhbCRpZGVudGlmaWVy"
cloud.auth: "elastic:YOUR_PASSWORD"
# example without a label
cloud.id: "dXMtZWFzdC0xLmF3cy5mb3VuZC5pbyRub3RhcmVhbCRpZGVudGlmaWVy"
cloud.auth: "elastic:YOUR_PASSWORD"

这些设置也可以在命令行中指定,如下所示

bin/logstash --modules netflow -M "netflow.var.input.udp.port=3555" --cloud.id <your-cloud-id> --cloud.auth <your-cloud-auth>

在使用模块时,请使用点表示法来指定 cloud.id 和 cloud.auth,如示例所示。

有关 Cloud ID 和 Cloud Auth 的更多信息,请参阅 将数据发送到 Elastic Cloud(托管的 Elasticsearch Service)