Skip to content

go-gorm/opentelemetry

Folders and files

NameName
Last commit message
Last commit date
Oct 28, 2024
Dec 11, 2024
Jul 22, 2022
Dec 11, 2024
Nov 24, 2024
Jun 1, 2023
Mar 17, 2025
Jul 22, 2022
Dec 28, 2022
Jul 22, 2022
Dec 11, 2024
Dec 11, 2024

Repository files navigation

opentelemetry

Opentelemetry for gorm

Feature

Tracing

  • support tracing gorm by Hook Create Query Delete Update Row Raw

Metrics

  • Collect DB Status

Logging

  • Use logrus replace gorm default logger
  • Use hook to report span message

Provider

  • Out-of-the-box default opentelemetry provider
  • Support setting via environment variables

How to Use ?

Set logger

package main

import(
	"gorm.io/gorm/logger"
	"gorm.io/plugin/opentelemetry/logging/logrus"
)

func init(){
	logger := logger.New(
		logrus.NewWriter(),
		logger.Config{
			SlowThreshold: time.Millisecond,
			LogLevel:      logger.Warn,
			Colorful:      false,
		},
	)
	db, err := gorm.Open(sqlite.Open("file::memory:?cache=shared"),&gorm.Config{Logger: logger})
}

Set tracing and metrics

package main

import(
	"gorm.io/plugin/opentelemetry/tracing"
)

func init(){

	db, err := gorm.Open(sqlite.Open("file::memory:?cache=shared"), &gorm.Config{})
	if err != nil {
		panic(err)
	}

	if err := db.Use(tracing.NewPlugin()); err != nil {
		panic(err)
	}
}

Set only tracing

package main

import(
	"gorm.io/plugin/opentelemetry/tracing"
)

func init(){

	db, err := gorm.Open(sqlite.Open("file::memory:?cache=shared"), &gorm.Config{})
	if err != nil {
		panic(err)
	}

	if err := db.Use(tracing.NewPlugin(tracing.WithoutMetrics())); err != nil {
		panic(err)
	}
}

More info

See examples