精华 [step by step]部署alinode
发布于 2 年前 作者 JacksonTian 6989 次浏览 最后一次编辑是 1 年前 来自 分享

alinode使用初始化步骤较为复杂,没有办法一行代码完成。本文分享下如何一步一步部署alinode。

申请试用资格

alinode的主页http://alinode.aliyun.com/提供公测试用申请,但用户数量是按天开放的,所以如果抢不到试用名额,凌晨时候申请一定能成功。目前alinode还没有收费,趁这个机会能够体验下alinode高级功能。

创建应用

申请到试用资格的用户可以在控制台http://alinode.aliyun.com/dashboard创建一个逻辑上的应用,每个用户可以创建多个应用。每个应用可以映射到多台服务器上,也就是说一个应用可以连接多个agentx。 创建应用后,可以拿到应用的appid和secret。点击应用设置可以看到。如图:

屏幕快照 2015-10-15 上午11.36.21.png

appid和secret: untitled1.png 这两个信息都是极度机密,打死也不要告诉他人。

安装agentx

agentx是alinode用来做命令执行和数据监控的agent工具。与某些agent不同的是,agentx是完全开源的,每个用户都能查看每行代码。另外agentx能执行的命令是有限的,这些命令也是完全开源的。

安装命令:

$ npm install agentx -g

执行agentx -v可以查看版本号。 agentx需要与alinode的服务相连,这里需要一些特定的配置。配置文件是一个json格式的文件,以下为示例:

{
  "server": "120.55.151.247:8080", // alinode服务的地址,请不要修改
  "appid": "您的应用ID", // 上文创建的应用的app id
  "secret": "您的应用Secret", // 上文创建的应用的app secret
  "heartbeatInterval": 60, // 不用修改
  "reconnectDelay": 10, // 不用修改
  "reportInterval": 60, // 不用修改
  "logdir": "alinode生产的日志放置的路径,与NODE_LOG_DIR路径保持一致。如:/tmp/",  // 如果不知道,就用 /tmp
  "cmddir": "命令集路径,绝对路径,如:/Users/jacksontian/commands", // 命令集路径
  "error_log": [
    "异常日志路径,如:/root/.logs/error.#YYYY#-#MM#-#DD#.log"
  ] // 可以配置一个异常日志的路径,其中#YYYY#、#MM#、#DD#是通配符,自动解释为当前时间的数据。如果不了解,将这里设置为空数组
}

将上述示例的注释清理掉后,确保语法没有错误,保存为config.json,或者以.json结尾的任意文件名。其中cmddir的路径可以设置为%HOME%/commands。

安装命令集

命令集位于:https://github.com/aliyun-node/commands,您可以通过clone,或者直接下载压缩包的方式将命令集安装到服务器上的cmddir路径下即可。注意请确保cmddir目录下就是脚本文件,而不是目录。

运行agentx

设置好配置和安装好命令集后,执行:

$ nohup agentx /path/to/your/config.json &

注意nohup和最后的&不能丢,表示长期运行这个命令。

完成上述操作后,1分钟后即可在你的应用页面查看到一些数据。比如:

屏幕快照 2015-10-15 上午11.57.27.png

绿色的小灯表示agentx正常连接中。

当前正在执行的Node进程列表:
屏幕快照 2015-08-05 下午1.09.13.png 一些系统级的数据: 屏幕快照 2015-09-30 下午4.28.41.png

安装alinode运行时

安装alinode运行时通过tnvm安装即可,速度是分钟级。

安装tnvm

wget -qO- https://raw.githubusercontent.com/aliyun-node/tnvm/master/install.sh | bash

完成安装后,您需要将tnvm添加为命令行程序。根据平台的不同,可能是~/.bashrc,~/.profile或~/.zshrc等,请根据提示进行手工操作。如:

source ~/.bashrc

完成上述操作后,tnvm就成为当前shell环境中的命令了。

选择alinode版本

执行tnvm ls-remote alinode查看所有的alinode版本。 执行下面的命令安装一个版本: tnvm install alinode-vx.x.x 执行下面的命令使用一个版本: tnvm use alinode-vx.x.x

alinode运行时是完全兼容社区node版本的运行时,无需修改任何代码才能使用。

运行alinode

通过tnvm安装alinode后,即可用alinode来启动你的应用。在设置以下环境变量会启用alinode的特别功能:

export ENABLE_NODE_LOG=YES # 开启alinode的node log功能,使得agentx可以监控虚拟机级别的性能数据
export NODE_LOG_DIR=/tmp/ # 指定生成的node log路径。可选。如果设置的话,请保持与agentx配置中的logdir值一致。

然后就可以像平常运行node一样启动你的应用:node xxx.js

总结

完成以上设置后,一分钟后就可以从alinode的dashboard看到更为细致的进程级别性能数据。如: 屏幕快照 2015-10-15 下午12.14.52.png 屏幕快照 2015-10-15 下午12.15.31.png

62 回复

我看图多就加精了…应该是干货…

那么多人为内存泄漏,性能问题,竟然没人关注这货? 自豪地采用 CNodeJS ionic

值得一试 自豪地采用 CNodeJS ionic

有需要的同学请联系我

正好需要,感谢朴大大

等了好久啦,谢谢瓢大大

@DoubleSpout 用上了吗。

