hyj1991 / easy-monitor

企业级 Node.js 应用性能监控与线上故障定位解决方案
http://www.devtoolx.com
BSD 2-Clause "Simplified" License
3.08k stars 240 forks source link

请问一下,内存监控和CPU监控的数据,是否有保存文件下来? #121

Closed kingxiaozhe closed 4 years ago

kingxiaozhe commented 4 years ago

我们需要拿着监控的数据,进行分析。 盼回复

hyj1991 commented 4 years ago

easy-monitor@v2.x 版本暂时没有支持 profile 文件的本地存储,但是正在编写中的 v3.x 会完整支持监控数据以及 profile 文件的云端存储和团队共享逻辑。

hyj1991 commented 4 years ago

当前如果你有这些需求的话可以自行修改下源码简单定制下:

https://github.com/hyj1991/easy-monitor/blob/master/src_logic/embrace/controller/tcp.profiler.js#L48

这里的返回的 profile 变量(字符串 / Stream)你可以加一点逻辑将其保存至本地即可。

kingxiaozhe commented 4 years ago

那我现在需要去保存这个监控的数据,是否有什么好办法,或者思路去简单实现以下呢?

hyj1991 commented 4 years ago

你需要的是保存生成的 profile 文件还是那些 cpu/os 信息?

kingxiaozhe commented 4 years ago

具体三个方面: 第一个:我们监控内存使用,现在用内存监控还无法定位到我们内存问题,所以需要监控一段时间的内存信息,并且保存下来,然后根据内存数据进行问题定位。 第二:CPU监控信息也是同上。 第三个:就是函数的执行时间,最好也能保存下来数据,作为一个数据比对作用,要给领导演示的。

hyj1991 commented 4 years ago

CPU / Memory 数据:

https://github.com/hyj1991/easy-monitor/blob/master/src_logic/embrace/controller/tcp.overview.js#L39-L40

hyj1991 commented 4 years ago

这部分内容你们可以自己定制下先。 V3.0 的版本会有很大的更新,预计不早于 6 月发布

kingxiaozhe commented 4 years ago

好的,感谢 期待新版本。

kingxiaozhe commented 4 years ago

再请教个问题,我看内存监控是实时监控的,查询完显示内存监控结果之后就停止了,请问这个可以设置成持续一段时间去监控吗,我们需要拿到一段时间的内存监控记录,谢谢

hyj1991 commented 4 years ago

现在数据就是实时的,你点开页面才会触发数据的采集,这个触发定时器写在前端了,当时主要是考虑到尽量让使用简单,所以你可以看到这个版本没有任何外部依赖(mysql / redis 等存储服务)就可以使用

kingxiaozhe commented 4 years ago

就是现在需要触发实时的数据采集,那就只能通过刷新页面去实现 对么?

hyj1991 commented 4 years ago

页面不需要刷新,打开在哪里自己就会起一个定时器拉取数据的

kingxiaozhe commented 4 years ago

我现在进去页面之后,页面不刷新的话,内存数据没有重新去拉去,还需要配置什么吗? 这个触发定时器具体是在哪个页面里面呢?

hyj1991 commented 4 years ago

OS 页面,看这个:http://120.27.24.200/easy-monitor/overview?processName=Easy-Monitor&serverName=iZm5egr88rtfowtz6oo6qnZ&pid=all&opt=own&tag=process.vue&pidList=17170

kingxiaozhe commented 4 years ago

MEM 这个页面 可以定时调用吗? 就想OS页面一样 实时的这种

hyj1991 commented 4 years ago

不行,这个操作进程没有问题不要去触发,会影响主进程性能

kingxiaozhe commented 4 years ago

我们现在的场景就是,在性能环境去做压测,在某个时间点上,就会出现内存溢出现象,出现502的情况,所以我们想持续监控内存。还有什么不影响主进程的办法么?

hyj1991 commented 4 years ago

设置服务器 ulimit -c unlimited,crash 后会有 coredump 生成,分析下 core 文件吧