Logstash-参考指南Elasticsearch输入插件

6次阅读

共计 3748 个字符,预计需要花费 10 分钟才能阅读完成。

Elasticsearch 输入插件

  • 插件版本:v4.3.0
  • 发布于:2019-02-04
  • 更新日志

对于其他版本,请参阅版本化插件文档。

获取帮助

有关插件的问题,请在讨论论坛中打开一个主题,对于错误或特性请求,请在 Github 中打开一个问题,关于 Elastic 支持的插件列表,请考虑 Elastic 支持矩阵。

描述

兼容性说明

从 Elasticsearch 5.3 开始,有一个名为 http.content_type.required 的 HTTP 设置,如果此选项设置为true,并且你使用的是 Logstash 2.4 到 5.2,则需要将 Elasticsearch 输入插件更新到 4.0.2 或更高版本。

从 Elasticsearch 集群中读取搜索查询的结果,这对于重放测试日志、重建索引等非常有用。你可以使用 cron 语法定期调度摄取(请参阅调度设置)或运行查询一次以将数据加载到 Logstash 中。

示例:

input {
  # 读取 Elasticsearch 中与给定查询匹配的所有文档
  elasticsearch {
    hosts => "localhost"
    query => '{"query": {"match": {"statuscode": 200} },"sort": ["_doc"] }'
  }
}

这将使用以下格式创建 Elasticsearch 查询:

curl 'http://localhost:9200/logstash-*/_search?&scroll=1m&size=1000' -d '{"query": {"match": {"statuscode": 200}
  },
  "sort": ["_doc"]
}'

调度

可以调度此插件的输入根据特定调度定期运行,此调度语法由 rufus-scheduler 提供支持,语法类似 cron,有一些特定于 Rufus 的扩展(例如时区支持)。

示例:

* 5 * 1-3 * 将从 1 月到 3 月的每天凌晨 5 点每分钟执行一次
0 * * * * 将在每天每小时的第 0 分钟执行
0 6 * * * America/Chicago 将在每天上午 6:00(UTC/GMT-5)执行

可以在此处找到描述此语法的更多文档。

Elasticsearch 输入配置选项

此插件支持以下配置选项以及稍后描述的通用选项。

设置 输入类型 必须
ca_file 一个有效的文件系统路径 No
docinfo boolean No
docinfo_fields 数组 No
docinfo_target string No
hosts 数组 No
index string No
password string No
query string No
schedule string No
scroll string No
size number No
slices number No
ssl boolean No
user string No

另请参阅通用选项以获取所有输入插件支持的选项列表。

ca_file

  • 值类型是路径
  • 此设置没有默认值
  • PEM 编码格式的 SSL 证书颁发机构文件,必要时还必须包含任何链证书。

docinfo

  • 值类型是boolean
  • 默认值为false
  • 如果设置,事件中包含 Elasticsearch 文档信息,例如索引、类型和 ID。关于元数据,可能需要注意的是,如果你正在提取文档,意图重新索引它们(或只是更新它们),那么 elasticsearch 输出中的 action 选项想要知道如何处理这些事情,可以使用添加到元数据的字段动态分配它。

    示例:

    input {
      elasticsearch {
        hosts => "es.production.mysite.org"
        index => "mydata-2018.09.*"
        query => '{"query": {"query_string": {"query":"*"} } }'
        size => 500
        scroll => "5m"
        docinfo => true
      }
    }
    output {
      elasticsearch {index => "copy-of-production.%{[@metadata][_index]}"
        document_type => "%{[@metadata][_type]}"
        document_id => "%{[@metadata][_id]}"
      }
    }

    从 Logstash 6.0 开始,由于删除了 Logstash 6.0 中的类型,因此不推荐使用 document_type 选项,它将在 Logstash 的下一个主要版本中删除。

docinfo_fields

  • 值类型是数组
  • 默认值为["_index", "_type", "_id"]
  • 如果通过启用 docinfo 选项请求文档元数据存储,则此选项会列出要在当前事件中保存的元数据字段,有关详细信息,请参阅 Elasticsearch 文档中的文档元数据。

docinfo_target

  • 值类型是string
  • 默认值为"@metadata"
  • 如果通过启用 docinfo 选项请求文档元数据存储,此选项命名在其下将元数据字段存储为子字段的字段。

hosts

  • 值类型是数组
  • 此设置没有默认值
  • 用于查询的一个或多个 Elasticsearch 主机的列表,每个主机可以是 IP、HOST、IP:port 或 HOST:port,端口默认为 9200。

