Node.js應用接入Skywalking實現APM監控

神話發表於2021-12-03

Node.js應用接入Skywalking實現APM監控

1:筆者使用的windows,請先自行安裝啟動Skywalking下載地址:,下載完成,解壓啟動Skywalking後,訪問http://localhost:8080/(預設配置),到此安裝啟動 Skywalking 成功。

2:Node.js應用接入,Skywalking 官方提供新的庫來接入,原來的模組是 SkyAPM-nodejs ,官方要求 SkyWalking backend (OAP) 8.0+ and NodeJS >= 10. 支援已下框架和模組,更多資訊檢視 README.md

LibraryPlugin Name
built-in http and https modulehttp / https
Expressexpress
Axiosaxios
MySQLmysql
MySQLmysql2
PostgreSQLpg
pg-cursorpg-cursor
MongoDBmongodb
Mongoosemongoose
RabbitMQamqplib
Redisioredis

3:接入程式碼示例:完整程式碼地址

require('make-promises-safe')
const {default: agent} = require('skywalking-backend-js');
agent.start({              //引用
    serviceName: 'my-service-name',
    serviceInstance: 'my-service-instance-name',
    // collectorAddress: 'http://localhost:8080',
})

var express = require('express')
var app = express();
var port = process.env.PORT || 3001;

var routes = require('./api/routes');
routes(app);
app.listen(port, function() {
    console.log('Server started on port: ' + port);
});

4:
示例程式碼中定義了兩個路由:

  1. http://localhost:3001/about
  2. http://localhost:3001/distanc...

執行啟動,瀏覽器訪問你的服務路由,可多訪問幾遍會多一些資料 ,然後重新整理 http://localhost:8080/ ,資料可能會有延遲,稍等一些[PS:如果等了很久還是沒有資料,檢查下你檢視的時間區間是否選對]

正常如下:

1637912085(1).jpg

1637912201(1).jpg

從上圖可以看到:應用已接入到skywalking監控了,點選各個選項可檢視各個功能,鏈路追蹤,效能監控分析等等,redis,mysql,http 的鏈路都有,可以清楚的看到Node.js應用各個鏈路所花費的時間,可以更好的監控排查問題。skywalking更多的功能使用者自行探索了。

後續:websocket , kafka, rpc , GraphQL 等等Node.js探針是否支援還有待探究。
skywalking-backend-js 也在計劃 V0.4.0 版本了,目前已經看到合併了幾個PR了,是改Bug的內容和一些小細節,沒看到新功能。期待新功能。。。。

相關文章