Google_pubsub 输入插件

编辑

Google_pubsub 输入插件编辑

  • 插件版本:v1.3.0
  • 发布时间:2023-08-22
  • 更新日志

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

安装编辑

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

获取帮助编辑

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

描述编辑

作者:Eric Johnson <[email protected]> 日期:2016-06-01

版权所有 2016 Google Inc.

根据 Apache 许可证 2.0 版(“许可证”)获得许可;除非符合许可证,否则您不得使用此文件。您可以在以下网址获取许可证副本

http://www.apache.org/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则根据许可证分发的软件按“原样”分发,不提供任何明示或暗示的保证或条件。有关许可证下特定语言的权限和限制,请参阅许可证。Google deps 这是一个用于 Google Pub/SubLogstash 输入插件。该插件可以订阅主题并提取消息。

开发此插件的主要动机是通过 Stackdriver Logging 的 导出日志 功能提取 Stackdriver Logging 消息。

先决条件编辑

您必须先创建一个 Google Cloud Platform 项目并启用 Google Pub/Sub API。如果您打算使用该插件提取 Stackdriver Logging 消息,则还必须启用 Stackdriver Logging API 并将日志导出配置为 Pub/Sub。在 https://cloud.google.com/ 上有大量信息可帮助您入门

  • Google Cloud Platform 项目和 概述
  • Google Cloud Pub/Sub 文档
  • Stackdriver Logging 文档

Cloud Pub/Sub编辑

目前,此模块要求您手动创建 主题 并在 logstash 配置文件中指定它。您还必须指定一个 订阅,但插件会尝试自行创建基于拉取的 订阅

从 Pub/Sub 接收到的所有消息都将转换为 logstash 事件 并添加到处理管道队列中。所有 Pub/Sub 消息都将被 确认 并从 Pub/Sub 主题 中删除(请参阅有关 Pub/Sub 概念 的更多信息)。

通常假设传入消息将采用 JSON 格式并按原样添加到 logstash 事件 中。但是,如果收到纯文本消息,则插件将在 logstash 事件 中以 raw_message 的形式返回原始文本。

身份验证编辑

根据您运行 Logstash 的位置,您有两种身份验证选项。

  1. 如果您在 Google Cloud Platform 之外运行 Logstash,则需要创建一个 Google Cloud Platform 服务帐户,并在配置中指定 JSON 私钥文件的完整路径。您必须为服务帐户分配足够的权限以创建订阅并从订阅中提取消息。在此处详细了解 GCP 服务帐户和 IAM 角色

  2. 如果您在 Google Compute Engine 实例上运行 Logstash,则可以选择使用应用程序默认凭据。在这种情况下,您无需在配置中指定 JSON 私钥文件。

Stackdriver Logging(可选)编辑

如果您打算将 logstash 插件用于 Stackdriver Logging 消息提取,则必须先手动设置“导出到 Cloud Pub/Sub”选项,并手动创建 主题。请参阅 https://cloud.google.com/logging/docs/export/using_exported_logs [导出日志] 中的详细说明,并确保还手动配置了 必要的权限

从 Stackdriver Logging 导出到 Pub/Sub 的日志消息以 JSON 格式接收,并按 此格式 原样转换为 logstash 事件

示例配置编辑

以下是包含的 example.conf-tmpl 文件的副本,该文件显示了此插件的基本配置。

input {
    google_pubsub {
        # Your GCP project id (name)
        project_id => "my-project-1234"

        # The topic name below is currently hard-coded in the plugin. You
        # must first create this topic by hand and ensure you are exporting
        # logging to this pubsub topic.
        topic => "logstash-input-dev"

        # The subscription name is customizeable. The plugin will attempt to
        # create the subscription (but use the hard-coded topic name above).
        subscription => "logstash-sub"

        # If you are running logstash within GCE, it will use
        # Application Default Credentials and use GCE's metadata
        # service to fetch tokens.  However, if you are running logstash
        # outside of GCE, you will need to specify the service account's
        # JSON key file below.
        #json_key_file => "/home/erjohnso/pkey.json"

        # Should the plugin attempt to create the subscription on startup?
        # This is not recommended for security reasons but may be useful in
        # some cases.
        #create_subscription => false
    }
}
output { stdout { codec => rubydebug } }

元数据和属性编辑

原始 Pub/Sub 消息保留在特殊的 Logstash [@metadata][pubsub_message] 字段中,以便您可以获取

  • 消息属性
  • 原始 base64 数据
  • 用于重复数据删除的 Pub/Sub 消息 ID
  • 发布时间

您必须在将数据发送到输出之前,在过滤器中提取所需的任何字段,因为 Logstash 否则会删除 @metadata 字段。

有关字段的完整说明,请参阅 PubsubMessage 文档

获取消息 ID 的示例

input {google_pubsub {...}}

filter {
  mutate {
    add_field => { "messageId" => "%{[@metadata][pubsub_message][messageId]}" }
  }
}

output {...}

Google_pubsub 输入配置选项编辑

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

设置 输入类型 必需

json_key_file

有效的 文件系统路径

max_messages

数字

project_id

字符串

subscription

字符串

topic

字符串

include_metadata

布尔值

create_subscription

布尔值

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

 

json_key_file编辑

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

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

max_messages编辑

  • 这是一个必需的设置。
  • 值类型为 数字
  • 默认值为 5

每次请求返回的最大消息数。Pub/Sub 系统返回的数量可能少于指定的数量。

project_id编辑

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

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

subscription编辑

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

topic编辑

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

Google Cloud Pub/Sub 主题和订阅。请注意,必须手动创建主题,并将 Cloud Logging 预先配置的导出到 PubSub 配置为使用定义的主题。该插件将自动创建订阅。

include_metadata编辑

  • 值类型为 布尔值
  • 默认值为 false

如果设置为 true,则将在 [@metadata][pubsub_message] 字段中包含完整的消息数据。

create_subscription编辑

在 1.2.0 中添加。

  • 值类型为 布尔值
  • 默认值为 false

如果为 true,则插件将在发布之前尝试创建订阅。注意:这需要向客户端授予额外的权限,并且对于大多数用例而言, 建议这样做。

通用选项编辑

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

设置 输入类型 必需

add_field

哈希

codec

codec

enable_metric

布尔值

id

字符串

tags

数组

type

字符串

详细信息编辑

 

add_field编辑

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

向事件添加字段

codec编辑

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

enable_metric编辑

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

id编辑

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

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

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

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

tags编辑

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

向事件添加任意数量的任意标签。

这有助于以后的处理。

type编辑

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

向此输入处理的所有事件添加 type 字段。

类型主要用于过滤器激活。

类型存储为事件本身的一部分,因此您也可以使用类型在 Kibana 中搜索它。

如果您尝试在已具有类型的事件上设置类型(例如,当您将事件从传送器发送到索引器时),则新输入不会覆盖现有类型。在传送器处设置的类型将始终保留在该事件中,即使该事件被发送到另一个 Logstash 服务器也是如此。