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_size
、batch_size_bytes
或flush_interval_secs
满足时,事件将被刷新,以先到者为准。如果您发现处理延迟或吞吐量低,请尝试调整这些设置。
Google BigQuery 输出配置选项编辑
此插件支持以下配置选项以及后面描述的 通用选项。
设置 | 输入类型 | 必需 |
---|---|---|
否 |
||
否 |
||
否 |
||
是 |
||
否 |
||
已弃用 |
||
是 |
||
否 |
||
否 |
||
否 |
||
否 |
||
已弃用 |
||
已过时 |
||
是 |
||
已弃用 |
||
否 |
||
否 |
||
否 |
||
已弃用 |
||
已弃用 |
||
已弃用 |
另请参阅 通用选项,了解所有输出插件支持的选项列表。
batch_size
编辑
在 4.0.0 中添加。
- 值类型为 数字
- 默认值为
128
一次上传的最大消息数。此数字必须小于 10,000。批处理可以提高性能和吞吐量,但以每次请求的延迟为代价。每个请求的行数太少,每个请求的开销会使摄取效率低下。每个请求的行数太多,吞吐量可能会下降。BigQuery 建议每次请求使用大约 500 行,但使用代表性数据(架构和数据大小)进行实验将有助于您确定理想的批处理大小。
csv_schema
编辑
- 值类型为 字符串
- 默认值为
nil
日志数据的架构。它必须遵循格式 name1:type1(,name2:type2)*
。例如,path:STRING,status:INTEGER,score:FLOAT
。
date_pattern
编辑
- 值类型为 字符串
- 默认值为
"%Y-%m-%dT%H:00"
BigQuery 表的时间模式,默认为每小时表格。必须是 Time.strftime 模式:www.ruby-doc.org/core-2.0/Time.html#method-i-strftime
error_directory
编辑
在 4.0.0 中添加。
- 这是一个必需的设置。
- 值类型为 字符串
- 默认值为
"/tmp/bigquery"
。
存储由于错误而无法上传的事件的位置。默认情况下,如果插入中的任何消息无效,则所有消息都将失败。您可以使用 skip_invalid_rows
允许部分插入。
考虑使用额外的 Logstash 输入将这些内容传递到警报平台,以便您可以手动修复事件。
或者使用 GCS FUSE 透明地上传到 GCS 存储桶。
文件名遵循模式 [table name]-[UNIX timestamp].log
ignore_unknown_values
编辑
- 值类型为 布尔值
- 默认值为
false
指示 BigQuery 是否应忽略表格架构中未表示的值。如果为 true,则会丢弃额外的值。如果为 false,BigQuery 将拒绝包含额外字段的记录,并且作业将失败。默认值为 false。
您可能希望添加以下 Logstash 过滤器以删除它添加的常见字段
mutate { remove_field => ["@version","@timestamp","path","host","type", "message"] }
json_key_file
编辑
在 4.0.0 中添加。
- 值类型为 字符串
- 默认值为
nil
如果 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_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]
skip_invalid_rows
编辑
在 4.1.0 中添加。
- 值类型为 布尔值
- 默认值为
false
插入请求的所有有效行,即使存在无效行。默认值为 false,如果存在任何无效行,则会导致整个请求失败。
通用选项编辑
以下配置选项受所有输出插件支持