[TOC]
### 管道配置文件的结构
对于每一种你想要添加到事件处理管道中的插件,Logstash管道配置文件中都有一个独立的配置段.示例:
```json
# This is a comment. You should use comments to describe
# parts of your configuration.
input {
...
}
filter {
...
}
output {
...
}
```
每个配置段包含一个或多个插件的配置.如果你定义了多个filter,他们会按照配置文件中出现的顺序生效.
### 插件配置
一个插件的配置由插件名和其后跟随的一块此插件的设置组成.如,这个配置段包含两个文件的inputs:
```con
input {
file {
path => "/var/log/message"
type => "syslog"
}
file {
path => "/var/log/apache/access.log"
type => "apache"
}
}
```
这个示例中,配置了两个设置给两个不同的inputs类型:path 和 type.
你可以根据插件的不同类型进行不同的配置.更多关于每个插件的信息可以查看:[Input Plugins](https://www.elastic.co/guide/en/logstash/current/input-plugins.html), [Output Plugins](https://www.elastic.co/guide/en/logstash/current/output-plugins.html), [Filter Plugins](https://www.elastic.co/guide/en/logstash/current/filter-plugins.html), and [Codec Plugins](https://www.elastic.co/guide/en/logstash/current/codec-plugins.html).
### 值类型
插件的某个设定的值可以使用某些类型的值来指定.如布尔,列表,或哈希.下面是支持的数据类型.
#### 数组
现在这种类型基本不再使用,而是使用标准类型如`string`来定义为形如`:list => true`以方便检查.对于仍然需要处理哈希列表或混合之类不需要检查的地方仍然需要.
原文:This type is now mostly deprecated in favor of using a standard type like string with the plugin defining the :list => true property for better type checking. It is still needed to handle lists of hashes or mixed types where type checking is not desired.
示例:
```conf
users => [ {id => 1, name => bob}, {id => 2, name => jane } ]
```
#### 列表
本身不是类型,但是可以有属性类型.This makes it possible to type check multiple values. Plugin authors can enable list checking by specifying `:list => true` when declaring an argument.
示例:
```conf
path => [ "/var/log/messages", "/var/log/*.log" ]
uris => [ "http://elastic.co", "http://example.net" ]
```
这个示例配置`path`,一个包含三个字符串中的每个元素的`string`列表.同时使用`uris`配置了一个URI列表,如果包含不可用的URIs,配置将会失败.原文:This example configures path, which is a string to be a list that contains an element for each of the three strings. It also will configure the uris parameter to be a list of URIs, failing if any of the URIs provided are not valid.
> <font color=#1E90FF size=4>TIP</font> :我只看到两个字符串,但是原文是三个.可能我理解有误.但我觉得是文档写错了.
#### 布尔
一个布尔值必然是`true`或`false`.注意`true`和`false`关键字不要使用引号引起来.
示例:
```conf
ssl_enable => true
```
#### 字节
字节字段是表示有效字节单位的字符串的字段.是一种很方便的方式在你的插件配置中声明特定的大小. SI (k M G T P E Z Y)和二进制(Ki Mi Gi Ti Pi Ei Zi Yi)单位都是支持的.二进制使用base-1024换算,SI使用1000换算.这个字段不区分大小写,并且在值和单位之间可以有空格.如果没有指定单位,则表示字节.
示例:
```conf
my_bytes => "1113" # 1113 bytes
my_bytes => "10MiB" # 10485760 bytes
my_bytes => "100kib" # 102400 bytes
my_bytes => "180 mb" # 180000000 bytes
```
一个codec是Logstash codec用来表示数据的名字.Codec可以同时用在inputs和outputs.
Input codecs提供了一中在你的数据进入input之前解码数据的简单的方法.Output codecs提供了一种在你的数据从output出去之前编码的简单的方法.使用input和output codecs可以不必在你的Logstash管道中设置单独的filter.
可以在[Codec Plugins](https://www.elastic.co/guide/en/logstash/current/codec-plugins.html)页面查看可用的codecs列表.
示例:
```conf
codec => "json"
```
#### 哈希
一个哈希是一个格式为`"fild1" => "value1"`的K/V集合.注意多个键值对使用空格而不是逗号分隔.
示例:
```conf
match => {
"field1" => "value1"
"field2" => "value2"
...
}
```
#### 数字
数字必须是一个有效的数值(浮点型或整型).
示例:
```conf
port => 33
```
#### 密码
密码是一个不会被记录日志或输出的单一的字符串值.
示例:
```conf
my_password => "password"
```
#### URI
URI可以是完整的URL,如http://elastic.co/,也可以是像foobar这样的简单标识符。如果一个URI包含密码类似*http://user:pass@example.net*,其中的密码部分将不会被记录日志或显示.
示例:
```conf
my_uri => "http://foo:bar@example.net"
```
#### Path
一个Path是一个用来表示一个有效的操作系统path的字符串.
示例:
```conf
my_path => "/tmp/logstash"
```
#### 字符串
字符串必须是一个单字符序列.注意字符串的值需要用引号引起来,单引号双引号都可以.
#### 转义序列
默认情况下转义序列是未开启的.如果你想在引用的字符串中使用转义序列.你需要在`logstash.yml`文件中设置`config.support_escapes: true`.当设置为`true`时,带引号(单引号和双引号)的字符串将按照下面的进行转义:
| Text | Result |
| ---- | ---------------- |
| \r | 回车(ASCII 13) |
| \n | 换行(ASCII 10) |
| \t | tab(ASCII 9) |
| \\\ | 反斜杠(ASCII 92) |
| \\" | 双引号(ASCII 34) |
| \\' | 单引号(ASCII 39) |
示例:
```conf
name => "Hello world"
name => 'It\'s a beautiful day'
```
### 注释
注释方式同perl,ruby,python相同.在注释内容的前面加一个#号,并且不需要在行首.如:
```conf
# this is a comment
input { # comments can appear at the end of a line, too
#...
}
```
- 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模块