serverless-plugin-cloudwatch-sumologic

Serverless Plugin to enable log delivery from cloudwatch to sumologic via a lambda function and log group subscriptions

Usage no npm install needed!

<script type="module">
  import serverlessPluginCloudwatchSumologic from 'https://cdn.skypack.dev/serverless-plugin-cloudwatch-sumologic';
</script>

README

serverless-plugin-cloudwatch-sumologic Build Status

Plugin which auto-subscribes a log delivery lambda function to lambda log groups created by Serverless

Installation

npm install --save-dev serverless-plugin-cloudwatch-sumologic

Configuration

  1. First follow this guide to create a new collector and http source on Sumologic.
  2. Add the following custom variables to your serverless.yml file.
custom:
    shipLogs:
        # Required
        arn: existing cloudwatch logs ARN
        # OR
        collectorUrl: Paste your url from step 1. here

        # Optional, default pattern is "[timestamp=*Z, request_id=\"*-*\", event]"
        filterPattern: "[timestamp=*Z, request_id=\"*-*\", correlation_id=\"*-*\", event]"
        role: ARN of IAM role to use

How it works

This plugin automates the process described in the readme provided by Sumologic.

Upon running sls deploy it will...

  1. if no existing cloudwatch function is specified
    1. Create a temporary function in the root of your serverless project
    2. Add that function to the in-memory CloudFormation script created by the serverless framework
  2. Iterate through all the functions (except for the sumologic one) and generate:
    1. CloudFormation Subscription Filter resources linking the log groups created by serverless framework to the sumologic lambda function.
  3. Wait for the stack creation/update to complete and then delete the temporarily created function source directory.

Caveats

You must be running serverless 1.6.0 or higher.

Contribute

Please fork this repo to make changes and then issue a pull request back to this repo. No unit tests are included at this time. Unit tests will be added before this goes into version 1.0.0

Contributors

Daniel Parker (@rlgod)