|
本帖最后由 haddis_123 于 2014-2-18 17:22 编辑
由于日常测试过程中经常会需要对linux环境下的服务做各种压力测试或者稳定性测试.
而常见的监控工具更多的是针对服务器本身资源使用情况的监控,这样在同机器多服务的环境下很难将它们单个区分出来。
自己使用golang+ html实现了一个简单的服务占用cpu mem实时统计工具,它包含的主要主要功能:
1 . 定时轮询指定名称(或者指定端口)服务的cpu ,mem使用情况.(轮询间隔可自行指定,建议15秒或30秒) --- 注意:对于多进程模型,本监控不再适应。
2. 数据的存取. 目前只要进程存在,服务的cpu,mem使用情况会一直在内存中记录,进程结束后,数据全部消失。--- 考虑到各种db并非在所有机器上都有部署,所以自己完成了数据存取的管理。
3. 数据的展示. 自己实现一个简单的http server,将服务的占用情况通过html中图示的方法更加直观的展现出来。 --- 注意:图形化通过google chart api实现,需要联网环境,并且在大陆可能存在页面显示不稳定的问题。
下面是一个图示统计展示的结果页面:
工具地址:https://github.com/chengzii/tyrael (配置中各个参数可以在read.me中查看)
bin 目录下 是二进制可执行程序(启动命令: nohup ./tyrael >/dev/null & sh control.sh用于杀死进程的)
conf 目录下 是配置文件 (主要配置包括: http server要**的端口,和查询的服务名或者服务端口,轮询周期 等)
log 目录下 是执行过程生成的日志文件 (可以查询执行过程中,记录的服务资源统计结果)
public 目录下 是html相关的js css img等内容存放目录
tpl 目录下 是html页面文件
src 目录下 是二进制可执行程序编译前的源码( golang实现)
注意事项:
1. 配置中获取指定端口的进程时,通过lsof命令实现的,你必须保持你机器上lsof是个全局命令(否则请安装 yum install lsof ; ln -s /usr/sbin/lsof /usr/bin/lsof)
2. 工具启动时,会占用一个端口,请保证该端口在你的服务器上,还没有被占用。
3. 工具统计的服务占用资源情况,都是通过top 命令获取的,也就是结果是一个当时的实时占用情况,一般来说它会和ps aux中统计的结果有很大不同,更多解释,请自行google.
4. 由于工具在执行过程中,随着时间增加,更多结果数据会保存到内存中,所以它会对系统内存造成一定开销(很小,15秒间隔,3天的数据大概在百兆级别),建议工具执行时间,不超过5天。
5. 服务启动后,在完成一次轮询后,就可以通过前端来查看统计的结果了,统计页面包括: $ipport/line ---- 整体结果的统计,页面见示例图 ; $ipport/show ---- 某一瞬间服务的cpu mem占用率。
完成这个工具的几个目的:
1. 一来,自己没有找到针对服务的比较好的cpu mem监控工具。
2. 二来,学了3、4个月的golang,感觉刚好这个工具的需求正好用来实践一下。(简易http server ,多线程,相对高效的内存管理这三个工具需求太适合用golang)
3. 三来,如果能给自己或者给别人带来一点点的方便,就更惊喜了。
欢迎大家进行更多交流、拍砖. qq : 66461311 |
|