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

本文涉及的产品
对象存储 OSS,20GB 3个月
阿里云盘企业版 CDE,企业版用户数5人 500GB空间
对象存储 OSS,恶意文件检测 1000次 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日志并进行多维度分析。
目录
相关文章
|
14天前
|
缓存 监控 算法
分析慢日志文件来优化 PHP 脚本的性能
分析慢日志文件来优化 PHP 脚本的性能
08-06-06>pe_xscan 精简log分析代码 速度提升一倍
08-06-06>pe_xscan 精简log分析代码 速度提升一倍
|
2月前
|
SQL 监控 关系型数据库
使用 pt-query-digest 工具分析 MySQL 慢日志
【8月更文挑战第5天】使用 pt-query-digest 工具分析 MySQL 慢日志
39 3
使用 pt-query-digest 工具分析 MySQL 慢日志
|
2月前
|
存储 分布式计算 大数据
【Flume的大数据之旅】探索Flume如何成为大数据分析的得力助手,从日志收集到实时处理一网打尽!
【8月更文挑战第24天】Apache Flume是一款高效可靠的数据收集系统,专为Hadoop环境设计。它能在数据产生端与分析/存储端间搭建桥梁,适用于日志收集、数据集成、实时处理及数据备份等多种场景。通过监控不同来源的日志文件并将数据标准化后传输至Hadoop等平台,Flume支持了性能监控、数据分析等多种需求。此外,它还能与Apache Storm或Flink等实时处理框架集成,实现数据的即时分析。下面展示了一个简单的Flume配置示例,说明如何将日志数据导入HDFS进行存储。总之,Flume凭借其灵活性和强大的集成能力,在大数据处理流程中占据了重要地位。
36 3
|
2月前
|
应用服务中间件 Linux nginx
在Linux中,如何统计ip访问情况?分析 nginx 访问日志?如何找出访问页面数量在前十位的ip?
在Linux中,如何统计ip访问情况?分析 nginx 访问日志?如何找出访问页面数量在前十位的ip?
|
2月前
|
监控 安全 关系型数据库
在Linux中,什么是系统日志和应用程序日志?如何分析它们?
在Linux中,什么是系统日志和应用程序日志?如何分析它们?
|
2月前
|
存储 消息中间件 监控
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统ELK、日志收集分析
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统、日志收集分析。日志级别从小到大的关系(优先级从低到高): ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF 低级别的会输出高级别的信息,高级别的不会输出低级别的信息
|
2月前
|
算法 关系型数据库 程序员
第一周算法设计与分析:A : log2(N)
这篇文章介绍了解决算法问题"输入一个数N,输出log2N(向下取整)"的三种编程思路,包括使用对数函数和幂函数的转换方法,以及避免浮点数精度问题的整数逼近方法。
|
3月前
|
消息中间件 Kubernetes Kafka
日志采集/分析
日志采集/分析
57 7
|
2月前
|
存储 数据可视化 Linux
在Linux中,如何使用ELK进行日志管理和分析?
在Linux中,如何使用ELK进行日志管理和分析?

热门文章

最新文章

相关产品

  • 日志服务
  • 下一篇
    无影云桌面