目录
为什么写
看了淘宝的tsar,想写一个类似功能练练手,于是就写了这个dfsrr(DingFang System Resourece Report)。
在一个是不想让自己的手和脑子停下来,最近也没什么加班,就充实一下自己的空闲时间。
没事就折腾折腾,也是挺好玩的一件事情。
实现
功能
- 可以采集cpu、内存、网络、磁盘、系统负载等信息,把这些信息记录到本地sqlite数据库,或者上报到服务端,由服务端统一处理。
- 支持通过配置文件指定采集需要的模块,每个模块可以设置不同的采集间隔
- 命令行工具
- 支持本地sqlite读取数据格式化打印到终端
- 支持读取最新的n条数据
- 支持读取指定时间的数据
- 实时获取系统资源数据输出到终端。
- 支持显示指定字段
- 支持本地sqlite读取数据格式化打印到终端
- web服务,包含一个基础的web服务程序,可以通过http调用接口获取指定数据
- dfsrr服务端,一个基础dfsrr服务端,支持dfsrr客户端上报的数据,把数据存储到msyql数据库
架构图
使用示例
命令行使用示例
打印帮助信息
$ dfsrrTool --help
Usage: dfsrrTool [Module] [options]
Options:
-w / --watch 打印最近的n条数据: dfsrrTool --cpu -w 10
-l / --live 实时打印: dfsrrTool --cpu -l
-i / --interval 指定时间间隔(s): dfsrrTool --cpu -l -i 5
-t / --time 打印指定时间数据: dfsrrTool --cpu -t 20201001
dfsrrTool --cpu -t 2020100108
dfsrrTool --cpu -t 202010010800
-f / --file 从文件中读取数据: dfsrrTool --cpu -f filename
-s / --spec 指定显示指标字段: dfsrrTool --cpu -s util,sys,user
-h / --help 帮助
Modules:
--cpu CPU
--memory 内存
--load 系统运行队列和平均负载
--partition 磁盘分区
--tcp tcp流量
--udp udp流量
--traffic 流量
以间隔1秒打印cpu资源使用情况
$ dfsrrTool --cpu -l -i 1
--------------------------------cpu--------------------------------
Time user sys wait hirq sirq util idle
28/01 19:38:23 1.00 1.00 0.00 0.00 0.00 1.99 98.01
28/01 19:38:24 0.51 0.00 0.00 0.00 0.00 0.51 99.49
...
以间隔1秒打印系统负载信息,且仅显示1分钟和5分钟的平均负载
$ dfsrrTool --load -l -i 1 -s load1,load5
------------load------------
Time load1 load5
28/01 19:40:58 0.10 0.11
28/01 19:40:59 0.10 0.11
28/01 19:41:00 0.10 0.11
...
参考
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 245292011@qq.com