You need to enable JavaScript to run this app.
导航
Go应用接入
最近更新时间:2024.11.01 17:47:01首次发布时间:2022.01.19 11:51:16

Go应用在不同场景下有不同的接入方式,本文介绍不同场景下Go应用的详细接入操作,接入后可以实现自动收集Trace信息、自动生成Metric指标、以及调用链检索、日志检索等功能。

通过OpenTelemetry接入(推荐)

OpenTelemetry是CNCF的一个可观测性项目,旨在提供可观测性领域的标准化方案,解决观测数据的数据模型、采集、处理、导出等的标准化问题,提供与三方vendor无关的服务。
如果您的应用已经接入了OpenTelemetry的SDK,APMPlus服务端可以接收OpenTelemetry上报的数据。接入APMPlus后,您将获得RED指标生成能力、Trace多维检索、单链路检索、拓扑生成等多项能力。

说明

如果您需要隔离生产和测试数据,请参见将生产和测试数据隔离

使用限制

  • 目前APMPlus仅支持OpenTelemetry中Trace部分数据的处理和Metrics、Logs的适配。
  • OpenTelemetry Metrics转换为Prometheus Metrics时,存在一定限制:
    • 开源相同,不支持ExponentialHistogram
    • 不支持聚合方式为delta的数据。请不要修改SDK侧的默认聚合配置,保证SDK侧数据的聚合方式为cumulative。

数据上报

方式一:直接上报至 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=<protocal>
    export OTEL_EXPORTER_OTLP_ENDPOINT=<apmplus_endpoint>
    export OTEL_SERVICE_NAME=<service_name>
    export OTEL_EXPORTER_OTLP_HEADERS="X-ByteAPM-AppKey=<app_key>"
    
  • 如果指定数据上报至 Collector

    export OTEL_GO_X_RESOURCE=true
    export OTEL_EXPORTER_OTLP_PROTOCOL=<protocal>
    export OTEL_EXPORTER_OTLP_ENDPOINT=<collector_endpoint>
    export OTEL_SERVICE_NAME=<service_name>
    

说明

<service_name> 填写应用服务名称
填写您对应环境的服务端地址
<app_key> 填写服务接入控制台提供的app_key
填写数据上报采用的协议,支持 grpc 和 http/protobuf

如果需要监控 Go 运行时指标,可以引入 runtime Instrument 库(版本需 >= v0.53.0),同时增加设置环境变量:

export OTEL_GO_X_DEPRECATED_RUNTIME_METRICS=true

通过Jaeger接入

Jaeger是一款由Uber研发的开源分布式链路追踪系统。
对于已经集成Jaeger的已有系统,可以将jaeger的Trace数据上报到APMPlus,完成整体的全链路监控能力。
接入APMPlus后,您将获得RED指标生成能力、Trace多维检索、单链路检索、拓扑生成等多项能力。

Jaeger Agent接入

SDK将数据上报到Agent,Agent将数据上报到APMPlus服务端。

  1. 配置应用,开启数据采集。
    参考jaeger文档,通过UDP将Trace数据发送到Agent。
  2. 配置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}
      

      说明

      完整配置命令请到接入中心查看,详情请参见如何使用接入中心?

  3. 重新启动应用。

SDK直接上报

SDK采集数据,直接上报到APMPlus服务端。

  1. 配置应用,开启数据采集与上报。
    1. 配置reporter。示例代码如下所示:

      sender := jaeger_transport.NewHTTPTransport("http://apmplus-{region}.ivolces.com/server_collect/third_party/jaeger/v2/{appkey}/api/trace") 
      reporter := jaeger.NewRemoteReporter(sender)
      

      说明

      完整配置命令请到接入中心查看,详情请参见如何使用接入中心?

  2. 重新启动应用。

通过Zipkin接入

Zipkin是一款由Twitter开源的分布式链路追踪系统,通过zipkin可以帮助您收集Trace数据。
对于已经集成Zipkin的系统,可以将已有的Trace数据上报到APMPlus,完成整体的全链路监控能力。
接入APMPlus后,您将获得RED指标生成能力、Trace多维检索、单链路检索、拓扑生成等多项APMPlus能力。

SDK直接上报

SDK采集数据,直接上报到APMPlus服务端。

  1. 配置应用,开启数据上报。
    1. 获取zipkin上报点。

      http://apmplus-{region}.ivolces.com/server_collect/third_party/zipkin/v2/{appkey}/api/v2/spans
      

      说明

      完整配置命令请到接入中心查看,详情请参见如何使用接入中心?

    2. 接入服务并配置上报点。具体请参见zipkin-go示例代码

  2. 重新启动应用。

通过SkyWalking接入

SkyWalking Agent采集数据,直接上报到APMPlus服务端。当前支持SkyWalking Trace、Meter、Log、JVM、CLR数据接入。

SDK直接上报

  1. 获取SkyWalking grpc上报端点。

    skywalking.collector.backend_service=apmplus-{region}.ivolces.com:4317
    
  2. 获取authentication用户标识。

    skywalking.agent.authentication={appkey}
    
  3. 配置应用,开启数据上报。具体请参见SkyWalking文档

  4. 重新启动应用。

  5. 验证数据上报。

    • Trace接入后,可以查看拓扑图、Trace分析、服务详情等数据。
    • Meter接入后,可在自定义指标中查看打点。
    • Log接入后,可以查看日志。
    • JVM、CLR接入后,可以在自定义指标中查看形如"skywalking_jvm_*"和"skywalking_clr_*"的指标。