tracer

package
v1.1.3 Latest Latest
Warning

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

Go to latest
Published: Oct 6, 2023 License: MIT Imports: 16 Imported by: 0

README

Трассировщик пути вызовов функций.

Компонент основан на пакете https://opentelemetry.io/. Работает совместно с https://www.jaegertracing.io/.

Объект конфигурации.
type Config struct {
	JaegerCollectorDSN string
	JaegerAgentHost    string
	JaegerAgentPort    uint16
}

Описание полей:

Поле Описание Значение по умолчанию
JaegerCollectorDSN Строка подключения к коллектору Jaeger, этот параметр может быть передан одним из 3-х методов:
- флаг командной строки --trace.jaeger.dsn
- переменная окружения TRACE_JAEGER_DSN
- значение в конфиг файле trace.jaeger.dsn
JaegerAgentHost Хост для подключения к агенту Jaeger, этот параметр может быть передан одним из 3-х методов:
- флаг командной строки --trace.jaeger.agent.host
- переменная окружения TRACE_JAEGER_AGENT_HOST
- значение в конфиг файле trace.jaeger.agent.host
JaegerAgentPort Порт для подключения к агенту Jaeger, этот параметр может быть передан одним из 3-х методов:
- флаг командной строки --trace.jaeger.agent.port
- переменная окружения TRACE_JAEGER_AGENT_PORT
- значение в конфиг файле trace.jaeger.agent.port

Важно. Компонент трассировки позволяет использовать, одновременно, только один из методов подключения к Jaeger:

  • JaegerCollectorDSN следует использовать если Jaeger располагается "недалеко", например локально;
  • JaegerAgentHost и JaegerAgentPort, как правило, используется внутри кластеров, когда имеется несколько кластеров и один Jaeger.

Documentation

Index

Constants

View Source
const (
	JaegerCollectorDSNFieldName = "trace.jaeger.dsn"
	JaegerHostFieldName         = "trace.jaeger.agent.host"
	JaegerPortFieldName         = "trace.jaeger.agent.port"
)

Variables

View Source
var Component = &app.Component{
	Dependencies: app.Components{
		logger.Component,
		configurator.Component,
		info.Component,
	},
	Constructor: func(container container.Container) error {
		return container.Provides(
			NewConfig,
			NewReConfigurationWithConfigurator,
			func(reConfiguration *ReConfiguration) trace.Tracer { return reConfiguration },
		)
	},
	BindFlags: func(flagSet *pflag.FlagSet, container container.Container) error {
		return container.Invoke(func(config *Config) {
			flagSet.StringVar(&config.JaegerCollectorDSN, JaegerCollectorDSNFieldName, "", "dsn direct connection to Jaeger manifold")
			flagSet.StringVar(&config.JaegerAgentHost, JaegerHostFieldName, "", "host to connect to Jaeger agent")
			flagSet.Uint16Var(&config.JaegerAgentPort, JaegerPortFieldName, 0, "port to connect to Jaeger agent")
		})
	},
	Run: func(c container.Container) error {
		tracer, err := container.Get[*ReConfiguration](c)
		if err != nil {
			return err
		}

		reConfiguration, err := container.Get[configurator.ReConfiguration](c)
		if err != nil {
			return err
		}

		informer, err := container.Get[logger.Informer](c)
		if err != nil {
			return err
		}

		reConfiguration.Registration(tracer)
		informer.Info("tracer: registration in the reConfigurator")

		info, err := container.Get[info.Info](c)
		if err != nil {
			return err
		}

		config, err := container.Get[*Config](c)
		if err != nil {
			return err
		}

		info.Registration("tracer", config)

		return nil
	},
}

Functions

func New

func New(config *Config, appConfig *app.Config, informer logger.Informer) (trace.Tracer, error)

func NewWithConfigurator

func NewWithConfigurator(configurator configurator.Configurator, config *Config, appConfig *app.Config, informer logger.Informer) (trace.Tracer, error)

Types

type Config

type Config struct {
	JaegerCollectorDSN string
	JaegerAgentHost    string
	JaegerAgentPort    uint16
}

func Configuration

func Configuration(config *Config, configurator configurator.Configurator) *Config

func NewConfig

func NewConfig() *Config

type ReConfiguration

type ReConfiguration struct {
	// contains filtered or unexported fields
}

func NewReConfiguration

func NewReConfiguration(tracer trace.Tracer, appConfig *app.Config, informer logger.Informer, config *Config) *ReConfiguration

func NewReConfigurationWithConfigurator

func NewReConfigurationWithConfigurator(configurator configurator.Configurator, config *Config, appConfig *app.Config, informer logger.Informer) (*ReConfiguration, error)

func (*ReConfiguration) ReConfiguration

func (reConfiguration *ReConfiguration) ReConfiguration(configurator configurator.Configurator) error

func (*ReConfiguration) Start

func (reConfiguration *ReConfiguration) Start(ctx context.Context, spanName string, opts ...trace.SpanStartOption) (context.Context, trace.Span)

Jump to

Keyboard shortcuts

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