数据类型 | SDK 模块 | Exporter |
Log | go.opentelemetry.io/otel/sdk/log | otlploghttp |
Trace | go.opentelemetry.io/otel/sdk/trace | otlptracehttp |
Metric | go.opentelemetry.io/otel/sdk/metric | otlpmetrichttp |
topic_id。具体操作请参见 创建日志主题。网络类型 | 域名格式 | 适用场景 |
公网 | <region>.cls.tencentcs.com | 本地调试、非腾讯云环境、跨云上报 |
内网 | <region>.cls.tencentyun.com | 部署在同地域腾讯云 VPC/CVM 中,免公网流量费用、低延迟 |
地域 | 公网 Endpoint | 内网 Endpoint |
广州 | ap-guangzhou.cls.tencentcs.com | ap-guangzhou.cls.tencentyun.com |
上海 | ap-shanghai.cls.tencentcs.com | ap-shanghai.cls.tencentyun.com |
北京 | ap-beijing.cls.tencentcs.com | ap-beijing.cls.tencentyun.com |
新加坡 | ap-singapore.cls.tencentcs.com | ap-singapore.cls.tencentyun.com |
# OpenTelemetry 核心go get go.opentelemetry.io/otelgo get go.opentelemetry.io/otel/sdk# Loggo get go.opentelemetry.io/otel/loggo get go.opentelemetry.io/otel/sdk/loggo get go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp# Tracego get go.opentelemetry.io/otel/sdk/tracego get go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp# Metricgo get go.opentelemetry.io/otel/sdk/metricgo get go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp# 语义约定go get go.opentelemetry.io/otel/semconv/v1.37.0
Authorization: Basic base64(SecretId:SecretKey)topic_id: <您的 topic_id>
import "encoding/base64"func basicAuth(username, password string) string {auth := username + ":" + passwordreturn base64.StdEncoding.EncodeToString([]byte(auth))}
package mainimport ("context""go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp")func otlplog() {ctx := context.Background()// 创建 OTLP/HTTP Log Exporterexporter, err := otlploghttp.New(ctx,otlploghttp.WithEndpoint("ap-guangzhou.cls.tencentcs.com"),otlploghttp.WithHeaders(map[string]string{"Authorization": "Basic " + basicAuth("<SecretId>", "<SecretKey>"),"topic_id": "<log topic_id>",}),)if err != nil {panic(err)}_ = exporter// 后续使用 sdklog.NewLoggerProvider(...) 将 exporter 挂载到 LoggerProvider 即可上报}
参数 | 说明 |
Endpoint | CLS OTLP 接入点域名,不需要携带 http:// 前缀 |
Authorization | Basic base64(AK:SK) 格式的鉴权头 |
topic_id | 日志数据对应的 CLS 日志主题 ID |
sdklog.WithProcessor(sdklog.NewBatchProcessor(exporter,sdklog.WithExportInterval(5*time.Second),sdklog.WithExportMaxBatchSize(512),))
package mainimport ("context""log""go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp")func otlptrace() {ctx := context.Background()// 创建 OTLP/HTTP Trace ExportertraceExporter, err := otlptracehttp.New(ctx,otlptracehttp.WithEndpoint("ap-guangzhou.cls.tencentcs.com"),otlptracehttp.WithHeaders(map[string]string{"Authorization": "Basic " + basicAuth("<SecretId>", "<SecretKey>"),"topic_id": "<trace topic_id>",}),)if err != nil {log.Printf("create trace exporter failed: %v", err)return}_ = traceExporter// 后续通过 sdktrace.NewTracerProvider(...) 挂载 exporter 即可上报}
采样器 | 说明 |
AlwaysSample() | 全量采样,适合测试或低流量服务 |
NeverSample() | 全部不采样 |
TraceIDRatioBased(0.1) | 按比例采样(10%),生产推荐 |
ParentBased(...) | 根据父 Span 决定,适合分布式链路场景 |
sdktrace.WithSpanProcessor(sdktrace.NewBatchSpanProcessor(traceExporter,sdktrace.WithMaxExportBatchSize(512),sdktrace.WithBatchTimeout(5*time.Second),))
package mainimport ("context""go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp")func otlpMetric() {ctx := context.Background()// 创建 OTLP/HTTP Metric Exporterexporter, err := otlpmetrichttp.New(ctx,otlpmetrichttp.WithEndpoint("ap-guangzhou.cls.tencentcs.com"),otlpmetrichttp.WithHeaders(map[string]string{"Authorization": "Basic " + basicAuth("<SecretId>", "<SecretKey>"),"topic_id": "<metric topic_id>",}),)if err != nil {panic(err)}_ = exporter// 后续通过 metric.NewMeterProvider(metric.WithReader(metric.NewPeriodicReader(exporter, ...))) 挂载 exporter 即可周期性上报}
类型 | API | 适用场景 |
Counter | Int64Counter / Float64Counter | 单调递增,如请求总数 |
UpDownCounter | Int64UpDownCounter | 可增可减,如连接数 |
Histogram | Float64Histogram | 分布统计,如耗时 |
Gauge(观察器) | Float64ObservableGauge | 瞬时值,如 CPU 使用率 |
metric.NewPeriodicReader(exporter,metric.WithInterval(15*time.Second), // 生产建议 15~30smetric.WithTimeout(5*time.Second),)
res, _ := resource.New(ctx,resource.WithFromEnv(),resource.WithProcess(),resource.WithTelemetrySDK(),resource.WithHost(),resource.WithAttributes(semconv.ServiceNameKey.String("my-service"),semconv.ServiceNamespaceKey.String("Production"),semconv.ServiceVersionKey.String("v1.0.0"),semconv.DeploymentEnvironmentKey.String("prod"),),)
字段 | 说明 |
service.name | 服务名,必填 |
service.namespace | 服务命名空间(如环境名) |
service.version | 服务版本 |
cls:PushLog 等)。Basic <base64(AK:SK)>。topic_id 与 Endpoint 的地域不一致。需保证 topic 所属地域与 Endpoint 地域相同。Shutdown。WithEndpoint 只传域名,不要带 http:// 或 https://。WithInsecure() 选项。<region>.cls.tencentyun.com):部署在同地域腾讯云 VPC/CVM 内推荐使用,免公网流量费用、延迟更低。<region>.cls.tencentcs.com):本地调试、非腾讯云环境或跨云厂商环境使用。topic_id 所属地域保持一致,否则会报 topic not found。"x-cross-region": "ap-guangzhou"
文档反馈