10分钟轻松定制网站日志分析大盘

前言

  • 作为站长的你是否也曾想针对站点访问日志信息,分析其中PV、UV、访问地域分布以及访问前十页面等情况。
  • 作为开发者的你是否也想记录应用的日志信息,针对top方法进行优化从而提升应用质量。
  • 作为运维老大的你是否也曾想过实时监控最近1个小时的服务器响应时间变化,请求客户端负载均衡到某一台机器流量否有异常情况等信息,搞一张数据大屏从而更加直观的获取关键信息

你可能需要这样的图表:

10分钟轻松定制网站日志分析大盘

那么阿里云日志服务(Log Service)一定是一个不错的选择!我们提供了日志的一站式解决方案,包含了30多种日志源的采集(Logtail),日志服务的实时分析功能(LogSearch/Analytics),可以使用查询+SQL92语法对日志进行实时分析,并且可以在查询分析结果上支持自带Dashboard、DataVGrafana、Tableua(通过JDBC)、QuickBI等可视化方式。以上截图中的图表就是日志服务自带的仪表盘功能。

点我试用

用户名:sls_reader1@1654218965343050

密码:pnX-32m-MHH-xbm

整体结构

日志服务可视化分析流程如图所示:

10分钟轻松定制网站日志分析大盘

主要分为3个步骤:

  1. 数据采集。日志服务支持客户端、网页、协议、SDK/API(移动、游戏)等多种日志采集方式,所有采集方式均基于Restful API实现,除此之外您也可以通过API/SDK实现新的采集方式,参考文档
  2. 设置数据索引并采用查询分析语法进行查询分析,参考文档
  3. 可视化展示。日志服务提供基于Restful的开放式API,我们可以选择适合的方式对我们的日志数据进行可视化处理,本文将主要阐述日志服务自带的可视化以及仪表盘(Dashboard)功能

区别

日志服务自身的Dashboard有如下特点:

  • 无需事先定义:任何计算方法、任何过滤条件可以应用到任意时间段秒级出图
  • 交互式分析:图表<-->原始日志无缝切换,双向打通
  • 场景化支持:通过数据接入向导直接生成分析大盘,无需复杂配置

图表类型

目前,日志服务提供的可视化功能包含了如下图表类型:

10分钟轻松定制网站日志分析大盘

接下来将分别介绍每种图形适合的场景,然后将我们的日志信息可视化出来。

1. 表格

表格作为最常见的数据展示类型,由一组或多组单元格组成,用于显示数字和其他项以便快速引用和分析,表格中的项被组织为行和列,表格的第一行称为表头,指明表格每一列的内容和意义。

在日志服务中,我们通过查询分析语法得到的结果信息默认以表格方式进行展示。比如我想查看每分钟上传字节总和情况:

* | select  date_format(from_unixtime(__time__ - __time__% 60), '%H:%i:%S') as minute, sum(body_bytes_sent) as sum group by minute order by minute desc limit 100000

可以得到如下表格展示,我们可以利用表头上的排序按钮对某一列进行排序

10分钟轻松定制网站日志分析大盘

2. 折线图

折线图属于趋势类分析图表,一般用于表示一组数据在一个有序数据类别(多为连续时间间隔)上的变化情况,用于直观分析数据变化趋势,提供的图表属性如下:

  • X轴:一般为有序数据类别(时间序列)
  • 左Y轴:可以配置一列或多列对应到左轴数值区间
  • 右Y轴:可以配置一列或多列对应到右轴数值区间(右轴图层高于左轴)
  • 为柱列:将已选择的左Y轴或者右Y轴中的一列以柱状形式表示
  • 图例位置:上右下左
  • 间距:坐标轴距离图表边界距离

如分析在最近15分钟内PV、UV已经平均响应时间变化

* | select  date_format(from_unixtime(__time__ - __time__% 60), '%H:%i:%S') as minutes, approx_distinct(remote_addr) as uv, count(1) as pv, avg(request_time) as avg group by minutes order by minutes asc limit 100000

选择minutes作为X轴,pvuv放在左Y轴,avg为右Y轴并且设置uv为柱状,得到如下图示:

10分钟轻松定制网站日志分析大盘

3. 柱状图

柱状图和折线图类似,但是柱状图描述的是分类数据(而不是折线图的有序数据),回答的是每一个分类中『有多少?』这个问题,提供的图表属性如下:

  • X轴:一般为分类数据
  • Y轴:可以配置一列或多列对应到左轴数值区间
  • 图例位置:上右下左
  • 间距:坐标轴距离图表边界距离

如分析最近15分钟内不同http_referer的访问次数:

* | select  http_referer, count(1) as count group by http_referer

10分钟轻松定制网站日志分析大盘

4. 条形图

条形图即为横向柱状图,适合分析分类数据的top情况,提供的图表属性保持一致

如分析最近15分钟内访问前十的地域信息:

* | select  ip_to_province(remote_addr) as address, count(1) as count group by address order by count desc limit 10

10分钟轻松定制网站日志分析大盘

5. 饼图

饼图用于表示不同分类的占比情况,通过弧度大小来对比各种分类。饼图通过将一个圆饼按照分类的占比划分成多个区块,整个圆饼代表数据的总量,每个区块(圆弧)表示该分类占总体的比例大小,所有区块(圆弧)的加和等于 100%。提供的图表属性如下:

  • 分类:分类数据
  • 数值列:分类数据对应的数值
  • 图例位置:上右下左
  • 间距:坐标轴距离图表边界距离
  • 饼图类型:提供饼图(默认)、环图以及南丁格尔玫瑰图

分析最近15分钟访问方法的分布占比

* | select request_method as method , count(1) as c group by method

