Node.js 4.0.0:灵雀云和 OneAPM 的整合测试
关于
Node.js 4.0.0 稳定版刚刚推出,备受期待,迫不及待地想用它写点东西;此外,要把 Demo 放到 Internet 上得有一个公网 IP ,看到灵雀云挺不错的而且提供域名解析,简直业界良心,其实早就想试试它的 CaaS(Container-as-a-Service 容器即服务)了,对于一个单点应用一个 Dockerfile 就足够;OneAPM 则是一款性能监控的
SaaS 产品,能否支持 Node.JS 4.0.0 不是特别确定,借着这个机会刚好也拉出来溜溜。
建立一个 Demo 应用

Demo 应用主要包括:
- 主体是某个歪果仁用纯 CSS3 写的小黄人
- 使用 jQuery 给它加上一点点交互,这样小黄人身上的部位就可以被点击
- 使用 Node.js 4.0.0 + Express 作为服务器
- 点击某个部位的时候会发送 AJAX 请求到后端, 然后请求被 Express 相应的路由接受并返回
- 使用 Redis 统计每个部位的点击数
创建代码库
即本 Repo 。
除了上面 Demo 的代码,还要保证根目录下需要有一个 Dockerfile ,来看看每一行的含义:
1. Docker 环境使用 Node.js 4.0.0 非常简单,一行搞定
FROM node:4.0.0
2. 加上维护者信息
MAINTAINER
wyvernnot wyvernnot@users.noreply.github.com
3. 拷贝文件进 Docker 镜像,安装 NPM 依赖
COPY
RUN npm install
4. 配置环境变量,暴露端口,和启动应用
EXPOSE 8888
ENV ONEAPM_APP_NAME awesome_app
ENV ONEAPM_DEMO 1
ENV ONEAPM_LICENSE_KEY <YOUR_KEY>
ENV ONEAPM_LOG stdout
ENV ONEAPM_LOG_LEVEL trace
ENV ONEAPM_NO_CONFIG_FILE 1
CMD ["npm","start"]
新建镜像构建仓库
新建构建仓库的时候需要提供一个代码仓库下载连接,灵雀云在后台根据这里填的连接去抓代码。

建立好的构建仓库

开始构建
镜像仓库和镜像构建仓库的不同就在与这个 构建 的过程。你可以随时从 Gihub 上的最新(或指定)版本创建新的构建,构建完便得到新的一个镜像。

从图上也可以看出,每个镜像除了有自己的 Image ID,还对应 GIT 的提交号,实际上你还可以指定分支来实现灰度发布。
查看构建列表
这是用户所有构建历史列表,此时你已经可以放心地下载构建成功的镜像到本地环境运行,并且可以随意切换不同的镜像版本。

重要的事情说三遍:
放心地下载到本地运行。
放心地下载到本地运行。
放心地下载到本地运行。
这就是容器的魅力:
- 开发和测试用的是一毛一样的环境
- 不会再遇到 在我机器上是好的吖 这种扯皮的事情
- 发布的时候可以直接发布这个镜像
- 并发一下子上来了也不要紧,动动鼠标加几个实例,省时省力
基于镜像创建服务
使用灵雀云,你可以非常方便地通过镜像创建 Web 服务。

你的服务会被自动分配一个域名,并且打开了 80 端口,从浏览器里访问:

添加监控
灵雀云本身已经能够提供非常基础的监控。想知道网站访问量,响应时间,用户网络分布等则需要安装 OneAPM 探针。 从 v1.2.8 版本开始,OneAPM 探针的安装已经和 Node.js
其它模块的安装没有区别了。
npm install oneapm --save
要特别感谢死月等一大批用户坚持不懈的建(tu)议(cao)!
监控 CPU /内存
灵雀云和 OneAPM 都提供了服务 CPU 和内存的监控,数据还算比较吻合。
灵雀云

OneAPM

监控吞吐量
由于基因的不同,OneAPM 和 灵雀云对吞吐量的关注点略有不同,从下图可以看出来。
灵雀云

OneAPM

OneAPM 的视角是自顶向下的,能够细分不同请求的吞吐量,响应时间,错误率等等,功能非常多。 而灵雀云的监控则是自底向上的,对流量的监控是整体的,并且精确到了字节。
监控 Redis
Redis Server 运行在另一个容器里。使用 OneAPM 可以监控应用连接 Redis 的使用情况,详细到每个 Express 路由里的调用次数:

扩容
假设某一天流量太大了,服务器有点扛不住,这个时候只需要登录灵雀云,手动修改一下容器实例的个数(这个工作也可以交给灵雀云来自动完成)。

等待容器启动完成,之后的流量会分摊到所有的机器上。从 OneAPM 的后端可以清楚地看到每个容器的负载情况。

