Nodejs应用在不同场景下有不同的接入方式,本文介绍Nodejs应用通过OpenTelemetry接入的详细操作,接入后可以实现自动收集Trace信息、自动生成Metric指标、以及调用链检索、日志检索等功能。
OpenTelemetry是CNCF的一个可观测性项目,旨在提供可观测性领域的标准化方案,解决观测数据的数据模型、采集、处理、导出等的标准化问题,提供与三方vendor无关的服务。
如果您的应用已经接入了OpenTelemetry的SDK,APMPlus服务端可以接收OpenTelemetry上报的数据。接入APMPlus后,您将获得RED指标生成能力、Trace多维检索、单链路检索、拓扑生成等多项能力。
说明
如果您需要隔离生产和测试数据,请参见将生产和测试数据隔离。
APMPlus OpenTelemetry Collector是APMPlus基于OpenTelemetry Collector二次开发的数据采集器,遵守Apache2.0协议,支持采集OpenTelemetry监控数据,同时支持采集Prometheus指标、应用监控数据和K8s资源指标。
安装APMPlus OpenTelemetry Collector。
进入接入中心,选择Nodejs语言 > OpenTelemetry > 自动接入,获取如下安装命令,需要区分您的开服区域(region)与网络接入方式(network),appkey是用户的唯一标识。
kubectl apply -f "http://apmplus-dl-{region}.ivolces.com/server_warehouse/generate_assets/download/apmplus-opentelemetry-k8s/apmplus-opentelemetry-operator-v0.0.17.yaml?appkey={appkey}&network={network}&promReplicas=1"
您可以通过修改url中promReplicas的值来扩展prom副本数。
说明
完整安装命令请到接入中心查看,详情请参见如何使用接入中心?。
在服务的k8s deployment配置中增加指定annotation。
instrumentation.apmplus.volcengine.com/inject-nodejs: 'true'
代码示例如下所示:
apiVersion: apps/v1 kind: Deployment metadata: name: node-demo labels: app: node-demo spec: replicas: 1 selector: matchLabels: app: node-demo template: metadata: labels: app: node-demo annotations: instrumentation.apmplus.volcengine.com/inject-nodejs: 'true' spec: containers: - name: node-demo image: node-demo:latest imagePullPolicy: Always env: - name: CONTAINER_RUNTIME value: "k8s"
重新启动应用。