Elasticsearch 输出插件
编辑Elasticsearch 输出插件编辑
- 插件版本: v11.22.7
- 发布日期: 2024-06-25
- 变更日志
有关其他版本,请参阅 版本化插件文档.
获取帮助编辑
如果您对插件有任何疑问,请在 Discuss 论坛中发布主题。对于错误或功能请求,请在 Github 中创建问题。有关 Elastic 支持的插件列表,请参阅 Elastic 支持矩阵.
描述编辑
Elasticsearch 为所有类型的数据提供近乎实时的搜索和分析。Elasticsearch 输出插件可以将时间序列数据集(如日志、事件和指标)和非时间序列数据存储在 Elasticsearch 中。
您可以在网站登录页面或 Elasticsearch 文档 中 详细了解 Elasticsearch。
兼容性说明
连接到 Elasticsearch 7.x 时,此插件的现代版本在插入文档时不会使用文档类型,除非用户显式设置 document_type
。
如果您使用的是早期版本的 Logstash 并希望连接到 Elasticsearch 7.x,请先将 Logstash 升级到 6.8 版,以确保它获取对 Elasticsearch 索引模板的更改。
如果您使用的是自定义 template
,请确保您的模板在连接到 Elasticsearch 7.x 之前使用 _doc
文档类型。
无服务器上的 Logstash 到 Elasticsearch编辑
您可以使用此插件将 Logstash 数据发送到无服务器上的 Elasticsearch。无服务器上的 Elasticsearch 与自托管 Elasticsearch 之间存在一些区别。
- 使用 API 密钥 从 Logstash 访问 Elastic Cloud 无服务器。您的 Elasticsearch 输出插件 配置中的任何基于用户的安全设置都会被忽略,并可能导致错误。
- 无服务器上的 Elasticsearch 使用 数据流 和 数据生命周期管理 (DLM),而不是索引生命周期管理 (ILM)。您的 Elasticsearch 输出插件 配置中的任何 ILM 设置都会被忽略,并可能导致错误。
- Logstash 监控 可通过 Logstash 集成 在 Elastic Cloud 无服务器上的 Elastic 可观测性 中获得。
有关将数据从 Logstash 发送到无服务器上的 Elasticsearch 的更多信息,请查看 无服务器上的 Elasticsearch 文档。
Elastic Cloud 上的托管 Elasticsearch 服务编辑
您可以在自己的硬件上运行 Elasticsearch,也可以使用我们在 AWS、GCP 和 Azure 上提供的托管 Elasticsearch 服务。 免费试用 Elasticsearch 服务。
与 Elastic 通用模式 (ECS) 的兼容性编辑
此插件会将事件以您的管道生成的形状持久保存到 Elasticsearch,并且不能用于将事件结构重新整形为符合 ECS 的形状。要生成完全符合 ECS 的事件,您需要在整个管道定义中填充 ECS 定义的字段。
但是,它管理的 Elasticsearch 索引模板可以通过设置 ecs_compatibility
来配置为与 ECS 兼容。通过使用与 ECS 兼容的模板,我们可以确保 Elasticsearch 准备以与 ECS 兼容的方式创建和索引字段,并且会正确拒绝具有冲突字段且无法强制转换的事件。
数据流编辑
Elasticsearch 输出插件可以将时间序列数据集(如日志、事件和指标)和非时间序列数据存储在 Elasticsearch 中。
使用数据流选项将时间序列数据集(如日志、指标和事件)索引到 Elasticsearch 和无服务器上的 Elasticsearch 中
ECS 兼容性 必须启用(设置为 v1
或 v8
),数据流才能正常工作。
数据流配置示例编辑
示例:基本默认配置
output { elasticsearch { hosts => "hostname" data_stream => "true" } }
此示例显示了处理数据流的最小设置。具有 data_stream.*`
字段的事件将路由到相应的数据流。如果缺少字段,路由将默认为 logs-generic-default
。
示例:自定义数据流名称
output { elasticsearch { hosts => "hostname" data_stream => "true" data_stream_type => "metrics" data_stream_dataset => "foo" data_stream_namespace => "bar" } }
写入不同索引:最佳实践编辑
当 ilm_enabled
为 true
且使用 ilm_rollover_alias
时,您无法使用动态变量替换。
如果您将事件发送到同一个 Elasticsearch 集群,但目标是不同的索引,您可以
- 使用不同的 Elasticsearch 输出,每个输出都具有不同的
index
参数值 - 使用一个 Elasticsearch 输出,并使用动态变量替换
index
参数
每个 Elasticsearch 输出都是一个连接到集群的新客户端
- 它必须初始化客户端并连接到 Elasticsearch(如果您有更多客户端,则重新启动时间更长)
- 它具有关联的连接池
为了最大程度地减少到 Elasticsearch 的打开连接数,最大化批量大小并减少“小”批量请求的数量(这很容易填满队列),通常使用单个 Elasticsearch 输出效率更高。
示例
output { elasticsearch { index => "%{[some_field][sub_field]}-%{+YYYY.MM.dd}" } }
如果事件中没有包含目标索引前缀的字段,该怎么办?
您可以使用 mutate
过滤器和条件添加 [@metadata]
字段 来为每个事件设置目标索引。 [@metadata]
字段不会发送到 Elasticsearch。
示例
filter { if [log_type] in [ "test", "staging" ] { mutate { add_field => { "[@metadata][target_index]" => "test-%{+YYYY.MM}" } } } else if [log_type] == "production" { mutate { add_field => { "[@metadata][target_index]" => "prod-%{+YYYY.MM.dd}" } } } else { mutate { add_field => { "[@metadata][target_index]" => "unknown-%{+YYYY}" } } } } output { elasticsearch { index => "%{[@metadata][target_index]}" } }
重试策略编辑
重试策略在 8.1.1 版本中发生了重大变化。此插件使用 Elasticsearch 批量 API 来优化其导入到 Elasticsearch。这些请求可能会遇到部分或全部失败。批量 API 将请求批次发送到 HTTP 端点。HTTP 请求的错误代码与单个文档的错误代码的处理方式不同。
对批量 API 的 HTTP 请求预计将返回 200 响应代码。所有其他响应代码都会无限期重试。
以下文档错误的处理方式如下
- 400 和 404 错误将发送到死信队列 (DLQ)(如果已启用)。如果未启用 DLQ,则会发出日志消息,并且事件将被丢弃。有关更多信息,请参阅 DLQ 策略。
- 409 错误(冲突)将记录为警告并被丢弃。
请注意,409 异常不再重试。如果您遇到 409 异常,请设置更高的 retry_on_conflict
值。对于 Elasticsearch 来说,重试这些异常比此插件重试这些异常的性能更高。
DLQ 策略编辑
来自 Elasticsearch 的映射 (404) 错误会导致数据丢失。不幸的是,无法在没有人工干预的情况下处理映射错误,也无法查看导致映射不匹配的字段。如果启用了 DLQ,则会导致映射错误的原始事件将存储在文件中,以便稍后处理。通常,可以删除导致问题的字段并将其重新索引到 Elasticsearch。如果未启用 DLQ 并且发生映射错误,则问题将记录为警告,并且事件将被丢弃。有关在 DLQ 中处理事件的更多信息,请参阅 死信队列 (DLQ)。可以使用 dlq_custom_codes
自定义 DLQ 接受的错误代码列表,但应仅在有充分理由的情况下使用。
索引生命周期管理 (ILM)编辑
- 索引生命周期管理 (ILM) 功能不适用于无服务器上的 Elasticsearch。您的插件配置中的任何 ILM 设置都会被忽略,并可能导致错误。
- ILM 功能需要插件版本
9.3.1
或更高版本。 - 此功能需要 Elasticsearch 实例 6.6.0 或更高版本,并且至少需要基本许可证
Logstash 可以使用 索引生命周期管理 来自动管理索引随时间的推移。
索引生命周期管理的使用由 ilm_enabled
设置控制。默认情况下,此设置会检测 Elasticsearch 实例是否支持 ILM,如果可用,则使用它。 ilm_enabled
也可以设置为 true
或 false
来覆盖自动检测或禁用 ILM。
这将覆盖索引设置并调整 Logstash 模板以写入必要的设置,以便模板支持索引生命周期管理,包括要使用的索引策略和滚动别名。
Logstash 会为要写入的索引创建一个滚动别名,包括实际索引的命名模式,并且除非已指定现有 ILM 策略,否则还会创建一个默认策略。默认策略配置为在索引大小达到 50 千兆字节或索引年龄达到 30 天时(以先到者为准)滚动索引。
默认滚动别名为 logstash
,滚动索引的默认模式为 {now/d}-00001
,这将在索引滚动的日期命名索引,后跟一个递增的数字。请注意,模式必须以连字符和一个将被递增的数字结尾。
有关命名的更多详细信息,请参阅 滚动 API 文档。
可以修改滚动别名、ilm 模式和策略。
请参阅下面的配置以获取示例
output { elasticsearch { ilm_rollover_alias => "custom" ilm_pattern => "000001" ilm_policy => "custom_policy" } }
- 自定义 ILM 策略必须已存在于 Elasticsearch 集群中才能使用。
- 如果修改了滚动别名或模式,则需要覆盖索引模板,因为设置
index.lifecycle.name
和index.lifecycle.rollover_alias
会自动写入模板 - 如果在输出定义中提供了索引属性,它将被滚动别名覆盖。
批次大小edit
此插件尝试将事件批次作为单个请求发送到 Elasticsearch 批量 API。但是,如果批次超过 20 MB,我们将将其分解为多个批量请求。如果单个文档超过 20 MB,则将其作为单个请求发送。
DNS 缓存edit
此插件使用 JVM 来查找 DNS 条目,并且受 networkaddress.cache.ttl 值的影响,这是 JVM 的全局设置。
例如,要将 DNS TTL 设置为 1 秒,您需要将 LS_JAVA_OPTS
环境变量设置为 -Dnetworkaddress.cache.ttl=1
。
请记住,在保持活动连接的情况下,连接不会重新评估其 DNS 值。
HTTP 压缩edit
此插件始终从 Elasticsearch 读取压缩的响应。默认情况下,它会将压缩的批量请求发送到 Elasticsearch。
如果您担心带宽,可以设置更高的 compression_level
以用 CPU 容量换取网络 IO 的减少。
身份验证edit
可以使用以下选项之一对安全的 Elasticsearch 集群进行身份验证:user
/password
、cloud_auth
或 api_key
。
授权edit
对安全的 Elasticsearch 集群进行授权需要在索引级别具有 read
权限,并在集群级别具有 monitoring
权限。集群级别的 monitoring
权限对于执行定期连接检查是必要的。
处理非 UTF-8 数据edit
此插件使用 JSON API 将事件传输到 Elasticsearch,因此要求事件中的所有字符串值都是有效的 UTF-8。当事件上的字符串值包含一个或多个在 UTF-8 中无效的字节序列时,每个有问题的字节序列将被替换为 UTF-8 替换字符 (\uFFFD
)。
Elasticsearch 输出配置选项edit
此插件支持以下配置选项,以及后面描述的 通用选项 和 Elasticsearch 输出已弃用配置选项。
设置 | 输入类型 | 必需 |
---|---|---|
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
数字,其中之一为 |
否 |
|
否 |
||
字符串,其中之一为 |
否 |
|
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
字符串,其中之一为 |
否 |
|
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
字符串,其中之一为 |
否 |
|
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
list of 路径 |
否 |
|
list of 字符串 |
否 |
|
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
字符串,其中之一为 |
否 |
|
有效的文件系统路径 |
否 |
|
字符串,其中之一为 |
否 |
|
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
字符串,其中之一为 |
否 |
另请参阅 通用选项,了解所有输出插件支持的选项列表。
action
edit
- 值类型为 字符串
- 默认值为数据流的
create
和非时间序列数据的index
。
要执行的 Elasticsearch 操作。有效操作为
-
index
:索引文档(来自 Logstash 的事件)。 -
delete
:通过 ID 删除文档(此操作需要 ID) -
create
:索引文档,如果索引中已存在具有该 ID 的文档,则会失败。 -
update
:通过 ID 更新文档。更新有一个特殊情况,您可以在其中执行 upsert(如果不存在,则更新文档)。请参阅doc_as_upsert
选项。注意:这不起作用,并且在 Elasticsearch 1.x 中不受支持。请升级到 ES 2.x 或更高版本才能将此功能与 Logstash 一起使用! - 一个 sprintf 风格的字符串,用于根据事件内容更改操作。值
%{[foo]}
将使用 foo 字段作为操作。如果解析的操作不在 [index
,delete
,create
,update
] 中,则事件将不会发送到 Elasticsearch。相反,事件将被发送到管道的 死信队列 (DLQ)(如果已启用),或者它将被记录并丢弃。
有关操作的更多详细信息,请查看 Elasticsearch 批量 API 文档。
api_key
edit
- 值类型为 密码
- 此设置没有默认值。
使用 Elasticsearch API 密钥进行身份验证。请注意,此选项还需要 SSL/TLS,可以通过提供 cloud_id
、HTTPS hosts
列表或通过设置 ssl_enabled => true
来启用。
格式为 id:api_key
,其中 id
和 api_key
与 Elasticsearch 创建 API 密钥 API 返回的值相同。
bulk_path
edit
- 值类型为 字符串
- 此设置的默认值为
/_bulk?filter_path=errors,items.*.error,items.*.status
执行 _bulk 请求的 HTTP 路径 * 此默认批量路径是 path
参数的值和 /_bulk?filter_path=errors,items.*.error,items.*.status
的串联 * filter_path
查询参数附加到批量路径以减少 logstash 和 elasticsearch 之间的有效负载。但是,如果在 bulk_path
设置中包含了自定义 filter_path
查询参数,则将使用该值。
ca_trusted_fingerprint
edit
- 值类型为 字符串,并且必须包含正好 64 个十六进制字符。
- 此设置没有默认值。
- 使用此选项 * 需要 * Logstash 8.3+
要信任的 SSL 证书颁发机构的 SHA-256 指纹,例如 Elasticsearch 集群的自动生成的自我签名 CA。
cloud_auth
edit
- 值类型为 密码
- 此设置没有默认值。
云身份验证字符串(“<username>:<password>” 格式)是 user
/password
对的替代方案。
有关更多详细信息,请查看 Logstash 到云文档。
cloud_id
edit
- 值类型为 字符串
- 此设置没有默认值。
来自 Elastic Cloud Web 控制台的云 ID。如果设置了 hosts
,则不应使用。
有关更多详细信息,请查看 Logstash 到云文档。
compression_level
编辑
- 值可以是以下任何一个:
0
,1
,2
,3
,4
,5
,6
,7
,8
,9
- 默认值为
1
gzip 压缩级别。将此值设置为 0
将禁用压缩。压缩级别必须在 1
(最佳速度)到 9
(最佳压缩)范围内。
提高压缩级别将减少网络使用量,但会增加 CPU 使用量。
data_stream
编辑
- 值可以是以下任何一个:
true
,false
和auto
- 在 Logstash 7.x 中默认值为
false
,从 Logstash 8.0 开始默认值为auto
。
定义是否将数据索引到 Elasticsearch 数据流中。只有在启用此设置时,其他 data_stream_*
设置才会被使用。
当提供的配置与数据流兼容且此值设置为 auto
时,Logstash 将输出作为数据流处理。请注意,ECS 兼容性 必须启用(设置为 v1
或 v8
)才能使数据流正常工作。
data_stream_auto_routing
编辑
- 值类型为 布尔值
- 默认值为
true
。
通过使用 %{[data_stream][type]}-%{[data_stream][dataset]}-%{[data_stream][namespace]}
格式从特定事件字段中推导出数据流名称来自动路由事件。
如果启用,data_stream.*
事件字段将优先于 data_stream_type
、data_stream_dataset
和 data_stream_namespace
设置,但如果事件中缺少任何字段,则会回退到这些设置。
data_stream_sync_fields
编辑
- 值类型为 布尔值
- 默认值为
true
如果事件中缺少 data_stream.*
事件字段,则会自动添加并同步这些字段。这确保字段与接收事件的数据流名称匹配。
如果现有的 data_stream.*
事件字段与数据流名称不匹配,并且 data_stream_auto_routing
已禁用,则事件字段将被覆盖,并发出警告。
dlq_custom_codes
编辑
- 值类型为 数字
- 默认值为
[]
。
列出 Elasticsearch 的 Bulk API 中被认为有效以将事件移动到死信队列的单操作错误代码。此列表是除了用于此功能的普通错误代码 400 和 404 之外的补充。将相同的预定义代码重新用于成功、DLQ 或冲突被认为是配置错误。此选项接受与 HTTP 错误代码相对应的自然数列表。
doc_as_upsert
编辑
- 值类型为 布尔值
- 默认值为
false
为更新模式启用 doc_as_upsert
。如果 Elasticsearch 中不存在 document_id
,则使用源创建新文档。
document_type
编辑
- 值类型为 字符串
- 此设置没有默认值。
- 此选项已弃用
由于 Elasticsearch 6.0 中删除了类型,因此此选项已弃用。它将在 Logstash 的下一个主要版本中删除。
对于 Elasticsearch 集群 8.x
,此值将被忽略,并且不会产生任何影响。
这将设置写入事件的文档类型。通常,您应该尝试仅将类似事件写入相同的类型。字符串扩展 %{foo}
在这里有效。如果您没有为此选项设置值
- 对于 elasticsearch 集群 8.x:将不使用任何值;
- 对于 elasticsearch 集群 7.x:将使用_doc的值;
- 对于 elasticsearch 集群 6.x:将使用doc的值;
- 对于 elasticsearch 集群 5.x 及更低版本:将使用事件的type字段,如果该字段不存在,则将使用doc的值。
ecs_compatibility
编辑
- 值类型为 字符串
-
支持的值为
-
disabled
:不提供与 ECS 兼容的模板 -
v1
,v8
:符合 Elastic Common Schema 的行为
-
-
默认值取决于运行的 Logstash 版本
- 当 Logstash 提供
pipeline.ecs_compatibility
设置时,将使用其值作为默认值 - 否则,默认值为
disabled
。
- 当 Logstash 提供
控制此插件与 Elastic Common Schema (ECS) 的兼容性,包括安装与 ECS 兼容的索引模板。此设置的值会影响以下内容的默认值
custom_headers
编辑
- 值类型为 哈希
- 此设置没有默认值。
将一组键值对作为发送到每个 Elasticsearch 节点的请求中的标头传递。这些标头将用于任何类型的请求(_批量请求、模板安装、运行状况检查和嗅探)。这些自定义标头将被 compression_level
等设置覆盖。
healthcheck_path
编辑
- 值类型为 字符串
- 此设置没有默认值。
当后端被标记为关闭时,在后台发送 HEAD 请求的 HTTP 路径,该请求将被发送以查看它是否已恢复,然后再有资格服务请求。如果您有自定义防火墙规则,您可能需要更改此设置
hosts
编辑
- 值类型为 URI
- 默认值为
[//127.0.0.1]
设置远程实例的主机。如果给定一个数组,它将在 hosts
参数中指定的 host 上负载均衡请求。请记住,http
协议使用 http 地址(例如 9200,而不是 9300)。
示例
`"127.0.0.1"` `["127.0.0.1:9200","127.0.0.2:9200"]` `["http://127.0.0.1"]` `["https://127.0.0.1:9200"]` `["https://127.0.0.1:9200/mypath"]` (If using a proxy on a subpath)
从 hosts
列表中排除 专用主节点,以防止 Logstash 向主节点发送批量请求。此参数应仅引用 Elasticsearch 中的数据节点或客户端节点。
此处 URL 中存在的任何特殊字符都必须进行 URL 编码!这意味着 #
应该被放入 %23
中,例如。
http_compression
编辑
在 11.17.0 中已弃用。
被 compression_level
替换
- 值类型为 布尔值
- 默认值为
false
设置 true
将在请求上启用 gzip 压缩级别 1。
此设置允许您通过压缩发送到 Elasticsearch 的每个批量请求来减少此插件的出站网络流量。
无论此设置的值如何,此输出插件都会从 Elasticsearch 读取压缩的响应。
ilm_enabled
编辑
- 值可以是以下任何一个:
true
,false
,auto
- 默认值为
auto
默认情况下,如果 Elasticsearch 集群运行的是 Elasticsearch 版本 7.0.0
或更高版本,并且启用了 ILM 功能,则 auto
的默认设置将自动启用 索引生命周期管理,否则将禁用它。
将此标志设置为 false
将禁用索引生命周期管理功能,即使 Elasticsearch 集群支持 ILM。将此标志设置为 true
将启用索引生命周期管理功能,如果 Elasticsearch 集群支持它。这需要在低于版本 7.0.0
的 Elasticsearch 版本上启用索引生命周期管理。
此功能需要在 Elasticsearch 集群版本 6.6.0 或更高版本上安装基本许可证或更高版本。
ilm_pattern
edit
- 值类型为 字符串
- 默认值为
{now/d}-000001
用于生成由 索引生命周期管理 管理的索引的模式。模式中指定的值将附加到写入别名,并在 ILM 创建新索引时自动递增。
在指定 ilm 模式时可以使用日期数学,有关详细信息,请参阅 Rollover API 文档。
更新模式将需要重写索引模板。
模式必须以连字符和一个数字结尾,该数字将在索引滚动时自动递增。
模式是一个 6 位数字字符串,用零填充,与之前的索引名称无关。例如:000001。有关详细信息,请参阅 Rollover 路径参数 API 文档。
ilm_policy
edit
- 值类型为 字符串
- 默认值为
logstash-policy
修改此设置以使用自定义索引生命周期管理策略,而不是默认策略。如果未设置此值,则默认策略将自动安装到 Elasticsearch 中
如果指定了此设置,则策略必须已存在于 Elasticsearch 集群中。
ilm_rollover_alias
edit
- 值类型为 字符串
-
默认值取决于是否启用了
ecs_compatibility
- 禁用 ECS 兼容性:
logstash
- 启用 ECS 兼容性:
ecs-logstash
- 禁用 ECS 兼容性:
滚动别名是使用索引生命周期管理管理的索引将写入的别名。
如果同时指定了 index
和 ilm_rollover_alias
,则 ilm_rollover_alias
优先。
更新滚动别名将需要重写索引模板。
ilm_rollover_alias
不支持动态变量替换,如 index
所做的那样。
index
edit
- 值类型为 字符串
-
默认值取决于是否启用了
ecs_compatibility
- 禁用 ECS 兼容性:
"logstash-%{+yyyy.MM.dd}"
- 启用 ECS 兼容性:
"ecs-logstash-%{+yyyy.MM.dd}"
- 禁用 ECS 兼容性:
写入事件的目标索引。可以指向 索引、别名 或 数据流。这可以使用 %{foo}
语法动态实现。默认值将按天对索引进行分区,以便您可以更轻松地删除旧数据或仅搜索特定日期范围。索引可能不包含大写字符。对于每周索引,建议使用 ISO 8601 格式,例如 logstash-%{+xxxx.ww}。Logstash 使用 Joda 格式,并且每个事件的 @timestamp
字段用作日期的来源。
manage_template
edit
- 值类型为 布尔值
- 对于非时间序列数据,默认值为
true
,对于数据流,默认值为false
。
从 Logstash 1.3 开始,如果名称为 template_name
的模板不存在,则在 Logstash 启动期间将模板应用于 Elasticsearch。默认情况下,此模板的内容是 logstash-%{+YYYY.MM.dd}
的默认模板,该模板始终匹配基于模式 logstash-*
的索引。如果您需要支持其他索引名称,或者想要更改模板中的映射,则可以通过将 template
设置为模板文件的路径来指定自定义模板。
将 manage_template
设置为 false 将禁用此功能。如果您需要更多地控制模板创建(例如,根据字段名称动态创建索引),则应将 manage_template
设置为 false 并使用 REST API 手动应用模板。
parameters
edit
- 值类型为 哈希
- 此设置没有默认值。
将一组键值对作为 URL 查询字符串传递。此查询字符串将添加到 hosts 配置中列出的每个主机。如果 hosts 列表包含已经具有查询字符串的 URL,则此处指定的查询字符串将被附加。
path
edit
- 值类型为 字符串
- 此设置没有默认值。
Elasticsearch 服务器所在的 HTTP 路径。如果您必须在将 Elasticsearch 的根路径重新映射到代理的代理后面运行 Elasticsearch,请使用此选项。请注意,如果您在 hosts 字段中使用路径作为 URL 的组件,则可能无法也设置此字段。这将在启动时引发错误
pipeline
edit
- 值类型为 字符串
- 没有默认值。
设置要为事件执行的摄取管道。您也可以在此处使用事件相关的配置,例如 pipeline => "%{[@metadata][pipeline]}"
。如果值解析为空字符串(""),则不会设置 pipeline 参数。
pool_max
edit
- 值类型为 数字
- 默认值为
1000
虽然输出尝试有效地重用连接,但我们有一个最大值。这设置了输出将创建的打开连接的最大数量。将此值设置得太低可能意味着频繁地关闭/打开连接,这是不好的。
pool_max_per_route
edit
- 值类型为 数字
- 默认值为
100
虽然输出尝试有效地重用连接,但我们每个端点都有一个最大值。这设置了输出将创建的每个端点的打开连接的最大数量。将此值设置得太低可能意味着频繁地关闭/打开连接,这是不好的。
proxy
edit
- 值类型为 URI
- 此设置没有默认值。
设置正向 HTTP 代理的地址。此设置仅接受 URI 参数,以防止泄露凭据。空字符串被视为未设置代理。这在使用环境变量时很有用,例如 proxy => '${LS_PROXY:}'
。
script
edit
- 值类型为 字符串
- 默认值为
""
设置脚本更新模式的脚本名称
示例
output { elasticsearch { script => "ctx._source.message = params.event.get('message')" } }
script_lang
edit
- 值类型为 字符串
- 默认值为
"painless"
设置使用的脚本的语言。在 Elasticsearch 6.0 及更高版本上使用索引(存储)脚本时,必须将此参数设置为 ""
(空字符串)。
script_type
edit
- 值可以是以下任何一种:
inline
、indexed
、file
- 默认值为
["inline"]
定义“script”变量引用的脚本类型 inline : “script”包含内联脚本 indexed : “script”包含直接索引在 Elasticsearch 中的脚本名称 file : “script”包含存储在 Elasticsearch 配置目录中的脚本名称
silence_errors_in_log
edit
- 值类型为 数组
- 默认值为
[]
定义您不想记录的 Elasticsearch 错误列表。一个有用的示例是当您想要跳过所有 409 错误时,这些错误是 version_conflict_engine_exception
。
output { elasticsearch { silence_errors_in_log => ["version_conflict_engine_exception"] } }
sniffing
edit
- 值类型为 布尔值
- 默认值为
false
此设置要求 Elasticsearch 提供所有集群节点的列表,并将它们添加到主机列表中。对于 Elasticsearch 5.x 和 6.x,任何具有 http.enabled
(默认情况下启用)的节点都将被添加到主机列表中,排除仅限主节点的节点。
sniffing_path
edit
- 值类型为 字符串
- 此设置没有默认值。
用于嗅探请求的 HTTP 路径,默认值通过将路径值和“_nodes/http”连接起来计算得出,如果设置了 sniffing_path,它将用作绝对路径,不要在此处使用完整 URL,只使用路径,例如“/sniff/_nodes/http”
ssl_certificate
edit
- 值类型为 path
- 此设置没有默认值。
用于验证客户端的 SSL 证书。此证书应为 OpenSSL 风格的 X.509 证书文件。
仅当 ssl_key
设置时才能使用此设置。
ssl_certificate_authorities
edit
- 值类型为 path 列表
- 此设置没有默认值
用于验证服务器证书的 .cer 或 .pem 文件。
您不能同时使用此设置和 ssl_truststore_path
。
ssl_enabled
edit
- 值类型为 布尔值
- 此设置没有默认值。
启用与 Elasticsearch 集群的安全 SSL/TLS 通信。不指定此选项将使用 hosts
中列出的 URL 或从 cloud_id
中提取的方案。如果未指定显式协议,将使用纯 HTTP。
ssl_key
edit
- 值类型为 path
- 此设置没有默认值。
要使用的 SSL 密钥。此密钥必须采用 PKCS8 格式并进行 PEM 编码。您可以使用 openssl pkcs8 命令完成转换。例如,将 PEM 编码的 PKCS1 私钥转换为 PEM 编码的、未加密的 PKCS8 密钥的命令是
openssl pkcs8 -inform PEM -in path/to/logstash.key -topk8 -nocrypt -outform PEM -out path/to/logstash.pkcs8.key
仅当 ssl_certificate
设置时才能使用此设置。
ssl_keystore_path
edit
- 值类型为 path
- 此设置没有默认值。
用于向服务器呈现证书的密钥库。它可以是 .jks
或 .p12
您不能同时使用此设置和 ssl_certificate
。
ssl_supported_protocols
edit
- 值类型为 字符串
- 允许的值为:
'TLSv1.1'
、'TLSv1.2'
、'TLSv1.3'
- 默认值取决于所使用的 JDK。对于最新的 Logstash,默认值为
['TLSv1.2', 'TLSv1.3']
。'TLSv1.1'
不被认为是安全的,仅为旧版应用程序提供。
建立与 Elasticsearch 集群连接时要使用的允许的 SSL/TLS 版本列表。
对于 Java 8,'TLSv1.3'
仅从 8u262(AdoptOpenJDK)开始受支持,但需要您在 Logstash 中设置 LS_JAVA_OPTS="-Djdk.tls.client.protocols=TLSv1.3"
系统属性。
如果您将插件配置为在任何最近的 JVM(例如 Logstash 附带的 JVM)上使用 'TLSv1.1'
,则该协议默认情况下处于禁用状态,需要通过更改 $JDK_HOME/conf/security/java.security 配置文件中的 jdk.tls.disabledAlgorithms
手动启用。也就是说,需要从列表中删除 TLSv1.1
。
ssl_truststore_path
edit
- 值类型为 path
- 此设置没有默认值。
用于验证服务器证书的信任库。它可以是 .jks
或 .p12
。
您不能同时使用此设置和 ssl_certificate_authorities
。
ssl_verification_mode
edit
- 值可以是以下任何一种:
full
、none
- 默认值为
full
定义如何验证 TLS 连接中另一方提供的证书
full
验证服务器证书的颁发日期是否在 not_before 和 not_after 日期之间;链接到受信任的证书颁发机构 (CA),并且具有与证书中名称匹配的主机名或 IP 地址。
none
不执行证书验证。
将证书验证设置为 none
会禁用 SSL/TLS 的许多安全优势,这非常危险。有关禁用证书验证的更多信息,请阅读 https://www.cs.utexas.edu/~shmat/shmat_ccs12.pdf
template_api
edit
- 值可以是以下任何一种:
auto
、legacy
、composable
- 默认值为
auto
默认情况下,auto
设置将使用 索引模板 API 创建索引模板,如果 Elasticsearch 集群运行的是 Elasticsearch 版本 8.0.0
或更高版本,否则使用 旧版模板 API。
将此标志设置为 legacy
将使用旧版模板 API 创建索引模板。将此标志设置为 composable
将使用索引模板 API 创建索引模板。
提供给 template
的模板格式需要与正在使用的模板 API 匹配。
template_name
edit
- 值类型为 字符串
-
默认值取决于是否启用了
ecs_compatibility
- 禁用 ECS 兼容性:
logstash
- 启用 ECS 兼容性:
ecs-logstash
- 禁用 ECS 兼容性:
此配置选项定义了模板在 Elasticsearch 中的命名方式。请注意,如果您使用了模板管理功能,随后又更改了此设置,则需要手动修剪旧模板,例如:
curl -XDELETE <https://127.0.0.1:9200/_template/OldTemplateName?pretty>
其中 OldTemplateName
是之前的设置。
template_overwrite
edit
- 值类型为 布尔值
- 默认值为
false
template_overwrite 选项将始终使用 template 或包含的模板覆盖 Elasticsearch 中指示的模板。此选项默认设置为 false。如果您始终希望使用 Logstash 提供的模板保持最新,那么此选项对您非常有用。同样,如果您有自己的模板文件由 puppet 管理,例如,并且您希望能够定期更新它,那么此选项也可以提供帮助。
请注意,如果您使用的是 Logstash 模板 (logstash) 的自定义版本,将其设置为 true 将使 Logstash 覆盖 "logstash" 模板(即删除所有自定义设置)。
validate_after_inactivity
edit
- 值类型为 数字
- 默认值为
10000
在检查过时连接以确定是否需要保持活动请求之前等待的时间。如果您经常遇到连接错误,请考虑将此值设置为低于默认值,可能为 0。
此客户端基于 Apache Commons。以下是 Apache Commons 文档 对此选项的描述:"定义在将持久连接租赁给消费者之前必须重新验证的非活动时间(以毫秒为单位)。传递给此方法的非正值将禁用连接验证。此检查有助于检测在池中保持非活动状态时已变得陈旧(半关闭)的连接。"
Elasticsearch 输出已弃用的配置选项edit
此插件支持以下已弃用的配置。
已弃用的选项可能会在将来的版本中被删除。
设置 | 输入类型 | 被替换为 |
---|---|---|
有效的文件系统路径 |
||
有效的文件系统路径 |
||
有效的文件系统路径 |
||
keystore
edit
在 11.14.0 中已弃用。
被替换为 ssl_keystore_path
- 值类型为 path
- 此设置没有默认值。
用于向服务器提供证书的密钥库。它可以是 .jks 或 .p12。
您不能同时使用此设置和 ssl_certificate
。
ssl
edit
在 11.14.0 中已弃用。
被替换为 ssl_enabled
- 值类型为 布尔值
- 此设置没有默认值。
启用与 Elasticsearch 集群的安全 SSL/TLS 通信。不指定此选项将使用 hosts
中列出的 URL 或从 cloud_id
中提取的方案。如果未指定显式协议,将使用纯 HTTP。
ssl_certificate_verification
edit
在 11.14.0 中已弃用。
- 值类型为 布尔值
- 默认值为
true
用于验证服务器证书的选项。禁用此选项会严重影响安全性。有关禁用证书验证的更多信息,请阅读 https://www.cs.utexas.edu/~shmat/shmat_ccs12.pdf
truststore
edit
在 11.14.0 中已弃用。
被替换为 ssl_truststore_path
- 值类型为 path
- 此设置没有默认值。
用于验证服务器证书的信任库。它可以是 .jks
或 .p12
。使用 :truststore
或 :cacert
。