Google BigQuery 输出插件

编辑

Google BigQuery 输出插件编辑

  • 插件版本:v4.5.0
  • 发布日期:2024-01-24
  • 变更日志

有关其他版本,请参阅 版本化插件文档

安装编辑

对于默认情况下未捆绑的插件,可以通过运行 bin/logstash-plugin install logstash-output-google_bigquery 来轻松安装。有关更多详细信息,请参阅 使用插件

获取帮助编辑

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

描述编辑

摘要编辑

此 Logstash 插件使用流式 API 将事件上传到 Google BigQuery,以便数据几乎可以立即用于查询。

您可以将其配置为定期刷新,在 N 个事件之后或在摄取一定数量的数据之后刷新。

环境配置编辑

您必须在 Google Cloud 帐户上启用 BigQuery 并创建一个数据集来保存此插件生成的表格。

您还必须授予此插件使用的服务帐户对数据集的访问权限。

您可以使用 Logstash 条件 和多个配置块来上传具有不同结构的事件。

用法编辑

这是一个 Logstash 配置示例

output {
   google_bigquery {
     project_id => "folkloric-guru-278"                        (required)
     dataset => "logs"                                         (required)
     csv_schema => "path:STRING,status:INTEGER,score:FLOAT"    (required) 
     json_key_file => "/path/to/key.json"                      (optional) 
     error_directory => "/tmp/bigquery-errors"                 (required)
     date_pattern => "%Y-%m-%dT%H:00"                          (optional)
     flush_interval_secs => 30                                 (optional)
   }
}

指定 csv_schema 或 json_schema。

如果未使用该密钥,则插件会尝试查找 应用程序默认凭据

注意事项编辑

  • 使用流式 API 将数据插入 BigQuery 会产生少量费用。
  • 此插件在内存中缓冲事件,因此请确保刷新配置适合您的用例,并考虑使用 Logstash 持久队列
  • batch_sizebatch_size_bytesflush_interval_secs 满足时,事件将被刷新,以先到者为准。如果您发现处理延迟或吞吐量低,请尝试调整这些设置。

Google BigQuery 输出配置选项编辑

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

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

 

batch_size编辑

在 4.0.0 中添加。

  • 值类型为 数字
  • 默认值为 128

一次上传的最大消息数。此数字必须小于 10,000。批处理可以提高性能和吞吐量,但以每次请求的延迟为代价。每个请求的行数太少,每个请求的开销会使摄取效率低下。每个请求的行数太多,吞吐量可能会下降。BigQuery 建议每次请求使用大约 500 行,但使用代表性数据(架构和数据大小)进行实验将有助于您确定理想的批处理大小。

batch_size_bytes编辑

在 4.0.0 中添加。

  • 值类型为 数字
  • 默认值为 1_000_000

作为批处理的一部分上传的大致字节数。此数字应小于 10MB,否则插入可能会失败。

csv_schema编辑

日志数据的架构。它必须遵循格式 name1:type1(,name2:type2)*。例如,path:STRING,status:INTEGER,score:FLOAT

dataset编辑

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

将为事件添加表格的 BigQuery 数据集。

date_pattern编辑

  • 值类型为 字符串
  • 默认值为 "%Y-%m-%dT%H:00"

BigQuery 表的时间模式,默认为每小时表格。必须是 Time.strftime 模式:www.ruby-doc.org/core-2.0/Time.html#method-i-strftime

deleter_interval_secs编辑

在 4.0.0 中弃用。

事件会实时上传,不会存储到磁盘。

error_directory编辑

在 4.0.0 中添加。

  • 这是一个必需的设置。
  • 值类型为 字符串
  • 默认值为 "/tmp/bigquery"

存储由于错误而无法上传的事件的位置。默认情况下,如果插入中的任何消息无效,则所有消息都将失败。您可以使用 skip_invalid_rows 允许部分插入。

考虑使用额外的 Logstash 输入将这些内容传递到警报平台,以便您可以手动修复事件。

或者使用 GCS FUSE 透明地上传到 GCS 存储桶。

文件名遵循模式 [table name]-[UNIX timestamp].log

flush_interval_secs编辑

  • 值类型为 数字
  • 默认值为 5

即使未满足其他上传条件,也会每隔此时间上传所有数据。

ignore_unknown_values编辑

指示 BigQuery 是否应忽略表格架构中未表示的值。如果为 true,则会丢弃额外的值。如果为 false,BigQuery 将拒绝包含额外字段的记录,并且作业将失败。默认值为 false。

您可能希望添加以下 Logstash 过滤器以删除它添加的常见字段

mutate {
    remove_field => ["@version","@timestamp","path","host","type", "message"]
}

json_key_file编辑

在 4.0.0 中添加。

替换 key_passwordkey_pathservice_account

如果 Logstash 在 Google Compute Engine 中运行,则插件可以使用 GCE 的应用程序默认凭据。在 GCE 之外,您需要指定一个服务帐户 JSON 密钥文件。

json_schema编辑

  • 值类型为 哈希
  • 默认值为 nil

日志数据的架构,作为哈希。这些可以包括嵌套记录、描述和模式。

示例

json_schema => {
  fields => [{
    name => "endpoint"
    type => "STRING"
    description => "Request route"
  }, {
    name => "status"
    type => "INTEGER"
    mode => "NULLABLE"
  }, {
    name => "params"
    type => "RECORD"
    mode => "REPEATED"
    fields => [{
      name => "key"
      type => "STRING"
     }, {
      name => "value"
      type => "STRING"
    }]
  }]
}

key_password编辑

在 4.0.0 中弃用。

json_key_file 替换,或者通过使用 ADC 替换。请参阅 json_key_file

key_path编辑

已弃用: 不再支持 PKCS12 密钥文件格式。

请使用以下机制之一

  • 应用程序默认凭据 (ADC),通过 Compute Engine、Kubernetes Engine、App Engine 或 Cloud Functions 上的环境变量配置。
  • JSON 身份验证密钥文件。您可以在控制台中为服务帐户生成它们,就像您使用 .P12 文件一样,或者使用以下命令:gcloud iam service-accounts keys create key.json --iam-account [email protected]

project_id编辑

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

Google Cloud 项目 ID(数字,而不是项目名称!)。

service_account编辑

在 4.0.0 中弃用。

json_key_file 替换,或者通过使用 ADC 替换。请参阅 json_key_file

skip_invalid_rows编辑

在 4.1.0 中添加。

插入请求的所有有效行,即使存在无效行。默认值为 false,如果存在任何无效行,则会导致整个请求失败。

table_prefix编辑

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

用于为日志数据创建新表时使用的 BigQuery 表 ID 前缀。表名为 <table_prefix><table_separator><date>

table_separator编辑

BigQuery 表分隔符,用于在 table_prefix 和日期后缀之间添加。

temp_directory编辑

在 4.0.0 中弃用。

事件会实时上传,不会存储到磁盘。

temp_file_prefix编辑

在 4.0.0 中弃用。

事件实时上传,不会存储到磁盘

uploader_interval_secs编辑

在 4.0.0 中弃用。

此字段不再使用

  • 值类型为 数字
  • 默认值为 60

将新文件上传到 BigQuery 时的上传程序间隔。根据您的时间模式调整时间(例如,对于每小时文件,此间隔可以约为一小时)。

通用选项编辑

以下配置选项受所有输出插件支持

设置 输入类型 必需

codec

codec

enable_metric

布尔值

id

字符串

codec编辑

  • 值类型为 codec
  • 默认值为 "plain"

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

enable_metric编辑

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

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

id编辑

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

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

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

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