S3 输出插件

编辑

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

获取帮助

编辑

有关插件的问题,请在Discuss论坛中打开一个主题。 对于错误或功能请求,请在Github中打开一个 issue。 有关 Elastic 支持的插件列表,请参阅Elastic 支持矩阵

描述

编辑

此插件将 Logstash 事件批量上传到 Amazon Simple Storage Service (Amazon S3)。

S3 输出插件仅支持 AWS S3。不支持其他 S3 兼容的存储解决方案。

S3 输出会在操作系统的临时目录中创建临时文件。您可以使用 temporary_directory 选项指定保存位置。

对于包含多个启用恢复选项的 S3 输出的配置,每个输出应定义自己的 *temporary_directory*。

要求

编辑
  • Amazon S3 存储桶和 S3 访问权限(通常为 access_key_id 和 secret_access_key)
  • S3 PutObject 权限

S3 输出文件

编辑
`ls.s3.312bc026-2f5d-49bc-ae9f-5940cf4ad9a6.2013-04-18T10.00.tag_hello.part0.txt`

ls.s3

表示 logstash 插件 s3

312bc026-2f5d-49bc-ae9f-5940cf4ad9a6

每个文件的新随机 uuid。

2013-04-18T10.00

表示您指定 time_file 的时间。

tag_hello

表示事件的标签。

part0

如果您指定 size_file,如果您的 file.size > size_file,它将生成更多部分。当文件已满时,它会被推送到存储桶,然后从临时目录中删除。如果文件为空,则将其直接删除。空文件不会被推送。

崩溃恢复

编辑

当使用设置为 true 的 restore 时,此插件将在崩溃/异常终止后恢复并上传临时日志文件

用法

编辑

这是 Logstash 配置的示例

