Google_pubsub 输入插件

编辑

Google_pubsub 输入插件

编辑

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

安装

编辑

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

获取帮助

编辑

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

描述

编辑

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

版权所有 2016 Google Inc.

根据 Apache 许可证 2.0 版(“许可证”)获得许可;除非遵守许可证,否则您不得使用此文件。您可以在以下位置获取许可证的副本:

https://apache.ac.cn/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则根据“按原样”基础分发的软件不提供任何形式的明示或暗示的保证或条件。请参阅许可证以了解管理权限和限制的特定语言。Google 依赖项 这是一个用于 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

编辑

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

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

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

身份验证

编辑

您有两种身份验证选项,具体取决于您运行 Logstash 的位置。

  1. 如果您在 Google Cloud Platform 之外运行 Logstash,则需要在配置文件的 json_key_file 设置中提供 JSON 私钥文件的路径。如果您不想上传该文件并将其内容用作字符串,请将 JSON 私钥的内容添加到 json_key_file_content 设置中。您必须为服务帐户分配足够的角色,以便创建订阅并从订阅中提取消息。在此处了解有关 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

有效的 filesystem 路径

max_messages

数字

project_id

字符串

订阅

字符串

主题

字符串

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 中搜索它。

如果您尝试在已经具有类型的事件上设置类型(例如,当您从 shipper 向 indexer 发送事件时),则新的输入将不会覆盖现有的类型。在 shipper 上设置的类型会在该事件的整个生命周期中保留,即使发送到另一个 Logstash 服务器也是如此。