You need to enable JavaScript to run this app.
文档中心
应用性能监控全链路版

应用性能监控全链路版

复制全文
下载 pdf
接入指南
Go 应用接入
复制全文
下载 pdf
Go 应用接入
Go应用在不同场景下有不同的接入方式,本文介绍不同场景下Go应用的详细接入操作,接入后可以实现自动收集Trace信息、自动生成Metric指标、以及调用链检索、日志检索等功能。​
通过OpenTelemetry接入(推荐)​
OpenTelemetry是CNCF的一个可观测性项目,旨在提供可观测性领域的标准化方案,解决观测数据的数据模型、采集、处理、导出等的标准化问题,提供与三方vendor无关的服务。​
如果您的应用已经接入了OpenTelemetry的SDK,APMPlus服务端可以接收OpenTelemetry上报的数据。接入APMPlus后,您将获得RED指标生成能力、Trace多维检索、单链路检索、拓扑生成等多项能力。​
说明​
如果您需要隔离生产和测试数据,请参见将生产和测试数据隔离。​
使用限制​
  • OpenTelemetry Metrics转换为Prometheus Metrics时,存在一定限制:​
  • 不支持聚合方式为delta的数据。请不要修改SDK侧的默认聚合配置,保证SDK侧数据的聚合方式为cumulative。​
  • 工作区拥有独立的数据上报凭证,如需使用工作区进行数据管理和数据隔离,请确保 apmplus-opentelemetry-collector 组件已经升级至 v3.1.0 及以上版本。​
数据上报​
方式一:直接上报至 ApmPlus 服务端​
可观测数据直接上报至 ApmPlus 服务端,支持用户通过 grpc、http/protobuf 等方式进行数据上报。​
方式二:Otel Collector 转发【推荐】​
APMPlusOpenTelemetryCollector是APMPlus基于OpenTelemetryCollector二次开发的数据采集器。您可以在集群中安装 Opentelemetry Collector 做数据转发,有两种安装方式:​
  • 通过 VKE 集群组件中心,白屏安装 apmplus-opentelemetry-collector 组件。此外,推荐同时安装 apmplus-server-agent 组件,可以实现主机、进程维度的指标数据采集。​
  • ​Image​​
  • 通过服务接入页面提供的脚本手动安装。​
数据接入​
Go 服务集成 Opentelemetry,通常需要在应用中引入 Opentelemetry SDK 或者第三方增强库,具体请参见opentelemetry Go开源文档。​
完成代码编译之后,启动前通过环境变量设置 otel 相关的属性:​
  • 如果指定数据直接上报至 ApmPlus 后端:​
  • ​
    export OTEL_GO_X_RESOURCE=true​
    export OTEL_EXPORTER_OTLP_PROTOCOL=<protocol>​
    export OTEL_EXPORTER_OTLP_ENDPOINT=<apmplus_endpoint>​
    export OTEL_SERVICE_NAME=<service_name>​
    export OTEL_EXPORTER_OTLP_HEADERS="X-ByteAPM-AppKey=<app_key>"​
    ​
说明​
<protocol> 建议填写 grpc​
<apmplus_endpoint> 按地域(上海、北京...)和接入网络类型(公网、私网)不同,填写地址不同,详情至 apmplus 服务接入页面获取具体的 endpoint。更多详细说明参见:如何使用接入中心?。​
<app_key> 填写服务接入控制台提供的app_key。不同工作区对应的 app_key 各不相同,获取方法参见:如何获取应用性能监控的认证信息 AppKey?。​
  • 如果指定数据上报至 Collector​
  • 方式一:通过环境变量注入​
  • ​
    export OTEL_GO_X_RESOURCE=true​
    export OTEL_EXPORTER_OTLP_PROTOCOL=<protocol>​
    export OTEL_EXPORTER_OTLP_ENDPOINT=<collector_endpoint>​
    export OTEL_SERVICE_NAME=<service_name>​
    export OTEL_RESOURCE_ATTRIBUTES=apmplus.workspace=<workspace_name>​
    ​
说明​
<protocol> 建议填写 grpc。​
<service_name> 填写应用服务名称。​
<collector_endpoint> 根据安装的 apmplus-opentelemetry-collector 版本,如果 >= 2.0.0 版本,填写 http://apmplus-opentelemetry-gateway-service-grpc.apmplus-opentelemetry-operator:4317,低于该版本则填写 http://apmplus-opentelemetry-gateway-service-grpc.kube-system:4317。​
<workspace_name> 指定服务所属工作区的名称。​
  • 方式二:VKE 场景下,在 Yaml 中手动增加instrumentation.apmplus.volcengine.com/inject-sdk和instrumentation.apmplus.volcengine.com/workspace注解。​
  • ​
    apiVersion: apps/v1​
    kind: Deployment​
    metadata:​
    name: simple-go​
    labels:​
    app: simple-go​
    spec:​
    replicas: 1​
    selector:​
    matchLabels:​
    app: simple-go​
    template:​
    metadata:​
    labels:​
    app: simple-go​
    annotations:​
    instrumentation.apmplus.volcengine.com/inject-sdk: 'true' # 开启 APMPlus 观测注入​
    instrumentation.apmplus.volcengine.com/workspace: default # 指定服务所属工作区​
    spec:​
    containers:​
    - name: simple-go​
    image: java_demo_simple​
    imagePullPolicy: Always​
    env:​
    - name: CONTAINER_RUNTIME​
    value: "k8s"​
    ​
  • 方式三:VKE 白屏修改工作负载。示例如下,修改完成后,重启业务 POD。​
  • ​​​
