Kivi

没有什么远大理想,只是永远都不会满足而已


  • 首页

  • 关于

  • 标签

  • 归档

Node.js生产环境部署监控方案:pm2+keymetrics

发表于 2016-08-22 更新于 2017-07-02 分类于 Node.js 阅读次数:
本文字数: 1.7k 阅读时长 ≈ 2 分钟

为什么要使用pm2

  • 崩溃自动重启
  • 监控

pm2是什么

PM2 is a production process manager for Node.js applications with a built-in load balancer. It allows you to keep applications alive forever, to reload them without downtime and to facilitate common system admin tasks.

安装

1
2
3
npm install pm2 -g
# Or install the V2 release candidate
npm install pm2@next -g

更新pm2

1
2
3
4
# Install latest pm2 version
npm install pm2 -g
# Save process list, exit old PM2 & restore all processes
pm2 update

最简单的打开姿势

  • 启动

    1
    pm2 start app.js -i 4 --name="app" #启动应用,4个cluster(一个master,三个slave),名字是api
  • 查看

    1
    pm2 list

    pm2查看全部应用

  • 监控

    1
    pm2 monit

    pm2 console监控

  • 关联keymetrics(非常简单)

    1. 注册keymetrics帐号
    2. 注册成功之后,可以看见一个new bucket按钮,点击创建
    3. 拿到pubkey和secretkey
    4. 一行命令关联: pm2 link secretkey publickey [machine name], 然后就可以在keymetrics的dashboard中看到你的应用了
    5. 万臣之后应该可以看到下图所示的图形化监控界面

keymetrics 图形化监控

结合docker

  • 在项目根目录下新建process.yml文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    apps:
    - script : ./api.js
    name : 'api-app'
    instances: 4
    exec_mode: cluster
    - script : ./worker.js
    name : 'worker'
    watch : true
    env :
    NODE_ENV: development
    env_production:
    NODE_ENV: production
  • 项目启动

    1
    2
    3
    4
    5
    docker run -p 80:3000 -v `pwd`/example_app:/app keymetrics/pm2-docker-alpine
    # 关联keymetrics图形化监控界面,还需要添加以下环境变量
    -e "KEYMETRICS_SECRET=YYY
    -e "KEYMETRICS_PUBLIC=XXX"
    -e "INSTANCE_NAME=hostname"

注意

启动之后,我这里使用的时候,发现keymetrics的监控并不稳定,目前还不确定是什么问题

总结

这个方案还存在一些问题,例如

  • keymetrics的免费服务还是有点捉鸡的,感觉最重要功能就是内存和CPU占用信息的展示,还有很多功能都需要付费,比如日志
  • docker stats可以直接查看整个container的内存和CPU占用的情况,如果部署环境给予docker的话,感觉这个数据比node进程内存CPU的占用更有参考价值
  • keymetrics/pm2-docker-alpine,这个镜像在dockerhub上的star只有3(其中还有一个是我),pull只有100多,这个数量充分显示了,大家都没有用这个东西在做监控(也可能使用了别的image)

不过,就算这个方案再烂,在没有其他进程监控方案的时候,还是可以试一试的,毕竟,有总比没有好,而且使用这个方案基本不需要费什么力气

# Node.js
基于docker搭建mongodb分片集群
javascript面向对象编程实践
  • 文章目录
  • 站点概览
kivi

kivi

nodejs | server
58 日志
17 分类
32 标签
RSS
  1. 1. 为什么要使用pm2
  2. 2. pm2是什么
  3. 3. 安装
  4. 4. 更新pm2
  5. 5. 最简单的打开姿势
  6. 6. 结合docker
  7. 7. 总结
© 2019 kivi | 173k | 2:37
由 Hexo 强力驱动 v3.9.0
|
主题 – NexT.Pisces v7.3.0
|