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

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

例如,如果将 .tar.gz 文件解压到默认的 logstash-8.14.3 目录,则命令为

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

或者,如果出现 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 文件中指定的任何设置合并。如果在两个位置都设置了一个选项,则以命令行中指定的值为准。

将数据从模块发送到 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)