output {
   s3{
     access_key_id => "crazy_key"             (optional)
     secret_access_key => "monkey_access_key" (optional)
     region => "eu-west-1"                    (optional, default = "us-east-1")
     bucket => "your_bucket"                  (required)
     size_file => 2048                        (optional) - Bytes
     time_file => 5                           (optional) - Minutes
     codec => "plain"                         (optional)
     canned_acl => "private"                  (optional. Options are "private", "public-read", "public-read-write", "authenticated-read", "aws-exec-read", "bucket-owner-read", "bucket-owner-full-control", "log-delivery-write". Defaults to "private" )
   }

S3 输出配置选项

编辑

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

设置 输入类型 必需

access_key_id

字符串

additional_settings

哈希

aws_credentials_file

字符串

bucket

字符串

canned_acl

字符串,以下之一:["private", "public-read", "public-read-write", "authenticated-read", "aws-exec-read", "bucket-owner-read", "bucket-owner-full-control", "log-delivery-write"]

encoding

字符串,以下之一:["none", "gzip"]

endpoint

字符串

prefix

字符串

proxy_uri

字符串

region

字符串

restore

布尔值

retry_count

数字

retry_delay

数字

role_arn

字符串

role_session_name

字符串

rotation_strategy

字符串,以下之一:["size_and_time", "size", "time"]

secret_access_key

字符串

server_side_encryption

布尔值

server_side_encryption_algorithm

字符串,以下之一:["AES256", "aws:kms"]

session_token

字符串

signature_version

字符串,以下之一:["v2", "v4"]

size_file

数字

ssekms_key_id

字符串

storage_class

字符串,以下之一:["STANDARD", "REDUCED_REDUNDANCY", "STANDARD_IA", "ONEZONE_IA", "INTELLIGENT_TIERING", "GLACIER", "DEEP_ARCHIVE", "OUTPOSTS", "GLACIER_IR", "SNOW", "EXPRESS_ONEZONE"]

temporary_directory

字符串

time_file

数字

upload_multipart_threshold

数字

upload_queue_size

数字

upload_workers_count

数字

use_aws_bundled_ca

布尔值

validate_credentials_on_root_bucket

布尔值

另请参阅常用选项,了解所有输出插件支持的选项列表。

 

access_key_id

编辑
  • 值类型为字符串
  • 此设置没有默认值。

此插件使用 AWS SDK 并支持多种获取凭证的方式,将按此顺序尝试

  1. 静态配置,在 Logstash 插件配置中使用 access_key_idsecret_access_key 参数
  2. aws_credentials_file 指定的外部凭证文件
  3. 环境变量 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY
  4. 环境变量 AMAZON_ACCESS_KEY_IDAMAZON_SECRET_ACCESS_KEY
  5. IAM 实例配置文件(在 EC2 内部运行时可用)

additional_settings

编辑
  • 值类型为哈希
  • 默认值为{}

用于参数化与 S3 的连接的设置和对应值的键值对。请参阅AWS SDK 文档中的完整列表。示例

    output {
      s3 {
        access_key_id => "1234",
        secret_access_key => "secret",
        region => "eu-west-1",
        bucket => "logstash-test",
        additional_settings => {
          "force_path_style" => true,
          "follow_redirects" => false
        }
      }
    }

aws_credentials_file

编辑
  • 值类型为字符串
  • 此设置没有默认值。

包含 AWS 凭证哈希的 YAML 文件的路径。仅当未设置 access_key_idsecret_access_key 时才会加载此文件。文件内容应如下所示

    :access_key_id: "12345"
    :secret_access_key: "54321"

bucket

编辑
  • 这是一个必需设置。
  • 值类型为字符串
  • 此设置没有默认值。

S3 存储桶

canned_acl

编辑
  • 值可以是以下任何一个:privatepublic-readpublic-read-writeauthenticated-readaws-exec-readbucket-owner-readbucket-owner-full-controllog-delivery-write
  • 默认值为"private"

放置文件时要使用的 S3 预设 ACL。默认为 "private"。

encoding

编辑
  • 值可以是以下任何一个:nonegzip
  • 默认值为"none"

指定内容编码。支持 ("gzip")。默认为 "none"

endpoint

编辑
  • 值类型为字符串
  • 此设置没有默认值。

要连接的端点。默认情况下,它是使用 region 的值构造的。这在连接到 S3 兼容服务时很有用,但请注意,这些服务不能保证与 AWS SDK 正确工作。端点应为 HTTP 或 HTTPS URL,例如 https://example.com

prefix

编辑

指定上传文件名的前缀,以模拟 S3 上的目录。前缀不需要前导斜杠。此选项支持Logstash 插值。例如,可以使用 prefix = "%{+YYYY}/%{+MM}/%{+dd}" 将事件日期作为文件名的前缀。

在前缀中使用插值字符串时请注意。这有可能创建大量唯一的前缀,从而导致大量正在进行的上传。这种情况可能会导致性能和稳定性问题,当您使用延迟上传的 rotation_strategy 时,这些问题会进一步加剧。

proxy_uri

编辑
  • 值类型为字符串
  • 此设置没有默认值。

如果需要,指向代理服务器的 URI

region

编辑
  • 值类型为字符串
  • 默认值为"us-east-1"

AWS 区域

restore

编辑

用于在崩溃/异常终止后启用恢复。将恢复并上传临时日志文件。

retry_count

编辑
  • 值类型为数字
  • 默认值为Infinity

允许限制 S3 上传失败时的重试次数。

retry_delay

编辑
  • 值类型为数字
  • 默认值为1

上传失败时,在连续重试之间等待的延迟(以秒为单位)。

role_arn

编辑
  • 值类型为字符串
  • 此设置没有默认值。

要承担的 AWS IAM 角色(如果有)。这用于生成临时凭证,通常用于跨账户访问。有关更多信息,请参阅AssumeRole API 文档

role_session_name

编辑
  • 值类型为字符串
  • 默认值为"logstash"

承担 IAM 角色时要使用的会话名称。

rotation_strategy

编辑
  • 值可以是以下任何一个:size_and_timesizetime
  • 默认值为"size_and_time"

控制何时关闭文件并将其推送到 S3。

如果将此值设置为 size,它将使用在 size_file 中设置的值。如果将此值设置为 time,它将使用在 time_file 中设置的值。如果将此值设置为 size_and_time,它将使用 size_filetime_file 中的值,并在其中一个匹配时拆分文件。

默认策略同时检查大小和时间。第一个匹配的值会触发文件轮换。

secret_access_key

编辑
  • 值类型为字符串
  • 此设置没有默认值。

AWS 私有访问密钥

server_side_encryption

编辑

指定是否使用 S3 的服务器端加密。默认不加密。

server_side_encryption_algorithm

编辑
  • 值可以是以下任何一个:AES256aws:kms
  • 默认值为"AES256"

指定启用 SSE 时要使用的加密类型。

session_token

编辑
  • 值类型为字符串
  • 此设置没有默认值。

临时凭证的 AWS 会话令牌

signature_version

编辑
  • 值可以是以下任何一个:v2v4
  • 此设置没有默认值。

要使用的 S3 签名哈希的版本。通常使用内部客户端默认值,可以在此处显式指定

size_file

编辑
  • 值类型为数字
  • 默认值为5242880

以字节为单位设置文件大小。当字节数超过 size_file 值时,将创建一个新文件。如果使用标签,Logstash 将为每个标签生成特定大小的文件。

ssekms_key_id

编辑
  • 值类型为字符串
  • 此设置没有默认值。

当与 server_side_encryption ⇒ aws:kms 一起指定时使用的密钥。如果设置了 server_side_encryption ⇒ aws:kms,但没有设置此项,则使用默认的 KMS 密钥。 http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html

storage_class

编辑
  • 值可以是以下任何一个:STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW, EXPRESS_ONEZONE
  • 默认值为 "STANDARD"

指定上传文件时要使用的 S3 存储类别。有关不同存储类别的更多信息,请访问:http://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html 默认为 STANDARD。

temporary_directory

编辑
  • 值类型为字符串
  • 默认值为 "/tmp/logstash"

设置 Logstash 在将临时文件发送到 S3 之前存储临时文件的目录,默认为 Linux 系统中的当前操作系统临时目录 /tmp/logstash

time_file

编辑
  • 值类型为数字
  • 默认值为 15

设置关闭当前存储桶的子时间段的时间(以分钟为单位)。如果 rotation_strategy 设置为 timesize_and_time,则 time_file 不能设置为 0。否则,插件会引发配置错误。

upload_multipart_threshold

编辑
  • 值类型为数字
  • 默认值为 15728640

大于此数字的文件将使用 S3 多部分 API 上传

upload_queue_size

编辑
  • 值类型为数字
  • 默认值为 4

在上传之前,我们可以在本地队列中保留的项目数

upload_workers_count

编辑
  • 值类型为数字
  • 默认值为 4

指定用于将文件上传到 S3 的工作线程数

use_aws_bundled_ca

编辑

使用 AWS SDK 附带的捆绑 CA 证书来验证 SSL 对等证书。在默认证书不可用的情况下(例如 Windows),您可以将其设置为 true

validate_credentials_on_root_bucket

编辑

常见的用例是在根存储桶上定义权限,并授予 Logstash 完全的日志写入访问权限。在某些情况下,您需要在子文件夹上设置更精细的权限。这允许您在启动时禁用检查。

通用选项

编辑

所有输出插件都支持这些配置选项

设置 输入类型 必需

codec

codec

enable_metric

布尔值

id

字符串

codec

编辑
  • 值类型为 codec
  • 默认值为 "line"

用于输出数据的编解码器。输出编解码器是一种方便的方法,用于在数据离开输出之前对其进行编码,而无需在 Logstash 管道中使用单独的过滤器。

enable_metric

编辑
  • 值类型为 boolean
  • 默认值为true

禁用或启用此特定插件实例的指标记录。默认情况下,我们会记录所有可用的指标,但您可以禁用特定插件的指标收集。

  • 值类型为 string
  • 此设置没有默认值。

向插件配置添加唯一的 ID。如果未指定 ID,Logstash 将生成一个。强烈建议在您的配置中设置此 ID。当您有两个或多个相同类型的插件时,这尤其有用。例如,如果您有 2 个 s3 输出。在这种情况下添加命名的 ID 将有助于在使用监控 API 时监控 Logstash。

output {
  s3 {
    id => "my_plugin_id"
  }
}

id 字段中的变量替换仅支持环境变量,不支持使用秘密存储中的值。