以OpenTelemetry方式接入
更新時間 2024-11-12 10:34:38
最近更新時間: 2024-11-12 10:34:38
分享文章
在監控Node.js應用之前,您需要通過客戶端將應用數據上報至APM服務端。本文介紹了如何通過OpenTelemetry將Node.js Express應用接入APM。
前提條件
完成vpce接入。
接入步驟
1.引入相關依賴。
npm?install?--save?@opentelemetry/api
npm?install?--save?@opentelemetry/auto-instrumentations-node
npm?install?--save?@opentelemetry/sdk-node
2.查看接入點信息。
應用列表的接入指引會根據您所在資源池提供“通過 HTTP 上報數據”和“通過 gRPC 上報數據”的ENDPOINT(天翼云vpc網絡接入點)、鑒權TOKEN信息。
3.server 端上報示例。
- 請將url和token替換成第2步中獲取的接入點信息。
編寫以下 server 端代碼,保存為 nodejs-demo-server-otel.js 文件。
const?express?=?require('express')
const?app?=?express()
const?port?=?3000
app.get('/',?(req,?res)?=>?{
??console.log('received?request')
??res.send('Hello?World!')
})
app.listen(port,?()?=>?{
??console.log(`server?running?at?//localhost:${port}`)
})
運行 server 端代碼(Mac/Linux 系統)。
export?OTEL_TRACES_EXPORTER=otlp
export?OTEL_EXPORTER_OTLP_ENDPOINT=<url>export?OTEL_EXPORTER_OTLP_PROTOCOL=grpc
export?OTEL_EXPORTER_OTLP_HEADERS="x-ctg-authorization=<token>"
export?OTEL_SERVICE_NAME=nodejs-demo-server-otel
export?NODE_OPTIONS="--require?@opentelemetry/auto-instrumentations-node/register"
node?./nodejs-demo-server-otel.js
運行 server 端代碼(Windows 系統、PowerShell)。
$env:OTEL_TRACES_EXPORTER="otlp"
$env:OTEL_EXPORTER_OTLP_ENDPOINT="<url>"
$env:OTEL_EXPORTER_OTLP_PROTOCOL="grpc"
$env:OTEL_EXPORTER_OTLP_HEADERS="x-ctg-authorization=<token>"
$env:OTEL_SERVICE_NAME="nodejs-demo-server-otel"
$env:NODE_OPTIONS="--require?@opentelemetry/auto-instrumentations-node/register"
node?./nodejs-demo-server-otel.js
4.client端上報示例。
編寫以下 client 端代碼,保存為 nodejs-demo-client-otel.js 文件。
import('node-fetch').then(async?({?default:?fetch?})?=>?{
??const?response?=?await?fetch('//localhost:3000/')
??const?data?=?await?response.text()
??console.log(data)
})
運行 client 端代碼。
node?./nodejs-demo-client-otel.js
5.通過以上步驟即可在控制臺查看接入的Node.js應用。