本文介绍桑基图操作步骤及案例。

简介

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

基本构成如下:
  • 节点
桑基图具有以下特点:
  • 初始流量和结束流量相同,所有主边宽度的总和与所有分出去的分边宽度总体和近似值,保持流量的平衡。
  • 两列之间边的宽度代表了特定状态下的流量大小,不同的边代表了不同的流量分流情况,它的宽度成比例地显示此边占有的流量。
  • 节点不同的宽度代表了特定状态下的流量大小。
例如以下数据可以用桑基图表示。
sourcetargetvalue
node1node214
node1node312
node3node45
..
使用如下桑基图描述上述数据的关系。桑基图的数据关系

操作步骤

  1. 登录日志服务控制台
  2. 在Project列表区域,单击目标Project。
  3. 日志存储 > 日志库页签中,单击目标Logstore。
  4. 输入查询和分析语句,然后单击15分钟(相对),设置查询和分析的时间范围。

    更多信息,请参见查询和分析

  5. 单击桑基图-001,进入桑基图展示页面。
  6. 属性配置页签中,配置图表属性。
    配置项说明
    起点列描述起始节点。
    终点列描述终点节点。
    数值列起始节点和终点节点之间流量值。
    边距坐标轴距离图表边界距离,包括上边距下边距右边距左边距

普通桑基图示例

如果日志字段包含了sourcetargetvalue,即每条日志本身就是节点和边的关系,可以通过嵌套子查询获取到steamValue的总和。
* | 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
普通桑基图

负载均衡7层访问日志场景

日志服务支持使用前须知,可以直接通过访问日志绘制桑基图。

* | select COALESCE(client_ip, slbid, host) as source, COALESCE(host, slbid, client_ip) as dest, sum(request_length) as inflow group by grouping sets( (client_ip, slbid), (slbid, host))嵌套子查询