@JacksonTian 新上的项目打算使用,还没用上,到时候有问题找你哈

@DoubleSpout 旧项目也可以用的。又不用改任何代码。

嗯哼,我们正在改版。人肉置顶

@fanghongjia 不要光mark呀

不错,用上了,哈哈

话说为嘛会自动停止了呢

@JacksonTian看日志是报错 2015-10-28 07:34:29.929 Error: Error: ENOENT: no such file or directory, stat '/data/logs/error/error.2015-10-28.log’ 然后就退出了 /data/logs/error目录是存在的。

@thesadboy 不是这里退出的吧。这里没有这个文件是能容错的。

@JacksonTian 我在nohup.out文件里看到的全是这个错误消息,o(╯□╰)o,可能是出现了错误,写日志的时候报错。而且在对应的文件夹里的确木有找到日志文件

@thesadboy 这是因为没有设置 ENABLE_NODE_LOG=YES这个环境变量

看错了,你把错误信息, agentx -v node -p 'process.alinode’ 结果贴一下? 或者加旺旺群 1406236180

@thesadboy 错误日志我们是打印了出来的。但是不会退出。

@zhangzifa

host: nickzhang.localdomain 2015-10-30 11:24:59.155

2015-10-30 11:25:59.216 Error: Error: ENOENT: no such file or directory, stat '/data/logs/error/error.2015-10-30.log’ at Error (native) pid: 17149 host: nickzhang.localdomain 2015-10-30 11:25:59.216

2015-10-30 14:18:07.947 Error: Error: ENOENT: no such file or directory, stat '/data/logs/error/error.2015-10-30.log’ at Error (native) pid: 17149 host: nickzhang.localdomain 2015-10-30 14:18:07.947

Another client already connected. process exit~~~~~ [Fri Oct 30 2015 14:19:03 GMT+0800 (CST)] [17140] client:17149 disconnect, suicide: true.

agentx -v 1.2.4

node -p 'process.alinode’ v1.0.4

@JacksonTian 这里貌似是就是打印错误日志的时候报错了

@JacksonTian 为什么启动的时候报错了。自助式部署和交互式部署都报同样的错。

/usr/local/lib/node_modules/agentx/node_modules/nounou/index.js:16 var deamon = new EventEmitter(); ^ TypeError: object is not a function at module.exports (/usr/local/lib/node_modules/agentx/node_modules/nounou/index.js:16:16) at Object.<anonymous> (/usr/local/lib/node_modules/agentx/start_client.js:28:1) at Module._compile (module.js:456:26) at Object.Module._extensions…js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10) at startup (node.js:119:16) at node.js:906:3

@imhered 你的本地的版本是不是太低了。0.8?

@thesadboy 详细问题我们旺旺沟通吧。。

@JacksonTian 我就第一次装啊,按照你上面给的方法,一步一步走的。到这里 $ nohup agentx /path/to/your/config.json & 启动时候就包这个错了

@JacksonTian 已沟通解决了,谢谢。

@imhered 看这个报错,应该是你启动agentx的node版本太低。

@JacksonTian node版本太低? 我的是0.10.32,这个版本都支持不了吗?

@imhered 是比较低。

@JacksonTian 0.10.32都不支持啊,io和node合并前,不都是0.1x版本吗?那最低多少版本支持?

楼主好流弊 佩服

来自炫酷的 CNodeMD

这么多详细的监控图,不装一个试试多可惜呀

果然过了零点就可以申请,Mark

即将要改版。欢迎尝试。

是否会推出ARM版呢? 这样就能愉快的运行在树莓派了!

@Srar 暂时木有办法啦。

准备来一发试一试

已经被安利了, 在我司阿里云的ESC上已经启用alinode了, 很棒!

@JacksonTian 我再用tnvm 报了 这个错: $ tnvm lookup sort: string comparison failed: Illegal byte sequence sort: Set LC_ALL=‘C’ to work around the problem. sort: The strings compared were Node.js upkeep release to provide alinode-<H2>\304\372\313\371\307\353\307\363\265\304\315\370ַ\243\250URL\243\251\316\336\267\250\273\361\310\241</H2> with Node.js ' andNode.js upkeep release to provide alinode- with Node.js '. 又遇到过么你们

@sensoroDj 你的shell是?

是不是没有 UTF-8 locale? @sensoroDj 顺便补充下,PM2环境的,部署时需要杀掉 pm2 的后台进程。@朴灵 可以更新下文案。

@yjhjstz 估计就是你说的这个问题了 我的pm2在开着,UTF-8 locale这个我应该有

就是pm2的问题 ,这两者是冲突的么!不能同时使用么?

@sensoroDj 不是冲突,是pm2的常驻进程的问题,你设置了一堆环境变量,但是如果不kill了pm2的常驻进程,它就根本不叼你。

alinode有运行时的吗?服务器上不能直接安装node

@younth 有啊, tnvm install alinode-v1.5.2 tnvm use alinode-v1.5.2

@captainblue2013 旺旺群: 1406236180 邮件:alinode@service.aliyun.com

我很好奇node社区里有多少阿里的用户 感觉很多😁

来自酷炫的 CNodeMD

@yjhjstz 这install下来的是可执行的node吗 在机器上可以直接执行这个程序吗

回到顶部