Google_pubsub 输入插件

编辑

Google_pubsub 输入插件

编辑
  • 插件版本:v1.4.0
  • 发布时间:2024-10-15
  • 变更日志

其他版本,请参见 版本化插件文档.

安装

编辑

对于默认情况下未捆绑的插件,可以通过运行 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 依赖项 这是一个用于 Google Pub/SubLogstash 输入插件。该插件可以订阅主题并摄取消息。

开发此插件的主要动机是通过 导出日志 功能摄取 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

编辑

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

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

通常假定传入的消息为 JSON 格式,并将按原样添加到 logstash event 中。但是,如果收到纯文本消息,插件将以 logstash event 中的 raw_message 返回原始文本。

身份验证

编辑

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

  1. 如果您在 Google Cloud Platform 之外运行 Logstash,则需要在配置中的 json_key_file 设置中提供 JSON 私钥文件的路径。如果您不想上传文件并将其内容用作字符串,则在 json_key_file_content 设置中添加 JSON 私钥的内容。您必须为服务帐号分配足够的权限才能创建订阅并从订阅中提取消息。在此处了解有关 GCP 服务帐号和 IAM 角色的更多信息

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

Stackdriver Logging(可选)

编辑

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

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

示例配置

编辑

以下是包含的 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

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

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

enable_metric

编辑

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

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

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

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

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

tags

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

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

这可以帮助以后进行处理。

type

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

为该输入处理的所有事件添加type字段。

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

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

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