The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
grafana/pkg/plugins/config/tracing.go

38 lines
1.1 KiB

package config
import (
"fmt"
"github.com/grafana/grafana/pkg/infra/tracing"
"github.com/grafana/grafana/pkg/setting"
)
const otlpExporter string = "otlp"
// OpentelemetryCfg contains the Opentelemetry address and propagation config values.
// This is used to export the Opentelemetry (OTLP) config without exposing the whole *setting.Cfg.
type OpentelemetryCfg struct {
Address string
Propagation string
}
// IsEnabled returns true if OTLP tracing is enabled (address set)
func (c OpentelemetryCfg) IsEnabled() bool {
return c.Address != ""
}
// NewOpentelemetryCfg creates a new OpentelemetryCfg based on the provided Grafana config.
// If Opentelemetry (OTLP) is disabled, a zero-value OpentelemetryCfg is returned.
func NewOpentelemetryCfg(grafanaCfg *setting.Cfg) (OpentelemetryCfg, error) {
ots, err := tracing.ParseSettingsOpentelemetry(grafanaCfg)
if err != nil {
return OpentelemetryCfg{}, fmt.Errorf("parse settings: %w", err)
}
if ots.Enabled != otlpExporter {
return OpentelemetryCfg{}, nil
}
return OpentelemetryCfg{
Address: ots.Address,
Propagation: ots.Propagation,
}, nil
}