zoukankan      html  css  js  c++  java
  • 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 应用

    访问灵雀云上的版本点这里

    Node.js 4.0.0,灵雀云和 OneAPM 的整合测试

    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"]
    

    新建镜像构建仓库

    新建构建仓库的时候需要提供一个代码仓库下载连接,灵雀云在后台根据这里填的连接去抓代码。

    Node.js 4.0.0,灵雀云和 OneAPM 的整合测试

    建立好的构建仓库

    仓库在Hub上的地址

    开始构建

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

    Node.js 4.0.0,灵雀云和 OneAPM 的整合测试

    从图上也可以看出,每个镜像除了有自己的 Image ID,还对应 GIT 的提交号,实际上你还可以指定分支来实现灰度发布。

    查看构建列表

    这是用户所有构建历史列表,此时你已经可以放心地下载构建成功的镜像到本地环境运行,并且可以随意切换不同的镜像版本。

    Node.js 4.0.0,灵雀云和 OneAPM 的整合测试

    重要的事情说三遍:

    放心地下载到本地运行。

    放心地下载到本地运行。

    放心地下载到本地运行。

    这就是容器的魅力:

    • 开发和测试用的是一毛一样的环境
    • 不会再遇到 在我机器上是好的吖 这种扯皮的事情
    • 发布的时候可以直接发布这个镜像
    • 并发一下子上来了也不要紧,动动鼠标加几个实例,省时省力

    基于镜像创建服务

    使用灵雀云,你可以非常方便地通过镜像创建 Web 服务。

    Node.js 4.0.0,灵雀云和 OneAPM 的整合测试

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

    Node.js 4.0.0,灵雀云和 OneAPM 的整合测试

    添加监控

    灵雀云本身已经能够提供非常基础的监控。想知道网站访问量,响应时间,用户网络分布等则需要安装 OneAPM 探针。 从 v1.2.8 版本开始,OneAPM 探针的安装已经和 Node.js
    其它模块的安装没有区别了。

     npm install oneapm --save
    

    要特别感谢死月等一大批用户坚持不懈的建(tu)议(cao)!

    监控 CPU /内存

    灵雀云和 OneAPM 都提供了服务 CPU 和内存的监控,数据还算比较吻合。

    灵雀云

    Node.js 4.0.0,灵雀云和 OneAPM 的整合测试

    OneAPM

    Node.js 4.0.0,灵雀云和 OneAPM 的整合测试

    监控吞吐量

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

    灵雀云

    Node.js 4.0.0,灵雀云和 OneAPM 的整合测试

    OneAPM

    Node.js 4.0.0,灵雀云和 OneAPM 的整合测试

    OneAPM 的视角是自顶向下的,能够细分不同请求的吞吐量,响应时间,错误率等等,功能非常多。 而灵雀云的监控则是自底向上的,对流量的监控是整体的,并且精确到了字节。

    监控 Redis

    Redis Server 运行在另一个容器里。使用 OneAPM 可以监控应用连接 Redis 的使用情况,详细到每个 Express 路由里的调用次数:

    Node.js 4.0.0,灵雀云和 OneAPM 的整合测试

    扩容

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

    Node.js 4.0.0,灵雀云和 OneAPM 的整合测试

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

    Node.js 4.0.0,灵雀云和 OneAPM 的整合测试

    总结

    • 灵雀云和 OneAPM 都能很好的支持 Node.js 4.0.0 应用
    • 灵雀云上使用 OneAPM 的 Node.js 探针需要添加 OneAPM 依赖,并在 Dockerfile 里加上 OneAPM_* 环境变量
    • 灵雀云和 OneAPM 监控的视角不一样,配合使用效果最佳

    本文系 OneAPM 工程师编译整理。想阅读更多技术文章,请访问 OneAPM 官方博客

  • 相关阅读:
    &nbsp|&quot|&amp|&lt|&gt等html字符转义
    OpenSSL: 消息摘要算法
    Linux下tcp协议socket的recv函数返回时机分析(粘包)
    ipv6
    Electron 调用系统工具记事本、计算器等
    MySQL 导出函数与存储过程
    远程连接Ubuntu桌面配置
    当Activity继承AppCompatActivity如何实现隐藏标题栏与状态栏
    spring boot 1.5.2 操作mongodb3.4.0
    VScode-Go can't load package: package .: no buildable Go source files in
  • 原文地址:https://www.cnblogs.com/oneapm/p/4809841.html
Copyright © 2011-2022 走看看