本文介绍除了Java、Go、Python之外的其他语言开发的应用,通过开源产品接入APMPlus。
OpenTelemetry是CNCF的一个可观测性项目,旨在提供可观测性领域的标准化方案,解决观测数据的数据模型、采集、处理、导出等的标准化问题,提供与三方vendor无关的服务。接入APMPlus后,您将获得RED指标生成能力、Trace多维检索、单链路检索、拓扑生成等多项APMPlus能力。
说明
如果您需要隔离生产和测试数据,请参见将生产和测试数据隔离。
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-protocal> \ -Dotel.service.name=java-opentelemetry-otlp-instrumentation \ -jar myapp.jar
配置collector,修改上报端点。
进入接入中心,选择其他 > OpenTelemetry > Collector,获取如下配置。需要区分您的开服区域(region)与网络接入方式(network),appkey是用户的唯一标识。
exporters: otlp: endpoint: apmplus-{region}.volces.com:4317 compression: gzip headers: X-ByteAPM-AppKey: {appkey} tls: insecure: true
说明
完整配置命令请到接入中心查看,详情请参见如何使用接入中心?。
重新启动应用。
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 \ -jar myapp.jar
说明
完整配置命令请到接入中心查看,详情请参见如何使用接入中心?。
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进行服务发现,通过配置注解实现服务发现。
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"
重新启动应用。
如果您的应用是基于虚拟机或者物理机部署,请参见以下步骤安装APMPlus数据采集器,接入APMPlus服务端。
安装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}')"
说明
完整安装命令请到接入中心查看,详情请参见如何使用接入中心?。
配置应用,开启数据打点。
在ECS场景下,支持通过文件进行服务发现,配置文件地址为/usr/local/apmplus-opentelemetry-collector/targets.json
。
[ { "targets": [ "localhost:8888" ] } ]
重新启动应用。
Jaeger是一款由Uber研发的开源分布式链路追踪系统。
对于已经集成Jaeger的已有系统,可以将已有的通过Jaeger进行配置的应用的Trace数据上报到APMPlus,完成整体的全链路监控能力。接入APMPlus后,您将获得RED指标生成能力、Trace多维检索、单链路检索、拓扑生成等多项APMPlus能力。
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服务端。
配置应用,开启数据采集。
https://apmplus-{region}.volces.com/server_collect/third_party/jaeger/v2/{appkey}/api/trace
重新启动应用。
Zipkin是一款由Twitter开源的分布式链路追踪系统,通过zipkin可以帮助用户实现对trace数据的收集。
对于已经集成Zipkin的已有系统,可以将已有的通过Zipkin进行配置的应用的Trace数据上报到APMPlus,完成整体的全链路监控能力。接入APMPlus后,您将获得RED指标生成能力、Trace多维检索、单链路检索、拓扑生成等多项APMPlus能力。
SDK采集数据,直接上报到APMPlus服务端。
获取zipkin上报点。
https://apmplus-{region}.volces.com/server_collect/third_party/zipkin/v2/{appkey}/api/v2/spans
接入服务并配置上报点。具体请参见zipkin示例代码。
SkyWalking Agent采集数据,直接上报到APMPlus服务端。当前支持SkyWalking Trace、Meter、Log、JVM、CLR数据接入。
获取SkyWalking grpc上报端点。
skywalking.collector.backend_service=apmplus-{region}.ivolces.com:4317
获取authentication用户标识。
skywalking.agent.authentication={appkey}
配置应用,开启数据上报。具体请参见SkyWalking文档。
重新启动应用。
验证数据上报。