如果需要监控 Go 运行时指标,需要做如下操作:​
  1. 引入 runtime Instrument 库(版本需 >= v0.53.0),在业务代码中手动进行初始化,具体参考:example​
​
package main​
​
import (​
"context"​
"log"​
"time"​
​
"go.opentelemetry.io/contrib/instrumentation/runtime"​
"go.opentelemetry.io/otel"​
"go.opentelemetry.io/otel/sdk/metric"​
)​
​
func main() {​
// This reader is used as a stand-in for a reader that will actually export​
// data. See https://pkg.go.dev/go.opentelemetry.io/otel/exporters for​
// exporters that can be used as or with readers.​
reader := metric.NewManualReader(​
// Add the runtime producer to get histograms from the Go runtime.​
metric.WithProducer(runtime.NewProducer()),​
)​
provider := metric.NewMeterProvider(metric.WithReader(reader))​
defer func() {​
err := provider.Shutdown(context.Background())​
if err != nil {​
log.Fatal(err)​
}​
}()​
otel.SetMeterProvider(provider)​
​
// 初始化 runtime 指标采集​
err := runtime.Start(runtime.WithMinimumReadMemStatsInterval(time.Second))​
if err != nil {​
log.Fatal(err)​
}​
}​
​
  1. 启动应用时,增加设置环境变量,禁用已废弃的 runtime 指标​
​
export OTEL_GO_X_DEPRECATED_RUNTIME_METRICS=false​
​
通过Jaeger接入​
Jaeger是一款由Uber研发的开源分布式链路追踪系统。​
对于已经集成Jaeger的已有系统,可以将jaeger的Trace数据上报到APMPlus,完成整体的全链路监控能力。​
接入APMPlus后,您将获得RED指标生成能力、Trace多维检索、单链路检索、拓扑生成等多项能力。​
Jaeger Agent接入​
SDK将数据上报到Agent,Agent将数据上报到APMPlus服务端。​
  1. 配置应用,开启数据采集。​
  • 参考jaeger文档,通过UDP将Trace数据发送到Agent。​
  1. 配置Agent,修改上报端点。​
  1. 修改jaeger-agent启动参数,配置示例如下:​
  • ​
    ./jaeger-agent --reporter.grpc.host-port=apmplus-{region}.ivolces.com:4317 \ ​
    --reporter.grpc.tls.enabled=false \ ​
    --agent.tags=app_key={appkey}​
    ​
说明​
完整配置命令请到接入中心查看,详情请参见如何使用接入中心?。​
  1. 重新启动应用。​
SDK直接上报​
SDK采集数据,直接上报到APMPlus服务端。​
  1. 配置应用,开启数据采集与上报。​
  • 通过公网配置 reporter 的示例代码如下所示:​
  • ​
    sender := jaeger_transport.NewHTTPTransport("https://apmplus-{region}.volces.com/server_collect/third_party/jaeger/v2/{appkey}/api/traces") ​
    reporter := jaeger.NewRemoteReporter(sender)​
    ​
  • 通过私网配置 reporter 的示例代码如下所示:​
  • ​
    sender := jaeger_transport.NewHTTPTransport("http://apmplus-{region}.ivolces.com/server_collect/third_party/jaeger/v2/{appkey}/api/traces") ​
    reporter := jaeger.NewRemoteReporter(sender)​
    ​
说明​
完整配置命令请到接入中心查看,详情请参见如何使用接入中心?。​
  1. 重新启动应用。​
通过Zipkin接入​
Zipkin是一款由Twitter开源的分布式链路追踪系统,通过zipkin可以帮助您收集Trace数据。​
对于已经集成Zipkin的系统,可以将已有的Trace数据上报到APMPlus,完成整体的全链路监控能力。​
接入APMPlus后,您将获得RED指标生成能力、Trace多维检索、单链路检索、拓扑生成等多项APMPlus能力。​
SDK直接上报​
SDK采集数据,直接上报到APMPlus服务端。​
  1. 配置应用,开启数据上报。​
  • 通过公网获取 zipkin 上报点。​
  • ​
    https://apmplus-{region}.volces.com/server_collect/third_party/zipkin/v2/{appkey}/api/v2/spans​
    ​
  • 通过私网获取 zipkin 上报点。​
  • ​
    http://apmplus-{region}.ivolces.com/server_collect/third_party/zipkin/v2/{appkey}/api/v2/spans​
    ​
说明​
完整配置命令请到接入中心查看,详情请参见如何使用接入中心?。​
  1. 接入服务并配置上报点。具体请参见zipkin-go示例代码。​
  1. 重新启动应用。​
通过SkyWalking接入​
SkyWalking Agent采集数据,直接上报到APMPlus服务端。当前支持SkyWalking Trace、Meter、Log、JVM、CLR数据接入。​
SDK直接上报​
  1. 获取SkyWalking grpc上报端点。​
  • ​
    skywalking.collector.backend_service=apmplus-{region}.ivolces.com:4317​
    ​
  1. 获取authentication用户标识。​
  • ​
    skywalking.agent.authentication={appkey}​
    ​
  1. 配置应用,开启数据上报。具体请参见SkyWalking文档。​
  1. 重新启动应用。​
  1. 验证数据上报。​
  • Trace接入后,可以查看拓扑图、Trace分析、服务详情等数据。​
  • Meter接入后,可在自定义指标中查看打点。​
  • Log接入后,可以查看日志。​
  • JVM、CLR接入后,可以在自定义指标中查看形如"skywalking_jvm_*"和"skywalking_clr_*"的指标。​
​
最近更新时间:2026.07.09 11:28:23
这个页面对您有帮助吗?
有用
有用
无用
无用