如何采集(监控)服务器上一个或多个进程的 CPU 内存占用等数据

2024 年 12 月 25 日
 imherer

现在一台服务器上可能会部署多个服务(不到 10 个的样子,是不同的服务,服务名不一样),如何采集这些进程的 CPU 、内存占用等数据呢

目前想到的是写一个程序去读 top 命令的结果,但是假如我有 10 个服务的话,我得同时执行 10 条 top 命令,不知道 top 命令本身性能怎么样,会不会对服务器负载造成影响

大佬们有现成的方案吗?

5459 次点击
所在节点    程序员
50 条回复
dbak
2024 年 12 月 25 日
这个?
theniupa
2024 年 12 月 25 日
nmon
git00ll
2024 年 12 月 25 日
prometheus 是机器级别的吧, 进程级别的没看到过有 exporter
hugowangnz
2024 年 12 月 25 日
push gateway 可以主动发送数据到 Prometheus
treexie
2024 年 12 月 25 日
iceheart
2024 年 12 月 26 日
定时解析 /proc/pid/stat 文件
dier
2024 年 12 月 26 日
netdata 应该可以实现你的需求

julyclyde
2024 年 12 月 26 日
首先,读 top 肯定是错误的
二手数据

应该读 proc 或者 cgroup
imherer
2024 年 12 月 26 日
@julyclyde 嗯,目前用了 process-exporter ,满足需求
CodeWind
2024 年 12 月 26 日
@imherer #5 有没有可能说的是 prometheus 的解决方案,比如他的 process exporter

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

https://v2ex.ih06.com/t/1100081

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

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

© 2021 V2EX