[TOC]
# 使用Logstash模块
Logstash模块提供了一个快速的,点对点的获取数据和可视化仪表盘的解决方案。
可用的有这些模块:
- [Elastic Cloud](https://www.elastic.co/guide/en/logstash/6.5/connecting-to-cloud.html)
- [ArcSight 模块](https://www.elastic.co/guide/en/logstash/6.5/arcsight-module.html)
- [Netflow 模块](https://www.elastic.co/guide/en/logstash/6.5/netflow-module.html)
- [Microsoft Azure 模块](https://www.elastic.co/guide/en/logstash/6.5/azure-module.html)
每个模块都预先打包了Logstash配置,Kibana仪表板和其他元文件,使您可以更轻松地设置Elastic Stack为特定用例或数据源。
你可以理解为模块提供了三个基础功能以便更容易开始。当你运行模块的时候,它会:
1. 创建Elasticsearch index(索引)
2. 设置Kibana仪表盘,包括索引模式,搜索,和在Kibana中可视化您的数据所需的可视化。
3. 使用配置中需要读取和解析的数据运行Logstash管道。
![Logstash modules overview](https://www.elastic.co/guide/en/logstash/6.5/static/images/logstash-module-overview.png)
## 运行模块
要运行模块并设定仪表盘,你需要指定下面的选项:
```bash
bin/logstash --modules MODULE_NAME --setup [-M "CONFIG_SETTING=VALUE"]
```
Where:
+ `--modules`通过`MODULE_NAME`指定运行的Logstash模块
+ `-M "CONFIG_SETTING=VALUE"`是可选项,并覆盖设置中的指定配置。可以指定多个设置。每个设置都需要以`-M`开始。在[在命令行中指定模块设置](https://www.elastic.co/guide/en/logstash/6.5/logstash-modules.html#overriding-logstash-module-settings)查看更多信息。
+ `--setup`创建在Elasticsearch中创建一个index pattern并将其导入到Kibana仪表盘和可视化。运行`--setup`是一次性步骤。后续运行中不需要再次指定一面覆盖已经在Kibana仪表盘中存在的设定。(Running `--setup` is a one-time setup step. Omit this option for subsequent runs of the module to avoid overwriting existing Kibana dashboards.)
比如,下面的命令使用默认的设置运行Netflow模块,并设置netflow 的index pattern和仪表盘:
```bash
bin/logstash --modules netflow --setup
```
下面运行的Netflow 模块覆盖了Elasticsearch的`host`设置。这里假定你已经运行了setup步骤。(就是已经 `--setup`过了)
```bash
bin/logstash --modules netflow -M "netflow.var.elasticsearch.host=es.mycloud.com"
```
## 配置模块
要配置一个模块,你可以在`logstash.yml`[配置文件](https://www.elastic.co/guide/en/logstash/6.5/logstash-settings-file.html)中进行指定,也可以使用命令行进行指定。
### 在`logstash.yml`中指定模块设置
要在`logstash.yml`文件中指定模块配置,you add a module definition to the modules array.每个模块定义都以(-)开始,然后是`name: module_name`然后是一系列的name/value键值对。示例:
```yaml
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
```
(感觉罗里吧嗦的。不就是一个遵循yaml语法的配置文件,说那么一大堆。)
要查看可用的模块设定,查看模块对应的文档。
### 在命令行中指定模块设置
你可以在启动Logstash的时候指定一个或多个设置来覆盖设定。在命令行中使用`-M`选项来指定需要覆盖的设定:
```bash
-M MODULE_NAME.var.PLUGINTYPE1.PLUGINNAME1.KEY1=VALUE
```
注意,完整的模块设置名称包含模块名。
你可以指定多个模块设置,每个都以`-M`开始。
下面的命令运行了Netflow模块,且同时指定Elasticsearch `host`设置和`udp.port`设置。
```bash
bin/logstash --modules netflow -M "netflow.var.input.udp.port=3555" -M "netflow.var.elasticsearch.hosts=my-es-cloud"
```
任何命令行中指定的设置都是暂时的,下次运行Logstash的时候不会持续存在。如果需要持久存在,需要在`logstash.yml`文件中进行配置。
在命令行中指定的设置和文件中的会合并,如果同时存在,则命令行中的优先。
# 总结
罗里吧嗦的真是,这一整篇也就几句话概括。
1. 命令格式:`bin/logstash --module MODULE_NAME --setup [-M "CONFIG_SETTING=VALUE"]`
2. `--setup`执行一次就可以了。
3. `-M "CONFIG_SETTING=VALUE"`指定模块设置,优先级高于配置文件的优先级,多个设置使用多个`-M`
4. 模块配置可以通过`logstash.yml`进行配置,格式遵循`yaml`语法。可用配置参考相关文档。
5. 通篇使用的都是overrides来强调命令行优先级较高 ?
- Emmm
- Logstash简介
- 开始使用Logstash
- 安装Logstash
- 储存你的第一个事件
- 通过Logstash解析日志
- 多个输入和输出插件的混合使用
- Logstash是如何工作的
- 执行模型Execution Model
- 设置并运行Logstash
- Logstash目录布局
- Logstash配置文件
- logstash.yml
- Secrets keystore for secure settings
- 从命令行运行Logstash
- 以服务的方式运行Logstash
- 在Docker中运行Logstash
- 配置容器版Logstash
- Logging
- 关闭Logstash
- 安装X-Pack
- 设置X-Pack
- 升级Logstash
- 使用包管理升级
- 直接下载进行升级
- 升级至6.0
- Upgrading with the Persistent Queue Enabled
- 配置Logstash
- 管道配置文件的结构
- 访问配置中的事件数据和字段
- 在配置中使用环境变量
- Logstash配置示例
- 多管道
- 管道间通信(beta)
- 重载配置文件
- 管理多行事件
- Glob Pattern Support
- Converting Ingest Node Pipelines
- Logstash间通信
- 配置集中式管道管理
- X-Pack Monitoring
- X-Pack Security
- X-Pack Settings
- Field References Deep Dive(深入字段引用)
- 管理Logstash
- 集中式管道管理
- 使用Logstash模块
- 使用Elastic Cloud
- Logstash ArcSight模块