原博客:http://www.52cik.com/2018/10/...Alinode是阿里云的Node.js性能平台的前身。以前是收费的,2018年初集成到阿里云后就完全免费了,我也是第一个上线测试使用的。群里有很多小伙伴,但是真正用的不多,因为大部分都不知道node是怎么跑的。说多了会哭,所以打算写一个简单的教程,让小白也分分钟上手alinode这个神器。基础知识我们先来了解一下alinode是什么。在这里我找到了一些信息。蒲凌达在阿里D2前端技术论坛-2015整合分享了alinode与Node应用性能管理(一)、alinode与Node应用性能管理(二)。还有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。嘘|bashsource~/.bashrc#加载配置使当前环境立即生效tnvmls-remotealinode#查看需要的版本tnvminstallalinode-v3.12.0#安装需要的版本tnvmusealinode-v3.12.0#使用需要的versionnpminstall@alicloud/agenthub-g#安装agenthub安装完alinode后,还安装了一个@alicloud/agenthub模块。官网介绍:agenthub是Node.js性能平台提供的代理命令程序,用于辅助您的Node应用性能数据上报和问题诊断。简单的说就是将alinode产生的cpu内存GC等数据上传到Node.js性能平台,让我们在平台上看到监控数据。好了,安装完成,接下来就是应用的创建和使用了。安装与使用(docker版)官网提供docker镜像dockerpullregistry.cn-hangzhou.aliyuncs.com/aliyun-node/alinode。但是一直被吐槽太大,这是什么东西,怎么这么大,其实官网上的节点图也是一样大的。但在9月份,他们提供了alpine版本,目前大小只有79.5MB,与官网node的alpine版本镜像非常接近。快来试试dockerpullregistry.cn-hangzhou.aliyuncs.com/aliyun-node/alinode:3-alpine。由于没有提供Dockerfile,很多朋友都心慌了,简直就是个黑盒子,所以一直处于观察状态。于是花了一点时间分析官网镜像,提取出Dockerfile模板,方便大家使用,可以随意修改。模板在这个alinodeDockerfile官网镜像模板里面,里面有详细的解析原理和提取Dockerfile的文章。想知道原理的可以看看。好吧,既然Dockerfile也在那里,没有理由不这样做。然后开始使用dockeralindoe,因为每个人使用docker的姿势都不一样,所以参考官网文档。如果你使用pm2,你也可以试试我修改的docker-alinode版本来创建应用程序和监控节点项目。tnvm和docker的安装和使用上面简单说了,但是具体怎么用都没有说。接下来正式开始接入alinode平台。要创建应用程序,请打开https://node.console.aliyun.com。如果您没有帐户,请注册一个帐户。反正是免费的。创建一个应用程序。复制AppID和AppSecret的值。在项目的根目录中创建配置。配置的名称是任何你喜欢的。这里我使用alinode.config.json来演示,编写配置如下。{"appid":"76675","secret":"0342cccd7ed8fc29a0f97e59f871d020533385f3"}ps:详细配置参考@alicloud/agenthubmodule我这里的目录结构如下:├──node_modules├──alinode.config。json├──app.js├──package.json└──yarn.locktnvmversion首先执行agenthubstartalinode.config.json命令启动上报工具。然后启动您的应用程序:ENABLE_NODE_LOG=YESnodeapp.js#直接启动#或ENABLE_NODE_LOG=YESpm2startpm2.js#PM2start#或任何其他方式,但添加ENABLE_NODE_LOG=YES以启用日志记录。之前尝试在pm2配置中写入ENABLE_NODE_LOG,结果无效,也没去研究为什么。如果有人知道原因,请告诉我。等待1分钟后,即可在平台看到监控数据。agenthub默认上报时间可以更改,请根据官网文档进行修改。docker版本可以省略alinode.config.json配置文件的创建,直接使用docker版本配置参数。官方镜像dockerrun-d\-p8000:8000\-w/app\-v$PWD:/app\-e"APP_ID=76675"\-e"APP_SECRET=0342cccd7ed8fc29a0f97e59f871d020533385f3"\-hmy-alinode\--namemy-alinode\registry.cn-hangzhou.aliyuncs.com/aliyun-node/alinode:3-alpine\nodeapp.js使用我打包好的镜像,内置pm2dockerrun-d\-p8000:8000\-v$PWD:/app\-e"APP_ID=76675"\-e"APP_SECRET=0342cccd7ed8fc29a0f97e59f871d020533385f3"\-hmy-alinode\--namemy-alinode\toomee/alinode:3-alpine\pm2-runtimestartapp.jsps:在docker中使用pm2-runtime而不是pm2命令。ps:如果你的pm2配置是ecosystem.config.js,最后一行可以省略。查看监控数据后,启动后等待1分钟,即可看到监控数据。如图,已经有数据了。先做压力测试再看数据。点击实例面板可以看到进程的基本信息。这里只有一个过程。如果您打开多个进程,它们将全部显示在这里。下面的进程指标分布好像显示了所有node进程,可以看到也显示了agenthub进程。由于测试项目刚刚开始,没有数据,所以我用我们的在线项目截了一张图。可以看到内存cpu有两条曲线,一条是系统使用率,一条是节点使用率。还有异常日志、Trace和模块依赖关系。你会发现没有数据。按照agencythub官网配置后,就可以看到数据了。慢速HTTP日志是您希望与请求后端接口一起使用的那些较慢请求的日志。有了这些数据,就可以帮助我们优化应用,快速定位问题。ProcessData页面右下角有CrawlPerformanceData区域,用于爬取性能数据。这些工具可以帮助我们解决诸如莫名其妙的高cpu和内存泄漏等问题。这里就不介绍了,有时间再写几篇,或者看看官博上的例子。总结至此,alinode的基本使用就差不多了。就算高级功能暂时用不上,用alinode当监视器也不错。在告警面板中配置告警规则非常方便,比如cpuhigh、loadhigh然后告警。支持钉钉机器人推送。这次介绍了如何使用alinode的tnvm和docker版本。目的是为了让更多人使用安利,为了您项目的健康,为了alinode和node社区的发展。如果哪天node官网内置了alinode的功能,并提供了web监控平台的源码,那你就可以搭建自己的监控环境了。在alindoe开源之后,这一天应该不会太远了。
