Documentation
¶
Overview ¶
Package telemetrymgr 提供统一的可观测性管理功能,支持 Traces、Metrics、Logs 三大信号。
核心特性:
- 统一接口 - 提供 TelemetryManager 接口,统一管理可观测性组件
- 多驱动支持 - 支持 none(空实现)和 otel(OpenTelemetry)两种驱动
- 生命周期管理 - 集成 OnStart/OnStop 生命周期钩子,支持优雅关闭
- 灵活配置 - 支持从配置提供者或直接配置创建管理器实例
- 可观测性集成 - 完整支持链路追踪、指标收集和结构化日志
基本用法:
loggermgr "github.com/lite-lake/litecore-go/component/manager/loggermgr"
loggerMgr := loggermgr.GetLoggerManager()
logger := loggerMgr.Ins()
// 使用默认的 none 驱动创建管理器
mgr, err := telemetrymgr.Build("none", nil)
if err != nil {
logger.Fatal("Failed to create telemetry manager", "error", err)
}
defer mgr.Shutdown(context.Background())
// 使用 OpenTelemetry 驱动
mgr, err = telemetrymgr.Build("otel", map[string]any{
"endpoint": "localhost:4317",
"insecure": true,
})
if err != nil {
logger.Fatal("Failed to create telemetry manager", "error", err)
}
defer mgr.Shutdown(context.Background())
驱动类型:
支持 "none" 和 "otel" 两种驱动:
- none: 空实现,不产生任何可观测性数据,适用于不需要遥测的场景
- otel: OpenTelemetry 实现,连接到 OTLP 收集器(如 Jaeger、Tempo 等)
从配置提供者创建:
// 从配置提供者读取配置
mgr, err := telemetrymgr.BuildWithConfigProvider(configProvider)
if err != nil {
logger.Fatal("Failed to create telemetry manager from config provider", "error", err)
}
配置路径:
- telemetry.driver: 驱动类型 ("otel", "none")
- telemetry.otel_config: OTel 驱动配置(当 driver=otel 时使用)
使用 Tracer:
tracer := mgr.Tracer("my-service")
ctx, span := tracer.Start(ctx, "operation-name")
defer span.End()
span.SetAttributes(attribute.String("key", "value"))
使用 Meter:
meter := mgr.Meter("my-service")
counter, _ := meter.Float64Counter("requests_total")
counter.Add(ctx, 1, attribute.String("path", "/api/users"))
使用 Logger:
logger := mgr.Logger("my-service")
logger.Emit(context.Background(), log.Record{...})
优雅关闭:
// OnStop 会自动调用 Shutdown,也可以手动调用 ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() mgr.Shutdown(ctx)
Index ¶
- Constants
- func ValidateContext(ctx context.Context) error
- type FeatureConfig
- type ITelemetryManager
- func Build(driverType string, driverConfig map[string]any) (ITelemetryManager, error)
- func BuildWithConfigProvider(configProvider configmgr.IConfigManager) (ITelemetryManager, error)
- func NewTelemetryManagerNoneImpl() ITelemetryManager
- func NewTelemetryManagerOtelImpl(cfg *TelemetryConfig) (ITelemetryManager, error)
- type OtelConfig
- type ResourceAttribute
- type TelemetryConfig
Constants ¶
View Source
const ( // 默认值 DefaultOtelEndpoint = "localhost:4317" DefaultOtelInsecure = false )
Variables ¶
This section is empty.
Functions ¶
Types ¶
type ITelemetryManager ¶
type ITelemetryManager interface {
common.IBaseManager
// ========== Tracing ==========
// Tracer 获取 Tracer 实例
Tracer(name string) trace.Tracer
// TracerProvider 获取 TracerProvider
TracerProvider() *sdktrace.TracerProvider
// ========== Metrics ==========
// Meter 获取 Meter 实例
Meter(name string) metric.Meter
// MeterProvider 获取 MeterProvider
MeterProvider() *sdkmetric.MeterProvider
// ========== Logging ==========
// Logger 获取 Logger 实例
Logger(name string) log.Logger
// LoggerProvider 获取 LoggerProvider
LoggerProvider() *sdklog.LoggerProvider
// ========== 生命周期 ==========
// Shutdown 关闭观测管理器,刷新所有待处理的数据
Shutdown(ctx context.Context) error
}
ITelemetryManager 观测管理器接口 统一提供 Traces、Metrics、Logs 三大观测能力
func Build ¶
func Build( driverType string, driverConfig map[string]any, ) (ITelemetryManager, error)
Build 创建观测管理器实例 driverType: 驱动类型 ("otel", "none") driverConfig: 驱动配置 (根据驱动类型不同而不同)
- otel: 传递给 parseOtelConfig 的 map[string]any
- none: 忽略
返回 ITelemetryManager 接口实例和可能的错误
func BuildWithConfigProvider ¶
func BuildWithConfigProvider(configProvider configmgr.IConfigManager) (ITelemetryManager, error)
BuildWithConfigProvider 从配置提供者创建观测管理器实例 自动从配置提供者读取 telemetry.driver 和对应驱动配置 配置路径:
- telemetry.driver: 驱动类型 ("otel", "none")
- telemetry.otel_config: OTEL 驱动配置(当 driver=otel 时使用)
返回 ITelemetryManager 接口实例和可能的错误
func NewTelemetryManagerNoneImpl ¶
func NewTelemetryManagerNoneImpl() ITelemetryManager
NewTelemetryManagerNoneImpl 创建空观测管理器实现
func NewTelemetryManagerOtelImpl ¶
func NewTelemetryManagerOtelImpl(cfg *TelemetryConfig) (ITelemetryManager, error)
NewTelemetryManagerOtelImpl 创建 OTEL 观测管理器实现
type OtelConfig ¶
type OtelConfig struct {
Endpoint string `yaml:"endpoint"` // OTLP 端点,如 http://localhost:4317
Insecure bool `yaml:"insecure"` // 是否使用不安全连接(默认false,使用TLS)
ResourceAttributes []ResourceAttribute `yaml:"resource_attributes"` // 资源属性
Headers map[string]string `yaml:"headers"` // 请求头(用于认证)
Traces *FeatureConfig `yaml:"traces"` // 链路追踪配置
Metrics *FeatureConfig `yaml:"metrics"` // 指标配置
Logs *FeatureConfig `yaml:"logs"` // 日志配置
}
OtelConfig OpenTelemetry 配置
type ResourceAttribute ¶
ResourceAttribute 资源属性
type TelemetryConfig ¶
type TelemetryConfig struct {
Driver string `yaml:"driver"` // 驱动类型: none, otel
OtelConfig *OtelConfig `yaml:"otel_config"` // OTEL 驱动配置
}
TelemetryConfig 观测管理配置
func ParseTelemetryConfigFromMap ¶
func ParseTelemetryConfigFromMap(cfg map[string]any) (*TelemetryConfig, error)
ParseTelemetryConfigFromMap 从 ConfigMap 解析观测配置
Click to show internal directories.
Click to hide internal directories.