You need to enable JavaScript to run this app.
导航

其他语言应用接入

最近更新时间2023.09.06 16:25:51

首次发布时间2022.06.27 10:17:35

本文介绍除了Java、Go、Python之外的其他语言开发的应用,通过开源产品接入APMPlus。

通过OpenTelemetry接入

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

说明

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

使用限制

  • 目前APMPlus仅支持OpenTelemetry中Trace部分数据的处理和Metrics的适配,Logs暂不支持。
  • 其中,APMPlus采用Prometheus作为OpenTelemetry Metrics的存储,支持promql对metrics进行查询,具体应用请参见自定义看板报警管理
  • OpenTelemetry Metrics转换为Prometheus Metrics时,存在一定限制:
    • 开源相同,不支持ExponentialHistogram
    • 不支持聚合方式为delta的数据。请不要修改SDK侧的默认聚合配置,保证SDK侧数据的聚合方式为cumulative。

Collector采集

SDK将数据上报到Collector,Collector采集数据上报到APM服务端。

  1. 配置应用,开启数据上报。

    1. 下载OpenTelemetryJavaAgent。

      wget https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/latest/download/opentelemetry-javaagent.jar
      
    2. 修改应用启动参数,设置javaagent和otel.service.name,示例如下:

      java -javaagent:<path/to/opentelemetry-javaagent.jar> \
           -Dotel.exporter.otlp.endpoint=<your-ot-collector-endpoint> \
           -Dotel.exporter.otlp.protocol=<your-ot-collector-protocal> \ 
           -Dotel.service.name=java-opentelemetry-otlp-instrumentation \
           -jar myapp.jar
      
  2. 配置collector,修改上报端点。
    进入接入中心,选择其他 > OpenTelemetry > Collector,获取如下配置。需要区分您的开服区域(region)与网络接入方式(network),appkey是用户的唯一标识。

    exporters:
      otlp:
        endpoint: apmplus-{region}.volces.com:4317
        compression: gzip
        headers:
            X-ByteAPM-AppKey: {appkey}
        tls:
            insecure: true
    

    说明

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

  3. 重新启动应用。

SDK采集

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

  1. 配置应用,开启数据上报。
    1. 下载OpenTelemetryJavaAgent。

      wget https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/latest/download/opentelemetry-javaagent.jar
      
    2. 修改应用启动参数,设置javaagent和otel.service.name,示例如下:

      java -javaagent:<path/to/opentelemetry-javaagent.jar> \
           -Dotel.exporter.otlp.endpoint=apmplus-grpc.volces.com:443 \
           -Dotel.exporter.otlp.headers=X-ByteAPM-AppKey={appkey} \
           -Dotel.exporter.otlp.protocol=grpc \ 
           -Dotel.service.name=java-opentelemetry-otlp-instrumentation \
           -jar myapp.jar
      

      说明

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

  2. 重新启动应用。

通过Prometheus接入

Prometheus是一个最初由SoundCloud建设的开源监控和报警系统,目前已经是一个独立的开源项目,并且于2016年加入CNCF,成为CNCF的第二个项目。
您可以使用Prometheus满足对于自定义打点的需求,APMPlus目前通过OpenTelemetry的PrometheusReciever二次开发了,基于K8s和主机部署的数据采集器,您可以通过安装APMPlus数据采集器,实现对于PrometheusSDK打点的收集,并存储到APMPlus,用于满足后续看板和报警等相关诉求。

容器部署

如果您的应用是基于Kubernetes集群部署,请参见以下步骤安装APM数据采集器,接入APM服务端。

  1. 安装APMPlus OpenTelemetryCollector。
    进入接入中心,选择其他 > Prometheus > 容器部署,获取如下配置。需要区分您的开服区域(region)与网络接入方式(network),appkey是用户的唯一标识。

    kubectl apply -f "https://apmplus.volcbiz.com/server_warehouse/generate_assets/download/apmplus-opentelemetry-k8s/apmplus-opentelemetry-operator-v0.0.17.yaml?appkey={appkey}&promReplicas=1"
    

    说明

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

  2. 配置应用,开启数据打点。

  3. 在K8S场景下,支持通过pod annotation进行服务发现,通过配置注解实现服务发现。

    apiVersion: apps/v1
    kind: Deployment
    ...
    spec:
      ...
      template:
        metadata:
          annotations:
            prometheus.io/path: /metrics # your path
            prometheus.io/port: "30002"  # your port
            prometheus.io/scrape: "true"   
    
  4. 重新启动应用。

主机部署

如果您的应用是基于虚拟机或者物理机部署,请参见以下步骤安装APMPlus数据采集器,接入APMPlus服务端。

  1. 安装APMPlus OpenTelemetryCollector。
    进入接入中心,选择其他 > Prometheus > 主机部署,获取如下配置。需要区分您的开服区域(region)与网络接入方式(network),appkey是用户的唯一标识。

    bash -c "$(curl -L 'http://apmplus-dl-{region}.ivolces.com/server_warehouse/generate_assets/download/apmplus-opentelemetry-ecs/install-otel_0.0.9.sh?appkey={appkey}&network={network}')"
    

    说明

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

  2. 配置应用,开启数据打点。

  3. 在ECS场景下,支持通过文件进行服务发现,配置文件地址为/usr/local/apmplus-opentelemetry-collector/targets.json

    [
      {
        "targets": [
          "localhost:8888"
        ]
      }
    ]
    
  4. 重新启动应用。

通过Jaeger接入

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

JaegerAgent接入

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

  1. 配置应用,开启数据采集。
    通过UDP将Trace数据发送到Agent。具体请参见jaeger文档
  2. 配置Agent,修改上报端点。
    1. 修改jaeger-agent启动参数,配置示例如下:

      ./jaeger-agent --reporter.grpc.host-port=apmplus-grpc.volces.com:443  \
          --reporter.grpc.tls.enabled=true \
          --agent.tags=app_key={appkey}
      

      说明

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

  3. 重新启动应用。

SDK直接上报

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

  1. 配置应用,开启数据采集。

    1. 获取jaeger http_thrift上报端点。
      https://apmplus-{region}.volces.com/server_collect/third_party/jaeger/v2/{appkey}/api/trace
      
  2. 重新启动应用。

通过Zipkin接入

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

SDK直接上报

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

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

      https://apmplus-{region}.volces.com/server_collect/third_party/zipkin/v2/{appkey}/api/v2/spans
      
    2. 接入服务并配置上报点。具体请参见zipkin示例代码

  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_*"的指标。