更新时间:2026-03-20 GMT+08:00
分享

Go语言接入APM

操作步骤

  1. 登录APM控制台
  2. 单击左侧,选择“管理与监管 > 应用性能管理 APM”,进入APM服务页面。
  3. 在左侧导航栏中选择“应用监控 > 应用列表”。
  4. 单击“接入应用”,进入接入应用页面。
  5. 选择“区域”和“应用”。单击“创建应用”,弹出“创建应用”弹窗,可以具体操作参见创建应用
  6. “接入方式”选择OpenTelemetry。
  7. “服务端语言”选择Go。
  8. 数据接入。

    侵入式接入,相关参数与操作步骤如下。

    1. 添加 OpenTelemetry 依赖,命令如下:
      import (
        "context"
        "go.opentelemetry.io/otel"
        "go.opentelemetry.io/otel/attribute" 
        "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
        "go.opentelemetry.io/otel/sdk/resource"
        sdktrace "go.opentelemetry.io/otel/sdk/trace"
        "go.opentelemetry.io/contrib/instrumentation/github.com/gin-gonic/gin/otelgin"
    2. 对接 OpenTelemetry,命令如下:
      const (
      SERVICE_NAME="应用名称.组件名称.环境名称
      APM_ENDPOINT="100.79.29.106:4317"
      APM_TOKEN=" ****** "
      )
      func main() {
      cleanup := initTracer()
      defer cleanup(context.Background())
      r := gin.Default()
      r.Use(otelgin.Middleware(SERVICE_NAME))
      ..业务代码
      }
      func initTracer() func(context.Context) error {
      headers := map[string]string{"Authentication": APM_TOKEN}
      exporter, err := otlptracegrpc.New(
      context.Background(),
      otlptracegrpc.WithInsecure(),
      otlptracegrpc.WithEndpoint(APM_ENDPOINT),
      otlptracegrpc.WithHeaders(headers),
      )
      if err != nil {
      log.Fatalf("Failed to create exporter: %v", err)
      }
      resources, err := resource.New(
      context.Background(),
      resource.WithAttributes(
      attribute.String("service.name", SERVICE_NAME),
      attribute.String("library.language", "go"),
      ),
      )
      if err != nil {
      log.Fatalf("Could not set resources: %v", err)
      }
      otel.SetTracerProvider(
      sdktrace.NewTracerProvider(
      sdktrace.WithSampler(sdktrace.AlwaysSample()),
      sdktrace.WithBatcher(exporter),
      sdktrace.WithResource(resources),
      ),
      )
      return exporter.Shutdown
      }

相关文档