监控进程 id,每次重启 id 都变化,有什么好的办法监控吗

2020 年 1 月 19 日
 tianshiyeben

最近一直在苦思这个问题,该怎么做。

我有个开源项目

https://github.com/tianshiyeben/wgcloud

是做服务器分布式监控的软件,其中包括监控进程,但是进程 id 要配置到 xml。

这样有个弊端,就是每次应用重启后,进程 id 就变了,要重新配置 xml 里的进程 id,还要重启 agent。这样比较麻烦。

有的同学建议,从 pid 文件里读取,但是这样对应用启动要求比较高,很多运维同学不知道怎么生成 pid 文件,说实话我也没做过。

我自己想的办法是准备从 sever 端页面配置进程信息,这样至少不用每次修改配置文件了。但是这样没有从根本解决我的疑惑。

5507 次点击
所在节点    程序员
32 条回复
msg7086
2020 年 1 月 19 日
pid 是古典的方式,cgroup 是现代的方式。
scarletass
2020 年 1 月 19 日
进程 id 可以动态获取为什么写到文件去?
qyvlik
2020 年 1 月 19 日
1. 修改程序上报 pid 给你的 agent
2. 用 脚本通过特征,例如端口,运行路径等等找出 pid
3. 类似于 window 那种注册 service,通过 service 找 pid
4. 或者 linux 下用 supervisor,直接一键生成 pid 文件: http://liyangliang.me/posts/2015/06/using-supervisor/
5. v 友补充好多其他方案了
houzhimeng
2020 年 1 月 19 日
shell :变量名获取 $pid,然后监控....
tianshiyeben
2020 年 1 月 19 日
@qyvlik 谢谢,你写的比较全面
@houzhimeng 谢谢
chibupang
2020 年 1 月 19 日
find +xargs+awk 查找进程的 ID,然后写入 xml 文件
back0893
2020 年 1 月 19 日
程序上线自动发送 pid
tianshiyeben
2020 年 1 月 19 日
还是用 pid 文件,这样简单点。其他的建议也很好,就是使用起来用户体验不好。
@back0893
@chibupang
ysc3839
2020 年 1 月 20 日
不能通过进程名获取吗?
tianshiyeben
2020 年 1 月 20 日
@ysc3839 进程名称可以获取到,但是要解析才能拿到进程 id,而且很难做到跨系统。
lqxzzz
2020 年 1 月 20 日
myprocess & echo $! > /tmp/myprocess.pid
ysc3839
2020 年 1 月 20 日
@tianshiyeben 我个人感觉不难吧?类 Unix 系统应该都有 /proc,Windows 的话单独写一套代码。另外估计也有现成的第三方库可用。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/639112

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX