以Jeager方式接入
更新時間 2024-11-12 10:34:39
最近更新時間: 2024-11-12 10:34:39
分享文章
在監控Node.js應用之前,您需要通過客戶端將應用數據上報至APM服務端。本文介紹了如何通過Jaeger將Node.js應用接入APM。
前提條件
完成vpce接入。
接入步驟
1.引入相關依賴。
2.查看接入點信息。
應用列表的接入指引會根據您所在資源池提供“通過 HTTP 上報數據”和“通過 gRPC 上報數據”的ENDPOINT(天翼云vpc網絡接入點)、鑒權TOKEN信息。
3.server 端上報示例。
- 請將url和token替換成第2步中獲取的接入點信息。
編寫以下 server 端代碼,保存為 nodejs-demo-server-jaeger.js 文件
//?nodejs-demo-server-jaeger.js
const?initTracer?=?require('jaeger-client').initTracer
const?config?=?{
??serviceName:?'nodejs-demo-server-jaeger',
??sampler:?{
????type:?'const',
????param:?1,
??},
??reporter:?{
????logSpans:?true,
????collectorEndpoint:?'<url>',
????username:?'apm',
????password:?'<token>',
??},
}
const?tracer?=?initTracer(config)
const?express?=?require('express')
const?app?=?express()
const?port?=?3000
const?{?opentracing?}?=?require('jaeger-client')
app.all('*',?(req,?res,?next)?=>?{
??req.span?=?tracer.startSpan('http_server',?{
????tags:?{
??????[opentracing.Tags.HTTP_METHOD]:?req.method,
??????[opentracing.Tags.HTTP_URL]:?req.url,
??????[opentracing.Tags.SPAN_KIND]:?opentracing.Tags.SPAN_KIND_RPC_SERVER,
????},
??})
??next()
})
app.get('/',?(req,?res)?=>?{
??console.log('received?request')
??const?span?=?req.span
??span.log({
????event:?'timestamp',
????value:?Date.now(),
??})
??span.finish()
??res.send('Hello?World!')
})
app.listen(port,?()?=>?{
??console.log(`server?running?at?//localhost:${port}`)
})
運行 server 端代碼。
4.client端上報示例。
編寫以下 client 端代碼,保存為 nodejs-demo-client-jaeger.js 文件
//?nodejs-demo-client-jaeger.js
import('node-fetch').then(async?({?default:?fetch?})?=>?{
??const?response?=?await?fetch('//localhost:3000/')
??const?data?=?await?response.text()
??console.log(data)
})
運行 client 端代碼。
5.通過以上步驟即可在控制臺查看接入的Node.js應用。