golang-apm

module
v1.7.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 22, 2025 License: Apache-2.0

README

Install Golang package

go get github.com/middleware-labs/golang-apm@latest

Import Tracker

Add this import statement in your project.

import (
    track "github.com/middleware-labs/golang-apm/tracker"
)

Add this snippet in your main function

go track.Track(
		track.WithConfigTag(track.Service, "your-service-name"),
		track.WithConfigTag(track.Token, "your API token"),
	)

Import Application logs

Open-telemetry Loggers
Logger Version Minimal go version
mwotelslog v0.2.0 1.21
mwotelzap v0.0.1 1.20
mwotelzerolog v0.0.1 1.20
mwotellogrus v0.2.0 1.21
log/slog
    config, _ := track.Track(
		track.WithConfigTag(track.Service, "your service name"),
		track.WithConfigTag(track.Token, "your API token"),
	)

	logger := mwotelslog.NewMWOTelLogger(
		config,
		mwotelslog.WithDefaultConsoleLog(), // to enable console log
		mwotelslog.WithName("otelslog"),
	)
	//configure default logger
	slog.SetDefault(logger)

Add NewMWOtelHandler with config from tracker config.

This will start collecting the application log from slog and standard library logs.

See mwotelslog features sample for more details.

zap
     config, _ := track.Track(
		track.WithConfigTag(track.Service, "your service name"),
		track.WithConfigTag(track.Token, "your token"),
	)

	logger := zap.New(zapcore.NewTee(consoleCore, fileCore, mwotelzap.NewMWOTelCore(config, mwotelzap.WithName("otelzaplog"))))
	zap.ReplaceGlobals(logger)

Add NewMWOTelCore with config from tracker config.

This will start collecting the application log from zap.

See mwotelzap features sample for more details.

zerolog
    config, _ := track.Track(
		track.WithConfigTag(track.Service, "your service name"),
		track.WithConfigTag(track.Token, "your API token"),
=	)
	hook := mwotelzerolog.NewMWOTelHook(config)
	logger := log.Hook(hook)

Add NewMWOTelHook with config from tracker config.

This will start collecting the application log from zerolog.

See mwotelzerolog features sample for more details.

logrus
     config, _ := track.Track(
		track.WithConfigTag(track.Service, "your service name"),
		track.WithConfigTag(track.Token, "your API token"),
	)

	logHook := otellog.NewMWOTelHook(config, otellog.WithLevels(log.AllLevels), otellog.WithName("otellogrus"))

	// add hook in logrus
	log.AddHook(logHook)
	// set formatter if required
	log.SetFormatter(&log.JSONFormatter{})

Add NewMWOTelHook with config from tracker config.

This will start collecting the application log from logrus.

See mwotellogrus features sample for more details.

Collect Application Profiling Data

If you also want to collect profiling data for your application, simply add this one config to your track.Track() call

track.WithConfigTag(track.Token, "{ACCOUNT_KEY}"),

Stack Error

If you want to record exception in traces then you can use track.ErrorRecording(ctx,error) method.

err := errors.New("something went wrong")
track.ErrorRecording(ctx, err)

Pause Default Metrics

go track.Track(
	track.WithConfigTag(track.PauseDefaultMetrics,true),
)

Enable Debug Mode with console log

go track.Track(
	track.WithConfigTag(track.Debug, true),
)

Enable Debug Mode with logs files for Metrics, Traces and Logs

go track.Track(
	 track.WithConfigTag(track.Debug, true),
     track.WithConfigTag(track.DebugLogFile, true),
)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL