管道结构编辑

Logstash 管道配置文件为事件处理管道中要添加的每种类型的插件都设置了一个单独的部分。例如

# This is a comment. You should use comments to describe
# parts of your configuration.
input {
  ...
}

filter {
  ...
}

output {
  ...
}

每个部分都包含一个或多个插件的配置选项。如果指定了多个过滤器,则它们将按照在配置文件中出现的顺序应用。如果指定了多个输出,则事件将按照在配置文件中出现的顺序依次发送到每个目标。

准备好将管道部署到本地机器之外时,请使用 pipeline.id 设置将管道配置文件添加到 logstash.yml 中。准备好部署 多个管道 时,请在 pipelines.yml 文件中设置和配置管道。

插件配置编辑

插件配置由插件名称后跟该插件的一组设置组成。例如,此输入部分配置了两个文件输入

input {
  http {
    port => 3333
    tags => gateway
  }
  http {
    port => 4444
    tags => billing
  }
}

在此示例中,为每个文件输入配置了两个设置:porttags

可以配置的设置会根据插件类型而有所不同。有关每个插件的信息,请参阅 输入插件输出插件过滤器插件编解码器插件

值类型编辑

插件可能要求设置的值为特定类型,例如布尔值、列表或哈希。支持以下值类型。

数组编辑

此类型现在大多已弃用,取而代之的是使用标准类型(如 string),插件为其定义 :list => true 属性以进行更好的类型检查。它仍然需要处理哈希列表或混合类型,在这些类型中不需要类型检查。

示例

  users => [ {id => 1, name => bob}, {id => 2, name => jane} ]

列表编辑

本身不是一种类型,而是类型可以具有的属性。这使得对多个值进行类型检查成为可能。插件作者可以通过在声明参数时指定 :list => true 来启用列表检查。

示例

  path => [ "/var/log/messages", "/var/log/*.log" ]
  uris => [ "https://elastic.ac.cn", "http://example.net" ]

此示例配置了 path,它是一个 string,将成为一个列表,其中包含每个字符串的元素。它还将配置 uris 参数为一个 URI 列表,如果提供的任何 URI 无效,则会失败。

布尔值编辑

布尔值必须是 truefalse。请注意,truefalse 关键字没有用引号括起来。

示例

  ssl_enable => true

字节编辑

字节字段是一个字符串字段,表示有效的字节单位。它是在插件选项中声明特定大小的便捷方式。支持 SI(k M G T P E Z Y)和二进制(Ki Mi Gi Ti Pi Ei Zi Yi)单位。二进制单位以 1024 为基数,SI 单位以 1000 为基数。此字段不区分大小写,并接受值和单位之间的空格。如果未指定单位,则整数字符串表示字节数。

示例

  my_bytes => "1113"   # 1113 bytes
  my_bytes => "10MiB"  # 10485760 bytes
  my_bytes => "100kib" # 102400 bytes
  my_bytes => "180 mb" # 180000000 bytes

编解码器编辑

编解码器是用于表示数据的 Logstash 编解码器的名称。编解码器可以在输入和输出中使用。

输入编解码器提供了一种在数据进入输入之前对其进行解码的便捷方式。输出编解码器提供了一种在数据离开输出之前对其进行编码的便捷方式。使用输入或输出编解码器可以消除在 Logstash 管道中使用单独过滤器的需要。

可以在 编解码器插件 页面上找到可用编解码器的列表。

示例

  codec => "json"

哈希编辑

哈希是键值对的集合,以 "field1" => "value1" 格式指定。请注意,多个键值条目用空格隔开,而不是用逗号隔开。

示例

match => {
  "field1" => "value1"
  "field2" => "value2"
  ...
}
# or as a single line. No commas between entries:
match => { "field1" => "value1" "field2" => "value2" }

数字编辑

数字必须是有效的数字值(浮点数或整数)。

示例

  port => 33

密码编辑

密码是一个字符串,只有一个值,不会被记录或打印。

示例

  my_password => "password"

URI编辑

URI 可以是任何内容,从完整的 URL(如 https://elastic.ac.cn/)到简单的标识符(如 foobar)。如果 URI 包含密码(如 http://user:[email protected]),则 URI 的密码部分不会被记录或打印。

示例

  my_uri => "http://foo:[email protected]"

路径编辑

路径是一个字符串,表示有效的操作系统路径。

示例

  my_path => "/tmp/logstash"

字符串编辑

字符串必须是单个字符序列。请注意,字符串值用引号括起来,可以是双引号或单引号。

转义序列编辑

默认情况下,转义序列未启用。如果希望在带引号的字符串中使用转义序列,则需要在 logstash.yml 中设置 config.support_escapes: true。当为 true 时,带引号的字符串(双引号和单引号)将进行以下转换

文本

结果

\r

回车符(ASCII 13)

\n

换行符(ASCII 10)

\t

制表符(ASCII 9)

\\

反斜杠(ASCII 92)

\"

双引号(ASCII 34)

\'

单引号(ASCII 39)

示例

  name => "Hello world"
  name => 'It\'s a beautiful day'

字段引用编辑

字段引用是一个特殊的 字符串 值,表示事件中字段的路径,例如 @timestamp[@timestamp] 用于引用顶级字段,或 [client][ip] 用于访问嵌套字段。 字段引用深入探讨 提供了有关字段引用结构的详细信息。当作为配置选项提供时,字段引用需要用引号括起来,特殊字符必须按照与 字符串 相同的规则进行转义。

注释编辑

注释与 perl、ruby 和 python 中的注释相同。注释以 # 字符开头,不需要位于行的开头。例如

# this is a comment

input { # comments can appear at the end of a line, too
  # ...
}