酷!在终端上使用命令行可视化分析日志

本文涉及的产品
对象存储 OSS,20GB 3个月
阿里云盘企业版 CDE,企业版用户数5人 500GB空间
日志服务 SLS,月写入数据量 50GB 1个月
简介: 运维工程师在通过日志调查问题时,或者通过日志搭建监控系统时,不仅需要查看原始的日志内容,还需要把日志经多深度加工分析,例如计算每分钟的延时,每分钟的流量等等监控。这些数字指标,如果能够通过可视化的手段直观的展示出来,会更直观、有效的理解监控数据。今天我们介绍一种比较简洁、也比较酷的可视化方式,就是在终端上直接通过命令行可视化分析日志。

可视化分析日志的需求


运维工程师在通过日志调查问题时,或者通过日志搭建监控系统时,不仅需要查看原始的日志内容,还需要把日志经多深度加工分析,例如计算每分钟的延时,每分钟的流量等等监控。这些数字指标,如果能够通过可视化的手段直观的展示出来,会更直观、有效的理解监控数据。今天我们介绍一种比较简洁、也比较酷的可视化方式,就是在终端上直接通过命令行可视化分析日志。

这种方式的好处在于:

  • 直接通过终端,无需打开控制台。
  • 通过SQL就能实现可视化,无需配置一大堆可视化参数。

什么?命令行里边也能可视化? 是的,命令行里边能够实现可视化! 实现方式是:通过mysql客户端,连接sls服务,使用SQL中颜色函数,直接在终端上分析。下文将以Nginx的访问日志为力,演示如何在终端可视化分析。


分析每一种Http Method的占比大小


先看效果图,这个颜色条块是在终端上显示出来的:

上图中,分别展示了,method、pv、占比、和大小的柱状图。是不是很酷?我们可以直接在终端上可视化展示数据的大小。怎么做到的呢?


首先,通过mysql协议连接到SLS,通过10005端口连接到SLS, 用户名是accessKeyid, 密码是accessKeySecret,  SLS 的project作为database,参考文档

mysql -hcn-hangzhou-intranet.log.aliyuncs.com -P10005 -u******** -p*********   projec_name

然后在mysql命令行中输入以下SQL:

select *, bar(percent, 40) from(select *, pv*1.0 / (sum(pv) over()) as percent from(select method ,count(1) pv  from access-log  where __time__ between to_unixtime(now())- 600 and  to_unixtime(now())  group by method order by pv ));

上述SQL主要做了几件事情:

1: 按照method group by计算每一个method的pv。

2: 外层嵌套查询,通过sum(pv) over() 计算出所有method的pv的总和。这里用到了窗口函数,对于窗口函数的语义,请参考文档。 简单而言,窗口函数在计算上是聚合函数,在结果上是转换函数,也就是计算窗口内所有行的聚合结果,再把结果写回每一行。因而窗口函数计算后,总行数没有改变,还是有3行。

3: 计算每个method的pv占总pv的比例,pv*1.0 / (sum(pv) over()) 。

4: 最后一步就是根据比例信息渲染出柱状图, bar(percent,40)。


bar函数的语义包含两个参数,分别是百分比和最大长度。 最大长度指定柱状图的最大长度, 上边的样例中,就是40个字符的长度, 然后根据百分比,把柱状图展示等比例的长度。


换一种可视化形式

上边我们用柱子的长度来代表pv的大小。那么我们换一种方式,用单纯的颜色来表达呢?



在上图中,绿色部分越多,代表占比越高。红色部分越多,代表占比越低。是不是更酷了?怎么做到的呢?上述SQL其他部分不需要改动,只需要改动bar函数的调用:

bar(40, 40,color(percent, 0,1 ,  rgb(255,0,0), rgb(0,255,0)), rgb(0,255,0))

bar函数增加了两个参数,分别是起始的颜色和结束的颜色。 那么我们可以定制起始位置的颜色。在这里使用一个动态颜色来表示:color(percent, 0,1 ,  rgb(255,0,0), rgb(0,255,0)) ,也就说percent取值在0到1之间,如果percent靠近0,那么就颜色就靠近  rgb(255,0,0)红色 ,如果percent靠近1,颜色就靠近rgb(0,255,0)绿色。根据percent的位置,输出动态的颜色。

因为上边界是静态的颜色(绿色)。所以我们如果percent比较小,那么条块的颜色就比较多。如果percent比较大,那么条块就更接近于绿色。那么我们也可以把上边界也设置成动态颜色,效果是什么样的呢?欢迎亲爱的读者亲自试一下呢

不过用颜色来表示柱状图,不如用长度来表达的语义更加直观。像第一个例子,既有颜色,又有长度表达信息,可以更加快速的了解数字的大小信息。

延伸阅读

上文介绍了如何用mysql协议可视化分析日志, 当日志数据量比较大的时候,可能会遇到查询不完整,或者延时变高的问题,欢迎深入了解SLS增强SQL,为千亿日志分析的实时计算引擎。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
2天前
|
监控 关系型数据库 MySQL
分析慢查询日志
【10月更文挑战第29天】分析慢查询日志
11 3
|
2天前
|
监控 关系型数据库 数据库
怎样分析慢查询日志?
【10月更文挑战第29天】怎样分析慢查询日志?
12 2
|
26天前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1602 14
|
22天前
|
Arthas 监控 Java
JVM知识体系学习七:了解JVM常用命令行参数、GC日志详解、调优三大方面(JVM规划和预调优、优化JVM环境、JVM运行出现的各种问题)、Arthas
这篇文章全面介绍了JVM的命令行参数、GC日志分析以及性能调优的各个方面,包括监控工具使用和实际案例分析。
37 3
|
27天前
|
存储 消息中间件 大数据
大数据-69 Kafka 高级特性 物理存储 实机查看分析 日志存储一篇详解
大数据-69 Kafka 高级特性 物理存储 实机查看分析 日志存储一篇详解
24 4
|
28天前
|
SQL 分布式计算 Hadoop
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
40 2
|
28天前
|
分布式计算 资源调度 数据可视化
Hadoop-06-Hadoop集群 历史服务器配置 超详细 执行任务记录 JobHistoryServer MapReduce执行记录 日志聚合结果可视化查看
Hadoop-06-Hadoop集群 历史服务器配置 超详细 执行任务记录 JobHistoryServer MapReduce执行记录 日志聚合结果可视化查看
30 1
|
23天前
|
数据可视化
Tensorboard可视化学习笔记(一):如何可视化通过网页查看log日志
关于如何使用TensorBoard进行数据可视化的教程,包括TensorBoard的安装、配置环境变量、将数据写入TensorBoard、启动TensorBoard以及如何通过网页查看日志文件。
126 0
|
2月前
|
缓存 监控 算法
分析慢日志文件来优化 PHP 脚本的性能
分析慢日志文件来优化 PHP 脚本的性能
08-06-06>pe_xscan 精简log分析代码 速度提升一倍
08-06-06>pe_xscan 精简log分析代码 速度提升一倍

相关产品

  • 日志服务