alinode 新手村生存指南

原文博客: http://www.52cik.com/2018/10/...

alinode 是阿里云产品 Node.js 性能平台 的前身。
之前是收费项目,2018年初集成到阿里云后就彻底免费了,我也是第一时间接入测试并上线使用。
在群里安利了很多小伙伴,但真正使用的不是不少,由于大部分都不知道 node 是怎么跑起来的。
说多了都是泪,因此打算写个简单教程,让小白也能够分分钟上手 alinode 这种神兵利器。html

基础知识

先来了解下 alinode 是个啥东西吧,这里我找了些资料。前端

有朴灵大大在 阿里D2前端技术论坛——2015融合 上的分享 alinode与Node应用性能管理(1)alinode与Node应用性能管理(2)node

还有 Node.js 性能平台官方文档 以及 云栖社区 Node.js 性能平台官方博客git

好了,文档比较多,若是你懒的看,那我简单一句话帮你归纳下。
alinode 是朴灵大大和他的小伙伴修改了 node 源码,能够将 cpu、内存、GC 等数据导出的 node 版本。
目前没有开源,不过他们准备尽快开源。github

因为没有开源,因此一些小伙伴不放心,生怕有后门,泄露公司机密。
其实彻底不必担忧,这种事情简单抓包就能够看出有没有后门了。
并且我也有幸在机缘巧合下看到了 alindoe 源码,对比了官方源码后能够很负责任的告诉你彻底没有后门。web

如何使用

若是你会在线上安装 node 而且启动你的应用,那么你就会使用。
原理是同样的,剩下的,无论你怎么启动项目,直接启动,用 pm2 或者其余方法,都无所谓。docker

安装使用 (tnvm 版本)

官网推荐使用 tnvm 安装,就是 nvm 的淘宝镜像版本,而且加入了 alinode 而已。npm

# 安装版本管理工具 tnvm,安装过程出错参考:https://github.com/aliyun-node/tnvm
wget -O- https://raw.githubusercontent.com/aliyun-node/tnvm/master/install.sh | bash

source ~/.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 应用性能数据上报和问题诊断。json

简单说就是将 alinode 生成的 cpu 内存 GC 等数据上传到 Node.js 性能平台 上,这样咱们就能够在平台上看到监控数据了。bash

好了到此安装完成,而后就是建立应用和使用了。

安装使用 (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.lock

tnvm 版本使用

先执行 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

使用我封装的镜像,内置 pm2

docker 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.js

ps: 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 开源后,这一天应该不会远的。

相关文章
相关标签/搜索