使用 Logstash 模块
编辑使用 Logstash 模块
编辑Logstash 模块提供了一个快速的端到端解决方案,用于摄取数据并使用专门构建的仪表板进行可视化。
这些模块可用:
每个模块都预先打包了 Logstash 配置、Kibana 仪表板和其他元文件,使您可以更轻松地为特定用例或数据源设置 Elastic Stack。
您可以将模块视为提供了三个基本功能,使您可以更轻松地入门。当您运行模块时,它将:
- 创建 Elasticsearch 索引。
- 设置 Kibana 仪表板,包括索引模式、搜索和可视化,以便在 Kibana 中可视化您的数据。
- 运行 Logstash 管道,其中包含读取和解析数据所需的配置。
运行模块
编辑要运行模块并设置仪表板,您需要指定以下选项:
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.17.0 Logstash 构件的公证。如果 macOS Catalina 在您首次运行 Logstash 时显示一个中断它的对话框,您需要采取操作以允许它运行。要防止 Gatekeeper 检查 Logstash 文件,请在下载的 .tar.gz
存档或解压到的目录上运行以下命令:
xattr -d -r com.apple.quarantine <archive-or-directory>
例如,如果 .tar.gz
文件被解压缩到默认的 logstash-8.17.0 目录,则命令是:
xattr -d -r com.apple.quarantine logstash-8.17.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
文件中指定的任何设置合并。如果一个选项在两个地方都设置了,则命令行中指定的值优先。
从模块将数据发送到 Elasticsearch Service
编辑Cloud ID 和 Cloud Auth 可以在 logstash.yml
设置文件中指定。它们应与您之前添加的任何模块配置设置分开添加。
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 服务)。