前言
如果测试数据是很大量的数据,并且是基于时间变化的,需要做成一个横轴为时间,纵轴为数值的可视化,这个有很多方法
比如用excel做成图表形式的
或者用powerbi或者其它软件做成波形图
但是找了几个软件都没有想要的效果,grafana那种又太重了,需要配置很多东西,所以这里自己实现了一个简单但是实用的数据分析网页
架构
首先是原始数据,这里需要对原始数据进行处理,把数据处理成时间,数值的csv文件格式的,数量可以很多也没关系
支持通过网页倒入,因为测试可能是多轮的,或者多个数据的,所以为了方便,是支持网页直接倒入的
网页是通过命令行启动的,不需要第三方的web服务器,所有的东西都维护在一个目录内,我们看下我们的效果
使用过程
以ceph.log为例,我们拿到的是原始打包好的数据
[root@lab101 data]# ll
总用量 27228
-rw------- 1 root root 1230784 1月 18 18:28 ceph.log-20210115.gz
-rw------- 1 root root 1253789 1月 18 18:28 ceph.log-20210116.gz
-rw------- 1 root root 6857295 1月 18 18:28 ceph.log-20210117.gz
-rw------- 1 root root 7443114 1月 18 18:28 ceph.log-20210118.gz
解压数据
[root@lab101 data]# gunzip -d *.gz
[root@lab101 data]# ll
总用量 270016
-rw------- 1 root root 12583407 1月 18 18:28 ceph.log-20210115
-rw------- 1 root root 12672226 1月 18 18:28 ceph.log-20210116
-rw------- 1 root root 58620471 1月 18 18:28 ceph.log-20210117
-rw------- 1 root root 68756398 1月 18 18:28 ceph.log-20210118
汇总数据
[root@lab101 data]# cat ceph.log-20210115 > ceph.log
[root@lab101 data]# cat ceph.log-20210116 >> ceph.log
[root@lab101 data]# cat ceph.log-20210117 >> ceph.log
[root@lab101 data]# cat ceph.log-20210118 >> ceph.log
处理数据
我们之前的文章有篇awk的有处理数据的方法
cat ceph.log |awk '{for(i=1;i<=NF;i++){if($i~/op\/s/){$3=$i;print $1,$2,$3}}}'|awk '{gsub("op/s","",$3); print $1,$2,$3}'|awk '{if($3~/k/) {gsub("k","",$3); print $1,$2","$3*1000} else {print $1,$2","$3}}' > ceph.log.ops
转换成平台可读文件
转换的时候根据数据的长度决定的,我取了四天的数据大概有17万行,这个数据量还是比较大的
[root@lab101 datadisplay]# cat chuli.sh
cat ceph.log.ops | while read line
do
mytime=`echo $line|cut -d , -f 1`
value=`echo $line|cut -d , -f 2`
newtime=$[$(date -d "$mytime" +%s%N)/1000000]
echo $newtime,$value >> ceph.log.ops-chulihou
done
然后通过web上传上面的ceph.log.ops-chulihou文件即可