饼图:
10分钟轻松定制网站日志分析大盘

环图
10分钟轻松定制网站日志分析大盘

分析最近15分钟访问页面的分布

* | select request_uri as uri , count(1) as c group by uri

南丁格尔玫瑰图:
10分钟轻松定制网站日志分析大盘

6. 数字图

数字图作为最简单直接的数据表现形式,直观清晰地将某一个点上的数据展示出来,一般用于表示某一个时间点上的关键信息。提供的图表属性如下:

  • 数值列:默认选择该列的第一行数据进行展示
  • 颜色:提供字体颜色和背景颜色的colorSelect
  • 文案:字号(12px-100px)、单位、单位字号(12px-100px)、数值描述以及数值描述字号(12px-100px)

如统计最近15分钟的PV:

* | select count(1) as PV

10分钟轻松定制网站日志分析大盘

7. 面积图

面积图是在折线图的基础之上形成的,它将折线图中折线与坐标轴之间的区域使用颜色进行填充,这个填充即为我们所说的面积,颜色的填充可以更好的突出趋势信息,提供的图表属性如下:

  • X轴:一般为有序数据类别(时间序列)
  • Y轴:可以配置一列或多列对应到左轴数值区间
  • 图例位置:上右下左
  • 间距:坐标轴距离图表边界距离

如统计最近15分钟的平均请求时间变化趋势:

* | select date_format(from_unixtime(__time__ - __time__% 60), '%H:%i:%S') as minute, avg(request_time) as request_time group by minute order by minute 

10分钟轻松定制网站日志分析大盘

8. 地图

以地图作为背景,通过图形颜色、图像标记的方式展示地理数据信息。日志服务提供了三种地图方式,分别为:中国地图、世界地图以及高德地图(高德地图分为点图和热力图)提供的图表属性如下:

  • 位置信息:省份(中国地图)或国家(世界地图)或经纬度(高德地图)
  • 数值列:位置信息对应的数据量

日志服务提供了ip地理函数用于地图的绘制,详细参考文档

通过remote_addr来绘制三种地图,统计前十的访问区域

中国地图:

* | select  ip_to_province(remote_addr) as address, count(1) as count group by address order by count desc limit 10

10分钟轻松定制网站日志分析大盘

世界地图:

* | select  ip_to_country(remote_addr) as address, count(1) as count group by address order by count desc limit 10

10分钟轻松定制网站日志分析大盘

高德地图:

* | select  ip_to_geo(remote_addr) as address, count(1) as count group by address order by count desc limit 10

10分钟轻松定制网站日志分析大盘

10分钟轻松定制网站日志分析大盘

9. 流图

不同颜色的条带状分支代表了不同的分类信息,条状带的宽度映射了对应的数值大小。此外,原数据集中的时间属性,映射到X轴上,是一个三维关系的展现。提供的图表属性如下:

  • X轴:一般为有序数据类别(时间序列)
  • Y轴:配置一列数据对应到左轴数值区间
  • 聚合列:需要在第三维上聚合的信息
  • 图例位置:上右下左
  • 间距:坐标轴距离图表边界距离
  • 图表类型:提供面图(默认)、线图以及柱图(层叠)

比如我们统计最近15分钟,不同method方法请求次数随时间变化趋势情况

* | select date_format(from_unixtime(__time__ - __time__% 60), '%H:%i:%S') as minute, count(1) as c,  request_method group by minute, request_method order by minute asc limit 100000

X轴选择minute,Y轴选择c,按照request_method聚合

10分钟轻松定制网站日志分析大盘

10. 桑基图

桑基图 (Sankey Diagram),是一种特定类型的流图,用于描述一组值到另一组值的流向。适合网络流量等场景,通常包含3组值sourcetarget以及valuesourcetarget描述了点的关系,而value描述了该sourcetarget之间边的关系。

数据示例如下:

source target value
node1 node2 14
node1 node3 12
node3 node4 5
... .. ...

桑基图就描述了这组数据的关系:

10分钟轻松定制网站日志分析大盘

图表属性如下:

  • 起点列:描述起始节点
  • 终点列:描述终点节点
  • 数值列:链接起点节点和终点节点的值
  • 间距:坐标轴距离图表边界距离

这里我们举一个负载均衡的例子:

* | select sourceValue, targetValue, sum(streamValue) as streamValue from (select sourceValue, targetValue, streamValue, __time__ from log group by  sourceValue, targetValue, streamValue, __time__ order by __time__ desc) group by sourceValue, targetValue

10分钟轻松定制网站日志分析大盘

11. 词云

词云,是文本数据的视觉表示,由词汇组成类似云的彩色图形,用于展示大量文本数据。 每个词的重要性以字体大小或颜色显示,能最让用户最快速地感知某一些关键词的权重大小。提供图表属性如下:

  • 词列:代表要展示的一组词的信息
  • 数值列:每一个词对应的数值信息
  • 字号:分为最大字号(50px-80px)和最小字号(12px-24px),合理调整字号范围以适应画布

如统计最近15分钟访问hostname的情况:

* | select hostname, count(1) as c group by hostname order by c limit 100

10分钟轻松定制网站日志分析大盘

添加到仪表盘

所有通过查询分析语法获得的可视化图表都可以保存在一个仪表盘(Dashboard)中,再经过灵活的布局调整,就可以做出一张本文第一部分中截图的图表了。

我们可以通过新建标签 -> 仪表盘 中随时查看我们保存好的仪表盘

我们将在3月下旬推出图表和仪表盘嵌入功能,敬请期待

附演示视频

参考

技术支持

10分钟轻松定制网站日志分析大盘

上一篇:日志服务(Log service)6月控制台更新指南


下一篇:SLS 数据加工 vs 自建 Logstash