使用 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.14.2 Logstash 工件的公证。如果 macOS Catalina 在您首次运行 Logstash 时显示一个对话框,中断它,您需要采取措施才能允许它运行。要防止 Gatekeeper 检查 Logstash 文件,请在下载的 .tar.gz 存档或提取到的目录上运行以下命令

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

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

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

或者,如果您看到 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)