A-A+

GO 编写的进程管理工具 Gosuv

2016年09月10日 Linux 软件 暂无评论 阅读 230 次

Gosuv是一个进程管理工具,使用Go语言编写。受python-supervisor启发,学习了很多其中的功能和用法。

至于为什么要写一个go的进程管理工具,主要还是因为感觉python-supervisor不是很好用(毕竟我也用了这玩意好几年了,又爱又恨)。

有哪些地方我感觉不好呢?

  1. 输出的日志不能包含ansi的颜色信息,在终端环境下,带颜色的日志非常常见
  2. 网页端不能新增配置文件,只能在控制台增加
  3. supervisorctl reload这个命令会导致supervisord的重启,以至于他管理的其他程序也会跟着死掉
  4. 状态从运行中转化到FATAL状态,无法设置通知
  5. 没有进程的性能监控的界面
  6. 程序运行的时候一些基础的环境变量缺少,比如HOME,USER变量
  7. 如果不设计killasgroup=true,默认的进程通常不能全部杀掉
  8. 还有很多,等我想起来我再补充

可能上面的很多抱怨supervisor做一些调整,或者增加一些插件也是可以实现的,不过用起来很麻烦,而我又比较懒。看到supervisor官网上一堆堆的issue但是也没有人解决,想来我会Go语言,为什么不自己写一个进程管理工具呢,于是在一天晚上开搞了。

从状态机开始研究,接着有增加了web界面,后来越来越完善了。相对于之前的python-supervisor做了以下的改善

  1. Web控制台部分做了重点加强,因为使用频率太高了,在网页上现在可以直接添加先的应用,网页查看日志的部分也做了优化,查看起来没有这么费劲了。使用了websocket连接后端,状态一有变化,前台就能立刻看到变化。
  2. reload命令不在是重启的命令,而是重新读取配置文件,并应用已经更改的那部分。
  3. 日志部分对于带有ansi color的输出,再也不会报XML RPC错误了,这个只有用python的xml rpc库才会出这个问题,用Go语言写自然不会有这个问题。
  4. 配置文件也被我全部换成yaml格式的了,修改起来方便很多。所以的配置全部都放在了一个文件中,方便程序自动化的管理。
  5. 增加的CPU和内存的监控
  6. 默认killasgroup,所有启动程序在停止后,不会有残余的进程
  7. 加入了fatal状态的pushover通知的功能
  8. 支持了github的webhook,在github代码更新的时候,可以触发更新命令,并重启程序
  9. gosuv程序加入了自更新功能

目前还处在试用阶段,个人用起来还是挺爽的。

截个使用GIF效果图

标签:

给我留言

Copyright © SEARU.ORG 保留所有权利.   Theme  Ality 网站地图 360网站安全检测平台

用户登录

分享到: