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