ca_file

  • 值类型是路径
  • 此设置没有默认值
  • PEM 编码格式的 SSL 证书颁发机构文件,必要时还必须包含任何链证书。

index

  • 值类型是string
  • 默认值为"logstash-*"
  • 要搜索的索引或别名,有关如何引用多个索引的更多信息,请参阅 Elasticsearch 文档中的多索引文档。

password

  • 值类型是 password
  • 此设置没有默认值
  • 在向 Elasticsearch 服务器进行身份验证时,与 user 选项中的用户名一起使用的密码,如果设置为空字符串,则将禁用身份验证。

query

  • 值类型是string
  • 默认值为'{"sort": ["_doc"] }'
  • 要执行的查询,有关更多信息,请阅读 Elasticsearch 查询 DSL 文档。

schedule

  • 值类型是string
  • 此设置没有默认值
  • 以 Cron 格式定期运行语句的调度,例如:"* * * * *"(每分钟执行一次查询),默认情况下没有调度,如果没有给出调度,那么该语句只运行一次。

scroll

  • 值类型是string
  • 默认值为"1m"
  • 此参数控制滚动请求的保持活动时间(以秒为单位)并启动滚动过程,每次往返(即在前一个滚动请求到下一个滚动请求之间)应用的超时。

size

  • 值类型是number
  • 默认值为1000
  • 这允许你设置每个滚动返回的最大命中数。

slices

  • 值类型是number
  • 没有默认值
  • 合理的值范围从 2 到大约 8
  • 在某些情况下,可以通过使用 Sliced Scroll API 同时消费查询的多个不同切片来提高总体吞吐量,特别是如果管道花费大量时间等待 Elasticsearch 提供结果。如果设置,则 slices 参数告诉插件将工作分成多少个切片,并将并行地从切片生成事件,直到所有切片完成滚动。

    Elasticsearch 手册指出,当滚动查询使用的切片多于索引中的碎片时,对查询和 Elasticsearch 集群可能会产生负面的性能影响。

  • 如果未设置 slices 参数,则插件不会将切片指令注入查询。

ssl

  • 值类型是boolean
  • 默认值为false
  • 如果启用,则在与 Elasticsearch 服务器通信时将使用 SSL(即将使用 HTTPS 而不是普通 HTTP)。

user

  • 值类型是string
  • 此设置没有默认值
  • 在向 Elasticsearch 服务器进行身份验证时,与 password 选项中的密码一起使用的用户名,如果设置为空字符串,则将禁用身份验证。

通用选项

所有输入插件都支持以下配置选项:

设置 输入类型 必需
add_field hash No
codec codec No
enable_metric boolean No
id 字符串 No
tags 数组 No
type 字符串 No

细节

add_field

  • 值类型是hash
  • 默认值为{}
  • 向事件添加字段。

codec

  • 值类型是codec
  • 默认值为"json"
  • 用于输入数据的编解码器,输入编解码器是一种在数据进入输入之前解码数据的便捷方法,无需在 Logstash 管道中使用单独的过滤器。

enable_metric

  • 值类型是boolean
  • 默认值为true
  • 默认情况下,会记录能记录的所有指标,但是你可以禁用特定插件的指标收集。

id

  • 值类型是string
  • 此设置没有默认值
  • 为插件配置添加唯一ID,如果未指定 ID,Logstash 将生成一个 ID,强烈建议在配置中设置此 ID,当你有两个或更多相同类型的插件时,这尤其有用,例如,如果你有 2 个 elasticsearch 输入。在这种情况下添加命名 ID 将有助于在使用监控 API 时监控 Logstash。

    input {
     elasticsearch {id => "my_plugin_id"}
    }

tags

  • 值类型是数组
  • 此设置没有默认值
  • 为你的事件添加任意数量的任意标签,这有助于以后处理。

type

  • 值类型是string
  • 此设置没有默认值
  • type 字段添加到此输入处理的所有事件,类型主要用于过滤器激活,类型存储为事件本身的一部分,因此你也可以使用该类型在 Kibana 中搜索它。如果你尝试在已有类型的事件上设置类型(例如,当你将事件从 shipper 发送到索引器时),则新输入将不会覆盖现有类型,shipper 设置的类型即使在发送到另一个 Logstash 服务器时仍会保留该事件。
正文完
 0