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

2020-01-19 11:37:59 +08:00
 tianshiyeben

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

我有个开源项目

https://github.com/tianshiyeben/wgcloud

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

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

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

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

4678 次点击
所在节点    程序员
32 条回复
msg7086
2020-01-19 14:37:05 +08:00
pid 是古典的方式,cgroup 是现代的方式。
scarletass
2020-01-19 14:37:33 +08:00
进程 id 可以动态获取为什么写到文件去?
qyvlik
2020-01-19 14:56:16 +08:00
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-01-19 15:16:45 +08:00
shell :变量名获取 $pid,然后监控....
tianshiyeben
2020-01-19 16:04:46 +08:00
@qyvlik 谢谢,你写的比较全面
@houzhimeng 谢谢
chibupang
2020-01-19 21:23:31 +08:00
find +xargs+awk 查找进程的 ID,然后写入 xml 文件
back0893
2020-01-19 21:46:27 +08:00
程序上线自动发送 pid
tianshiyeben
2020-01-19 22:39:51 +08:00
还是用 pid 文件,这样简单点。其他的建议也很好,就是使用起来用户体验不好。
@back0893
@chibupang
ysc3839
2020-01-20 02:04:09 +08:00
不能通过进程名获取吗?
tianshiyeben
2020-01-20 09:04:55 +08:00
@ysc3839 进程名称可以获取到,但是要解析才能拿到进程 id,而且很难做到跨系统。
lqxzzz
2020-01-20 10:13:59 +08:00
myprocess & echo $! > /tmp/myprocess.pid
ysc3839
2020-01-20 13:14:14 +08:00
@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