Node.js应用接入Skywalking实现APM监控

Node.js应用接入Skywalking实现APM监控

1:笔者使用的windows,请先自行安装启动Skywalking下载地址:,下载完成,解压启动Skywalking后,访问http://localhost:8080/(默认配置),到此安装启动 Skywalking 成功。

2:Node.js应用接入,Skywalking 官方提供新的库来接入,原来的模块是 SkyAPM-nodejs 已经不用了,使用新的库 skywalking-backend-js ,官方要求 SkyWalking backend (OAP) 8.0+ and NodeJS >= 10. 支持已下框架和模块,更多信息查看 README.md

Library Plugin Name
built-in http and https module http / https
Express express
Axios axios
MySQL mysql
MySQL mysql2
PostgreSQL pg
pg-cursor pg-cursor
MongoDB mongodb
Mongoose mongoose
RabbitMQ amqplib
Redis ioredis

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/distance/:zipcode1/:zipcode2

运行启动,浏览器访问你的服务路由,可多访问几遍会多一些数据 ,然后刷新 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的内容和一些小细节,没看到新功能。期待新功能。。。。

Guess you like

Origin juejin.im/post/7034785043302072328