原文博客: http://www.52cik.com/2018/10/...alinode 是阿里云产品 Node.js 性能平台 的前身。以前是收费项目,2018年初集成到阿里云后就完全免费了,我也是第一时间接入测试并上线使用。在群里安利了不少小伙伴,但真正使用的不是很多,因为大部分都不知道 node 是怎么跑起来的。说多了都是泪,所以打算写个简单教程,让小白也可以分分钟上手 alinode 这种神兵利器。基础知识先来了解下 alinode 是个啥东西吧,这里我找了些资料。有朴灵大大在 阿里D2前端技术论坛——2015融合 上的分享 alinode与Node应用性能管理(1)、alinode与Node应用性能管理(2)。还有 Node.js 性能平台官方文档 以及 云栖社区 Node.js 性能平台官方博客。好了,文档比较多,如果你懒的看,那我简单一句话帮你概括下。alinode 就是朴灵大大修改了 node 源码,可以将 cpu、内存、GC 等数据导出的 node 版本。目前没有开源,不过他们准备尽快开源。由于没有开源,所以一些小伙伴不放心,生怕有后门,泄露公司机密。其实完全没必要担心,这种事情简单抓包就可以看出有没有后门了。而且我也有幸在机缘巧合下看到了 alindoe 源码,对比了官方源码后可以很负责任的告诉你完全没有后门。如何使用如果你会在线上安装 node 并且启动你的应用,那么你就会使用。原理是一样的,剩下的,不管你怎么启动项目,直接启动,用 pm2 或者其他方法,都无所谓。安装使用 (tnvm 版本)官网推荐使用 tnvm 安装,就是 nvm 的淘宝镜像版本,并且加入了 alinode 而已。# 安装版本管理工具 tnvm,安装过程出错参考:https://github.com/aliyun-node/tnvmwget -O- https://raw.githubusercontent.com/aliyun-node/tnvm/master/install.sh | bashsource ~/.bashrc # 加载配置,使当前环境立即生效tnvm ls-remote alinode # 查看需要的版本tnvm install alinode-v3.12.0 # 安装需要的版本tnvm use alinode-v3.12.0 # 使用需要的版本npm install @alicloud/agenthub -g # 安装 agenthub安装好 alinode 后,还安装了一个 @alicloud/agenthub 模块。官网介绍:agenthub 是由 Node.js 性能平台提供的 agent 命令程序,用于协助您的 Node 应用性能数据上报和问题诊断。简单说就是将 alinode 生成的 cpu 内存 GC 等数据上传到 Node.js 性能平台 上,这样我们就可以在平台上看到监控数据了。好了到此安装完成,然后就是创建应用和使用了。安装使用 (docker 版本)官网提供了 docker 镜像 docker pull registry.cn-hangzhou.aliyuncs.com/aliyun-node/alinode。但也一直被吐槽太TM大了,都是些啥啊,咋就这么大,,其实官网 node 镜像也一样大。但在9月份的时候,他们提供了 alpine 版本,截止目前才 79.5MB 大小,非常接近官网 node 的 alpine 版本镜像。快来试试吧 docker pull registry.cn-hangzhou.aliyuncs.com/aliyun-node/alinode:3-alpine。由于没有提供 Dockerfile,不少小伙伴也是心慌慌,简直就是个黑盒,所以也是一直观望状态。于是我花了一点时间分析了官网镜像,并提取了 Dockerfile 模板,方便大家使用,而且可以随心所欲的魔改。模板在这 alinode Dockerfile 官网镜像模板,里面有详细分析原理和提取 Dockerfile 的文章,想知道原理的可以看看。好了,现在 Dockerfile 也有了,没有理由不用了吧。那么开始使用 docker alindoe,由于大家使用 docker 的姿势不同,所以还是参考官网文档。如果你使用 pm2 的,也可以试试我魔改过的版本 docker-alinode创建应用,监控 node 项目上面简单说了 tnvm 和 docker 的安装使用方法,但还没说具体怎么使用。接下来正式开始接入 alinode 平台了。创建应用打开 https://node.console.aliyun.com,没有账号的,去注册个账号,反正免费的。创建应用。复制 App ID 和 App Secret 的值。在你的项目根目录创建一个配置,配置名随便,我这里用 alinode.config.json 演示,写入如下配置。{ “appid”: “76675”, “secret”: “0342cccd7ed8fc29a0f97e59f871d020533385f3”}ps: 详细配置,请参阅 @alicloud/agenthub 模块我这里的目录结构如下:├── node_modules├── alinode.config.json├── app.js├── package.json└── yarn.locktnvm 版本使用先执行 agenthub start alinode.config.json 命令,开启上报工具。然后启动你的应用:ENABLE_NODE_LOG=YES node app.js # 直接启动# 或者ENABLE_NODE_LOG=YES pm2 start pm2.js # PM2 启动# 或者其他任何方式,但要加上 ENABLE_NODE_LOG=YES 开启日志。我之前尝试将 ENABLE_NODE_LOG 写到 pm2 配置中,结果无效,然后也没去研究为什么,如果有大佬知道原因还请告知。然后等待1分钟后,即可在平台上看到监控数据了。agenthub 默认上报时间是可以改的,自己根据官网文档修改吧。docekr 版本使用docker 版本可以省略创建 alinode.config.json 配置文件,直接参数配置。官方镜像docker run -d \ -p 8000:8000 \ -w /app \ -v $PWD:/app \ -e “APP_ID=76675” \ -e “APP_SECRET=0342cccd7ed8fc29a0f97e59f871d020533385f3” \ -h my-alinode \ –name my-alinode \ registry.cn-hangzhou.aliyuncs.com/aliyun-node/alinode:3-alpine \ node app.js使用我封装的镜像,内置 pm2docker run -d \ -p 8000:8000 \ -v $PWD:/app \ -e “APP_ID=76675” \ -e “APP_SECRET=0342cccd7ed8fc29a0f97e59f871d020533385f3” \ -h my-alinode \ –name my-alinode \ toomee/alinode:3-alpine \ pm2-runtime start app.jsps: docker 中使用 pm2-runtime 而不是 pm2 命令。ps: 如果你的 pm2 配置是 ecosystem.config.js,那么可以省略最后一行。查看监控数据启动后等待1分钟,即可看到监控数据。如图,已经有数据了。我们压测一下,然后看看数据。点击实例面板,可以看到进程基本信息,这里只有一个进程,如果你开了多进程,都会在这里显示的。下面的 进程指标分布中 好像显示所有 node 进程,可以看到他把 agenthub 进程也显示出来了。由于测试项目刚启动没啥数据,所以用我们线上项目截了张图。可以看到 内存 cpu 会有两条曲线,一条是系统占用量,一条是 node 占用量。还有 异常日志、Trace、模块依赖 你会发现没数据,根据 agenthub 官网配置配置好后,即可看到数据。慢 HTTP 日志 是访问你要用和你请求后台接口的那些较慢的请求记录。有了这些数据,就可以帮助我们优化应用以及快速定位到问题了。抓取性能数据在 进程数据 页面右下角有个 抓取性能数据 区域,这些就是帮助我们排查 cpu 莫名标高,内存泄漏 等问题的工具。这里就不介绍了,等有空的时候单独写几篇,或者看 官方博客 上的例子。小结至此 alinode 基本使用算是差不多了。哪怕高级功能暂时不会用,那用 alinode 来当个监控也不错啊,在报警面板中配置报警规则,比如 cpu 飚高,load 飚高后报警,支持钉钉机器人推送,非常方便。这次介绍了 alinode 的 tnvm 和 docker 版本的使用方法。目的是安利更多的人来使用,为了你们的项目健康,也为了 alinode 和 node 社区的发展。如果有一天 node 官网内置了 alinode 的功能,并提供的 web监控平台 源码,那就可以搭建属于自己的监控环境了。等到 alindoe 开源后,这一天应该不会远的。