%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /backups/router/usr/local/share/syslog-ng/include/scl/google/
Upload File :
Create Path :
Current File : //backups/router/usr/local/share/syslog-ng/include/scl/google/google-pubsub.conf

#############################################################################
# Copyright (c) 2023 Attila Szakacs
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 as published
# by the Free Software Foundation, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
#
# As an additional exemption you are allowed to compile & link against the
# OpenSSL libraries as published by the OpenSSL project. See the file
# COPYING for details.
#
#############################################################################

@requires json-plugin

block destination google_pubsub(
  project()
  topic()
  auth()
  service_endpoint("https://pubsub.googleapis.com")
  data("${MESSAGE}")
  attributes("--scope rfc5424,all-nv-pairs --exclude MESSAGE")
  batch_lines(1000)
  batch_bytes(10MB)
  batch_timeout(5000)
  workers(8)
  timeout(10)
  use_system_cert_store(yes)
  ...)
{

@requires http "The google-pubsub() driver depends on the syslog-ng http module, please install the syslog-ng-mod-http (Debian & derivatives) or the syslog-ng-http (RHEL & co) package"
@requires cloud_auth "The google-pubsub() driver depends on the syslog-ng Cloud Auth module, please install the syslog-ng-mod-cloud-auth (Debian & derivatives) or the syslog-ng-cloud-auth (RHEL & co) package"

  http(
    url("`service_endpoint`/v1/projects/`project`/topics/`topic`:publish")
    method("POST")
    headers("Content-Type: application/json")
    cloud-auth(
      gcp(
        service-account(audience("https://pubsub.googleapis.com/google.pubsub.v1.Publisher"))
        `auth`
      )
    )
    body(
      '$(format-json --omit-empty-values
          data=$(base64-encode `data`)
          attributes=literal($(format-flat-json `attributes`)))'
    )
    body_prefix('{"messages":[')
    body_suffix(']}')
    delimiter(',')
    batch-lines(`batch_lines`)
    batch-bytes(`batch_bytes`)
    batch-timeout(`batch_timeout`)
    workers(`workers`)
    timeout(`timeout`)
    use_system_cert_store(`use_system_cert_store`)
    `__VARARGS__`
  );
};

Zerion Mini Shell 1.0