总结
- 灵雀云和 OneAPM 都能很好的支持 Node.js 4.0.0 应用
- 灵雀云上使用 OneAPM 的 Node.js 探针需要添加 OneAPM 依赖,并在 Dockerfile 里加上 OneAPM_* 环境变量
- 灵雀云和 OneAPM 监控的视角不一样,配合使用效果最佳
本文系 OneAPM 工程师编译整理。想阅读更多技术文章,请访问 OneAPM 官方博客。
Node.js 4.0.0:灵雀云和 OneAPM 的整合测试的更多相关文章
- node.js 在 Express4.0 框架使用 Connect-Busboy 实现文件上传
node.js下四种post提交数据的方式 今天说分享的是其中一种,就是上传文件. Express 4.0 以后,将功能原子化,高内聚,低耦合,独立出了很多中间件 今天主要分享文件上传 对于conne ...
- Node.js v7.4.0 Documentation Addons
https://nodejs.org/docs/latest/api/addons.html Node.js Addons are dynamically-linked shared objects, ...
- Node.js v10.1.0 Documentation
Modules Stable 在 Node.js 模块系统中,每个文件都会被当做一个独立的模块.假设有一个名为 foo.js: const circle = require('./circle.js' ...
- Node.js 0.12: 正确发送HTTP POST请求
Node.js 0.12: 正确发送HTTP POST请求 本文针对版本:Node.js 0.12.4 之前写过一篇Node.js发送和接收HTTP的GET请求的文章,今天再写一篇,讲发送POST的请 ...
- 【干货分享】Node.js 中文学习资料和教程导航
这篇文章来自 Github 上的一位开发者收集整理的 Node.js 中文学习资料和教程导航.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念,它的目标是帮助程 ...
- node.js中文资料导航 Mark
Node.js HomePage Infoq深入浅出Node.js系列(进阶必读) Node.js中文文档 被误解的 Node.js Node.js C++ addon编写实战系列 热门node.js ...
- 【干货分享】Node.js 中文资料导航
这篇文章与大家分享一批高质量的的 Node.js 中文资料.Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台, 用来方便地搭建快速的, 易于扩展的网络应用 Node ...
- node.js中文资料导航
以下资料来自gitHUb上面:https://github.com/youyudehexie/node123 Node.js HomePage Node官网七牛镜像 Infoq深入浅出Node.js系 ...
- windows系统下安装 node.js (node.js安装及环境配置)
node.js简介 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效. Node. ...
随机推荐
- 9款精美别致的CSS3菜单和按钮
1.超具立体感的CSS3 3D菜单 菜单项带小图标 记得之前向大家分享过不少CSS3 3D菜单,比如CSS3 3D动画菜单 3D立方体菜单项和HTML5/CSS3自定义下拉框 3D卡片折叠动画,效果都 ...
- hdu 1879 继续畅通工程
/************************************************************************/ /* hdu 1879 继续畅通工程 Time L ...
- mobileconfig文件的签名和认证(signed、verified)
专题:基于IOS上MDM技术相关资料整理及汇总mobileconfig文件的签名和认证(signed.verified) 一.功能描述: 鉴于我们的设备和MDM server之间已经可以通信,并能完成 ...
- 8.samba server与client配置
server端 1.安装samba:yum install -y samba\* 增加samba用户: useradd smb用户名 smbpasswd -a smb用户名 ...
- zedboard OPENCV移植
1:系统环境搭建 要准备好交叉编译环境 见http://blog.csdn.net/xiabodan/article/details/22717175 2:下载cmake CMake是一个跨平台的安装 ...
- 开始ubuntu 14.04 的装X模式---终端模式下中文输入,听歌,上irc 开启framebuffer看电影 截图
先上图吧 卡卡的全是在tty1 下的操作,看电影,听歌,截图 ,看图 ,上irc 等等,相当适合在小白面前装屁! 需要安装的软件: 为了能正常显示中文:安装fbterm sudo apt-get i ...
- Android:自定义控件样式(Selector)
前言 在开发一个应用程序过程中不可避免的要去修改组件的样式,比如按钮.输入框等.现在就看下如何通过Seletor实现样式的自定义.先看下简单的效果对比
- JS判断鼠标从什么方向进入一个容器
偶然将想到的一个如何判断鼠标从哪个方向进入一个容器的问题.首先想到的是给容器的四个边添加几个块,然后看鼠标进入的时候哪个块先监听到鼠标事件.不过这样麻烦太多了.google了一下找到了一个不错的解决方 ...
- php session偶尔写入失败的原因
session_start(); var_dump($_SESSION); $key = sprintf('%05d', mt_rand(0, 99999)); $key = strval($key) ...
- jQuery对象和DOM对象的互相转换【 转】
jQuery对象转换为dom对象 只有jQuery对象才能调用jQuery类库的各种函数,同样有些dom对象的属性和方法在jQuery上也是无法调用的,不过基本上jQuery类库提供的函数包含了所有的 ...