使用 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.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)。