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