Epsagon Documentation

Welcome to the Epsagon Documentation. You'll find comprehensive guides and documentation to help you start working with our product as quickly as possible. Let's jump right in!

Get Started

Lambda Functions

The Epsagon tracing libraries allows you to collect and monitor your functions, for metrics, traces, calls, and correlation to logs.

Auto-tracing Node.js and Python functions

Using the Epsagon dashboard you can easily enable tracing for Node.js and Python function.

📘

AWS Lambda auto-tracing

This feature changes the functions' configuration by adding a layer and setting a new handler.
We recommend getting started with a few functions in development.

To enable auto-tracing, go to the functions screen, select the desired functions on the left side, and under actions, click enable auto-tracing:

To disable, follow the same instructions, but under actions select disable auto-tracing:

Calling the SDK

You can manually call the Epsagon SDK library inside your Lambda functions.
Install our library according to your runtime:

npm install epsagon
pip install --upgrade epsagon
<!--Add the epsagon dependecy to your pom.xml-->
<dependency>
  <groupId>com.epsagon</groupId>
  <artifactId>epsagon</artifactId>
  <version>{Epsagon version}</version>
</dependency>
dotnet add package Epsagon.Dotnet.Lambda
# Using go get
go get github.com/epsagon/epsagon-go
# Using dep
dep ensure -add github.com/epsagon/epsagon-go

Inside your function main handler (where you get the event and context) add the following snippet, and wrap the handler:

const epsagon = require('epsagon');
epsagon.init({
    token: '<epsagon-token>',
    appName: '<app-name-stage>',
    metadataOnly: false,
});

// Wrap your entry point
module.exports.handler = epsagon.lambdaWrapper((event, context, callback) => {
  // Your code is here
});

// Async functions example
module.exports.handler = epsagon.lambdaWrapper(async (event) => {
  // Your code is here
});
import epsagon
epsagon.init(
    token='<epsagon-token>',
    app_name='<app-name-stage>',
    metadata_only=False,
)

# Wrap your entry point
@epsagon.lambda_wrapper
def handle(event, context):
    # Your code is here
// Create a simple class that extends com.epsagon.EpsagonRequestHandler
import com.epsagon.EpsagonRequestHandler;
public class EpsagonWrapper extends EpsagonRequestHandler {
    static {
        try {
            init("com.yourcompany.YourHandler::yourHandlerMethod")
                    .setToken("<epsagon-token>")
                    .setAppName("<app-name-stage>");
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}
// Inherit from Epsagon's LambdaHandler Base Class
public class Function : LambdaHandler<S3Event, string> // LambdaHandler<TEvent, TRes>
{
    public override string HandlerFunction(S3Event input, ILambdaContext context)
    {
        return "Hello from Epsagon!";
    }
}

// Passing a callback
using Epsagon.Dotnet.Lambda;

public class FunctionClass {
    public FunctionClass() {
        EpsagonBootstrap.Bootstrap();
    }
    
    public string MyHandler(S3Event input, ILambdaContext context) {
        return EpsagonHandler.Handle<TEvent, TRes>(input, context, () => {
            // your code is here...
        });
    }
}
package main

import (
    "github.com/aws/aws-lambda-go/events"
    "github.com/aws/aws-lambda-go/lambda"
    "github.com/epsagon/epsagon-go/epsagon"
    "log"
)

func myHandler(request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
    log.Println("In myHandler, received body: ", request.Body)
    return events.APIGatewayProxyResponse{Body: request.Body, StatusCode: 200}, nil
}

func main() {
    log.Println("enter main")
    lambda.Start(epsagon.WrapLambdaHandler(
        epsagon.NewTracerConfig("app-name-stage","epsagon-token"),
        myHandler))
}

Updated 23 days ago


Lambda Functions


Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.