Skip to main content

Application that retrieves logs from systems that aren’t natively supported by Google SecOps

Project description

LogReel

GitHub Actions Workflow Status codecov PyPI - Python Version PyPI - Downloads GitHub License

An open-source logging utility for reliable API-to-API log transport with modular plugin support.

LogReel is authored by Simone Roma, governed as a benevolent dictatorship, and distributed under license.

Introduction

In modern SaaS applications, logging is fundamentally different from traditional logging systems. SaaS applications expose APIs that must be periodically scraped to collect data, which is then stored in a logging system. Given the critical importance of logging for security and operational monitoring, any API logging service must ensure reliability and prevent data loss—even when remote systems experience temporary outages.

LogReel is a logging utility that simplifies API-based logging by fetching data from a source API and forwarding it to a destination API. It uses a cursor-based tracking mechanism to maintain continuity and prevent data duplication or loss. With its plugin-based architecture, users can easily create custom plugins to connect to different APIs, allowing LogReel to handle the continuous data collection and delivery.

Features

  • Reliable API Logging, tracks the last successful fetch with a cursor-based mechanism.
  • Plugin Architecture, allows users to implement their own plugins for source and destination APIs.
  • Continuous Execution, executes user-defined plugins in a continuous loop for real-time logging.
  • Containerised Deployment, deployable using Compose or Kubernetes for scalability and IaC integration.

Installation

Install using pip install logreel or poetry add logreel

Quickstart

  1. Create your LogReel user environment repo

  2. Add the logreel package from pypi as a dependency

  3. Define your plugins that implement the corresponding base classes

    from logreel import SourcePlugin, DestinationPlugin
    
    class MySourcePlugin(SourcePlugin):
        ...
    
    class MyDestinationPlugin(DestinationPlugin):
        ...
    
    1. Register the plugins using corresponding entrypoints and explicitly include the plugins packages
      # pyproject.toml - example using Poetry
      
      [tool.poetry]
      ...
      
      packages = [
         { include = "plugins/source" },
         { include = "plugins/destination" }
      ]
      
      [tool.poetry.dependencies]
      logreel = "^0.2.0"
      ...
      
      [tool.poetry.plugins."logreel.sources"]
      my_source_plugin = "module_path:MySourcePlugin"
      
      [tool.poetry.plugins."logreel.destinations"]
      my_destination_plugin = "module_path:MyDestinationPlugin"
      
  4. Create a docker compose file to run the service, using environment variables to specify the plugin names and parameters.

    services:
      logreel_mysource_to_mydestination:
        build:
          context: .
        restart: always
        environment:
          - SOURCE_PLUGIN=my_source_plugin
          - DESTINATION_PLUGIN=my_destination_plugin
          - OTHER_PLUGIN_PARAMS_FOO=${FOO}
    

Versioning

Releases will follow semantic versioning (major.minor.patch). Before 1.0.0 breaking changes can be included in a minor release, therefore we highly recommend pinning this package.

Contributing

Suggest a feature or report a bug. Read our developer guide.

License

LogReel is distributed under the Apache 2.0 license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

logreel-0.2.2-py3-none-any.whl (18.8 kB view details)

Uploaded Python 3

File details

Details for the file logreel-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: logreel-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 18.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for logreel-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 187045f2a5e37b77beacc973a09face9e7baa37475d295bea1588905cb4937cb
MD5 b573fdb0008821d15d31e68898529f7a
BLAKE2b-256 9bd9a56274a5927a69f7671d5ac953cb6d51e967927d4dcf7ae2c1f95be0e0e3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page