本文介绍除了Java、Go、Python之外的其他语言开发的应用,通过开源产品接入APMPlus。
通过OpenTelemetry接入
OpenTelemetry是CNCF的一个可观测性项目,旨在提供可观测性领域的标准化方案,解决观测数据的数据模型、采集、处理、导出等的标准化问题,提供与三方vendor无关的服务。接入APMPlus后,您将获得RED指标生成能力、Trace多维检索、单链路检索、拓扑生成等多项APMPlus能力。
使用限制
- 其中,APMPlus采用Prometheus作为OpenTelemetry Metrics的存储,支持promql对metrics进行查询,具体应用请参见自定义看板和报警管理。
- OpenTelemetry Metrics转换为Prometheus Metrics时,存在一定限制:
- 不支持聚合方式为delta的数据。请不要修改SDK侧的默认聚合配置,保证SDK侧数据的聚合方式为cumulative。
- 工作区拥有独立的数据上报凭证,如需使用工作区进行数据管理和数据隔离,请确保 apmplus-opentelemetry-collector 组件已经升级至 v3.1.0 及以上版本。
Collector采集
SDK将数据上报到Collector,Collector采集数据上报到APM服务端。
- 下载OpenTelemetryJavaAgent。
wget https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/latest/download/opentelemetry-javaagent.jar
- 修改应用启动参数,设置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-protocol> \
-Dotel.service.name=java-opentelemetry-otlp-instrumentation \
- 进入接入中心,选择其他 > OpenTelemetry > Collector,获取如下配置。需要区分您的开服区域(region)与网络接入方式(network),appkey是用户的唯一标识。
endpoint: apmplus-{region}.volces.com:4317
X-ByteAPM-AppKey: {appkey}
SDK采集
SDK采集数据,直接上报到APM服务端。
- 下载OpenTelemetryJavaAgent。
wget https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/latest/download/opentelemetry-javaagent.jar
- 修改应用启动参数,设置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 \
通过Prometheus接入
Prometheus是一个最初由SoundCloud建设的开源监控和报警系统,目前已经是一个独立的开源项目,并且于2016年加入CNCF,成为CNCF的第二个项目。
您可以使用Prometheus满足对于自定义打点的需求,APMPlus目前通过OpenTelemetry的PrometheusReciever二次开发了,基于K8s和主机部署的数据采集器,您可以通过安装APMPlus数据采集器,实现对于PrometheusSDK打点的收集,并存储到APMPlus,用于满足后续看板和报警等相关诉求。
容器部署
如果您的应用是基于Kubernetes集群部署,请参见以下步骤安装APM数据采集器,接入APM服务端。
- 安装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"
- 在K8S场景下,支持通过pod annotation进行服务发现,通过配置注解实现服务发现。
prometheus.io/path: /metrics
prometheus.io/port: "30002"
prometheus.io/scrape: "true"
主机部署
如果您的应用是基于虚拟机或者物理机部署,请参见以下步骤安装APMPlus数据采集器,接入APMPlus服务端。
- 安装APMPlus OpenTelemetryCollector。
- 进入接入中心,选择其他 > Prometheus > 主机部署,获取如下配置。需要区分您的开服区域(region),appkey是用户的唯一标识。
bash -c "$(curl -L 'https://apmplus-dl-{region}.volces.com/server_warehouse/generate_assets/download/apmplus-opentelemetry-ecs/install-otel_0.0.9.sh?appkey={appkey}&network=public')"
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=private')"
- 在ECS场景下,支持通过文件进行服务发现,配置文件地址为/usr/local/apmplus-opentelemetry-collector/targets.json。
通过Jaeger接入
Jaeger是一款由Uber研发的开源分布式链路追踪系统。
对于已经集成Jaeger的已有系统,可以将已有的通过Jaeger进行配置的应用的Trace数据上报到APMPlus,完成整体的全链路监控能力。接入APMPlus后,您将获得RED指标生成能力、Trace多维检索、单链路检索、拓扑生成等多项APMPlus能力。
JaegerAgent接入
SDK将数据上报到Agent,Agent将数据上报到APMPlus服务端。
- 修改jaeger-agent启动参数,配置示例如下:
./jaeger-agent --reporter.grpc.host-port=apmplus-grpc.volces.com:443 \
--reporter.grpc.tls.enabled=true \
--agent.tags=app_key={appkey}
SDK采集数据,直接上报到APMPlus服务端。
- 获取jaeger http_thrift上报端点。
https://apmplus-{region}.volces.com/server_collect/third_party/jaeger/v2/{appkey}/api/trace
通过Zipkin接入
Zipkin是一款由Twitter开源的分布式链路追踪系统,通过zipkin可以帮助用户实现对trace数据的收集。
对于已经集成Zipkin的已有系统,可以将已有的通过Zipkin进行配置的应用的Trace数据上报到APMPlus,完成整体的全链路监控能力。接入APMPlus后,您将获得RED指标生成能力、Trace多维检索、单链路检索、拓扑生成等多项APMPlus能力。
SDK采集数据,直接上报到APMPlus服务端。
https://apmplus-{region}.volces.com/server_collect/third_party/zipkin/v2/{appkey}/api/v2/spans
通过SkyWalking接入
SkyWalking Agent采集数据,直接上报到APMPlus服务端。当前支持SkyWalking Trace、Meter、Log、JVM、CLR数据接入。
skywalking.collector.backend_service=apmplus-{region}.ivolces.com:4317
skywalking.agent.authentication={appkey}
- Trace接入后,可以查看拓扑图、Trace分析、服务详情等数据。
- JVM、CLR接入后,可以在自定义指标中查看形如"skywalking_jvm_*"和"skywalking_clr_*"的指标。