Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

fluent-plugin-cwm-http

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fluent-plugin-cwm-http

  • 0.3.2
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

fluent-plugin-http-cwm

Overview

Fluentd HTTP input plugin for CloudWebManage Logging Component.

This plugin:

  1. receives the incoming JSON logs from MinIO using an HTTP endpoint,
  2. validates the required JSON fields,
  3. aggregates the logging metrics,
  4. flushes the aggregated metrics to the configured Redis instance; and,
  5. routes logs to the configured log targets e.g. S3, ElasticSearch, etc.
  +------------------+
  |       MinIO      |
  +------------------+
            |
            | JSON
            | logs
            v
  +------------------+
  |     fluentd      |
  |                  |
  | +--------------+ |                   +-----------------+
  | |   http_cwm   | |     [metrics]     |      Redis      |
  | |   (input)    |-------------------->|      Server     |
  | +--------------+ |                   +-----------------+
  |                  |
  | +--------------+ |                   +-----------------+
  | |      s3      | |     [raw logs]    |       S3        |
  | |   (output)   |-------------------->|   (log target)  |
  | +--------------+ |                   +-----------------+
  |                  |
  | +--------------+ |                   +-----------------+
  | |elasticsearch | |     [raw logs]    |  ElasticSearch  |
  | |   (output)   |-------------------->|  (log target)   |
  | +--------------+ |                   +-----------------+
  |                  |
  +------------------+

The following metrics are aggregated:

metricdescription
bytes_insize of Request header and its Content-Length
bytes_outsize of Response header and its Content-Length
num_requests_incount of APIs [WebUpload, PutObject, DeleteObject]
num_requests_outcount of APIs [WebDownload, GetObject]
num_requests_misccount of APIs other than in and out

Installation

RubyGems

gem install fluent-plugin-cwm-http

Bundler

Add the following line to your Gemfile:

gem 'fluent-plugin-cwm-http'

And then execute:

bundle

Configuration

  • host (string) (optional): The address to bind to.
    • Default value: localhost.
  • port (integer) (optional): The port to listen to.
    • Default value: 8080.
  • tag (string) (required): The tag for the event.

<redis> section (optional) (single)

  • host (string) (optional): The address of Redis server.
    • Default value: localhost.
  • port (integer) (optional): The port of Redis server.
    • Default value: 6379.
  • db (integer) (optional): The db to use.
    • Default value: 0.
  • grace_period (time) (optional): The grace period for last action update.
    • Default value: 300s.
  • flush_interval (time) (optional): The flush interval to send metrics.
    • Default value: 300s.
  • last_update_prefix (string) (optional): The prefix for last update key.
    • Default value: deploymentid:last_action.
  • metrics_prefix (string) (optional): The prefix for metrics key.
    • Default value: deploymentid:minio-metrics.

Sample Configuration

# Endpoint for incoming logs: http://host:port/<tag>

# HTTP Input
<source>
  @type                   http_cwm
  @id                     http_cwm_logs

  host                    localhost
  port                    8080

  tag                     logs

  <redis>
    host                  localhost
    port                  6379
    db                    0
    grace_period          10s
    flush_interval        10s
    last_update_prefix    deploymentid:last_action
    metrics_prefix        deploymentid:minio-metrics
  </redis>
</source>

# Output e.g. ElasticSearch, S3, etc.
<match logs>
  @type                   elasticsearch
  # ...
</match>

The environment variables may also be used for the configuration.

Example:

<source>
  @type                   http_cwm
  @id                     http_cwm_logs

  host                    "#{ENV['HTTP_HOST']}"
  port                    "#{ENV['HTTP_PORT']}"

  # ...
</source>

Contribute

  • Fork the project.
  • Check out the latest main branch.
  • Create a feature or bugfix branch from main.
  • Commit and push your changes.
  • Make sure to add and run tests locally: bundle exec rake test.
  • Run Rubocop locally and fix all the lint warnings.
  • Make sure to update Gemfile.lock: sudo bundle update.
  • Submit the PR.

Publish the gem

The gem is published via the publish.yml Workflow on tagging. The tag must be of the format v0.3.0. This workflow depends on the successful completion of the ci.yml workflow and then it looks for the tag. So, make sure that all the CI issues are resolved before creating a new tag. If there are issues while publishing the gem i.e. publish workflow doesn't work properly, you can delete and then recreate the tag to retrigger this workflow.

License

Apache 2.0

FAQs

Package last updated on 16 Feb 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc