Kibana:通过分步教程学习构建仪表板和创建数据可视化图表

通过循序渐进的教程,学习如何构建仪表板(Dashboard)和创建 数据可视化 图表。这些教程将引导你完成常见的应用场景。

教程使用示例数据,帮助你快速上手。你也可以根据自己的实际需求,灵活运用这些技术来分析和可视化自己的数据。

加载数据

搜索 Integration:

这样,我们就安装了 Sample web logs。

创建一个简单的仪表板来监控网站日志

学习如何使用自己的数据创建仪表板的几种最常见方法。

本教程以监控网站流量的数据分析师的视角,使用示例 Web 日志数据进行演示。不过,你也可以将这些技术应用于任何类型的数据。

完成本教程后,你将拥有一个全面展示示例 Web 日志数据的仪表板,能够监控和分析访客数量、流量来源、HTTP 响应状态码以及访问者的地理位置分布等关键指标。

创建仪表板

  1. 进入 Dashboards(仪表板) 页面。

  2. 点击 Create dashboard(创建仪表板)。

  3. 将时间筛选器设置为 Last 90 days(最近 90 天)。

打开可视化编辑器并熟悉数据

打开可视化编辑器,然后确认显示了正确的字段。

  1. 创建 可视化图表 。
  • 在应用程序菜单中,选择 Add(添加)> Visualization(可视化)。

点击 Create visualization(创建可视化)。

  1. 确认数据视图。

确保当前显示的数据视图为 Kibana Sample Data Logs(Kibana 示例日志数据)。

在本教程中,你将使用以下字段创建可视化图表:

  • Records:记录数

  • timestamp:时间戳

  • bytes:字节数

  • clientip:客户端 IP 地址

  • referer:来源页面(Referer)

点击字段名称,可以查看该字段的更多详细信息,例如出现频率最高的值及其分布情况。

创建你的第一个可视化图表

选择一个你希望分析的字段,例如 clientip(客户端 IP 地址)。

如果只需要分析 clientip 字段,可以使用 Metric(指标) 可视化图表,将该字段的统计结果以数字形式展示。

对于 clientip 字段,唯一可用的数值聚合函数是 Unique count(唯一值计数),也称为 Cardinality(基数),用于估算该字段中不同值的数量。

1)打开 Visualization type (可视化类型) 下拉菜单,然后选择 Metric(指标)。

2)从 Available fields(可用字段) 列表中,将 clientip 字段拖放到工作区(Workspace)或图层面板(Layer Pane)中。

在图层面板(Layer Pane)中,会显示 Unique count of clientip(clientip 唯一值计数),因为可视化编辑器会自动对 clientip 字段应用 Unique count(唯一值计数) 函数。Unique count 是唯一适用于 IP 地址的数值聚合函数。

3)在图层面板中,点击 Unique count of clientip。

  1. 展开 Primary metric(主要指标),进入 Appearance(外观) 设置,并在 Name(名称) 字段中输入 Unique visitors(独立访客数)。

  2. 点击 Close(关闭)。

4)点击 Save and return(保存并返回)。

查看指标随时间的变化趋势

有两种快捷方式可以查看指标随时间的变化趋势。

当你将数值字段拖放到工作区(Workspace)时,可视化编辑器会自动添加数据视图(Data View)中的默认时间字段。

使用 Date histogram(日期直方图) 函数时,你可以通过将其他时间字段拖放到工作区,替换当前使用的时间字段。

要将 bytes(字节数) 字段随时间的变化情况可视化,请按照以下步骤操作:

  1. 创建可视化图表。
  • 在应用程序菜单中,选择 Add(添加)> Visualization(可视化)。

在仪表板工具栏中,点击 Create visualization(创建可视化)。

  1. 添加 bytes 字段。

从 Available fields(可用字段) 列表中,将 bytes 字段拖放到工作区。

可视化编辑器会自动创建一个柱状图,使用以下两个字段:

  • timestamp(时间戳):作为横轴,表示时间。

  • Median of bytes(字节数中位数):作为纵轴,表示每个时间区间内 bytes 字段的中位数。

  1. 放大查看数据。

在柱状图上,按住鼠标左键并拖动光标,选择需要查看的时间范围,即可放大该时间区间内的数据。

为了更直观地展示 Median of bytes(字节数中位数) 随时间的变化趋势,可以将可视化类型更改为 Line(折线图)。

在图层面板(Layer Pane)中,打开 Layer visualization type(图层可视化类型) 菜单,然后选择 Line(折线图)。

调整最小时间间隔

  1. 在图层面板中,点击 timestamp(时间戳)。

  2. 将 Minimum interval(最小时间间隔) 设置为 1d(1 天),然后点击 Close(关闭)。

你可以增大或减小最小时间间隔,但不能将其设置为低于 Advanced Settings(高级设置) 中配置的最小值。

隐藏坐标轴标签

为了节省仪表板上的显示空间,可以隐藏坐标轴标题。

  1. 打开 Left axis(左侧坐标轴) 菜单,然后在 Axis title(坐标轴标题) 下拉菜单 中选择 None(无)。

查看字段中出现频率最高的值

创建一个可视化图表,展示网站中 request.keyword 字段最常见的值,并按照 独立访客数(Unique visitors)进行排名。

要创建此可视化图表,应使用 Top values of request.keyword(request.keyword 的高频值),并按照 Unique count of clientip(clientip 唯一值计数)进行排序,而不是按照 Count of records(记录数)排序。

Top values(高频值)函数可以根据另一个聚合函数的计算结果,对字段中的不同值进行排名。

  • Count(计数):按照每个值出现的次数进行排名,找出出现频率最高的值。

  • Sum(求和):按照每个值对应的数值总和进行排名,找出总和最大的值。

创建可视化图表

  1. 创建可视化图表。
  • 在应用程序菜单中,选择 Add(添加)> Visualization(可视化)。

在仪表板工具栏中,点击 Create visualization(创建可视化)。

  1. 添加 clientip 字段。

从 Available fields(可用字段) 列表中,将 clientip 字段拖放到图层面板中的 Vertical axis(纵轴) 字段区域。

可视化编辑器会自动应用 Unique count(唯一值计数) 聚合函数。

注意: 如果直接将 clientip 拖放到工作区(Workspace),编辑器可能会将其添加到错误的坐标轴上。

  1. 添加 request.keyword 字段。

将 request.keyword 字段从可用字段列表拖放到工作区(Workspace)中。

当你将文本字段或 IP 地址字段拖放到工作区(Workspace)时,可视化编辑器会自动添加 Top values (高频值)函数,并默认按照 Count of records(记录数)进行排名,以展示出现频率最高的值。

由于 request.keyword 字段包含较长的文本内容,图表无法正常显示这些标签。

你可以尝试使用编辑器提供的 Suggestions(推荐可视化),但这些推荐图表同样存在长文本显示问题。

因此,展示长文本字段的最佳方式是使用 Table(表格)可视化图表。

  1. 打开 Visualization type(可视化类型) 下拉菜单,然后选择 Table(表格)。

2)在图层面板(Layer Pane)中,点击 Top 5 values of request.keyword(request.keyword 出现频率最高的 5 个值)。

  1. 在 Number of values(值的数量) 字段中,输入 10。

  2. 在 Name(名称) 字段中,输入 Page URL(页面 URL)。

  3. 点击 Close(关闭)。

比较部分文档与全部文档的数据

创建一个比例可视化图表,帮助你判断:用户从小于 10KB 的文档中传输的字节数,是否多于从大于 10KB 的文档中传输的字节数。

创建可视化图表

  1. 创建可视化图表。
  • 在应用程序菜单中,选择 Add(添加)> Visualization(可视化)。在仪表板工具栏中,点击 Create visualization(创建可视化)。
  1. 从 Available fields(可用字段) 列表中,将 bytes 字段拖放到图层面板中的 Vertical axis(纵轴) 区域。

  2. 在图层面板中,点击 Median of bytes(字节数中位数)。

  3. 点击 Sum(求和) 快捷函数,将聚合方式从中位数改为求和,然后点击 Close(关闭)。

  4. 从 Available fields(可用字段) 列表中,将 bytes 字段拖放到图层面板中的 Breakdown(分类拆分) 区域。

使用自定义区间划分文件大小

如果需要根据字段的数值范围筛选文档,可以使用 Intervals(区间) 函数。

如果筛选范围不是数值类型,或者查询需要包含多个条件,则可以使用 Filters(过滤器) 函数。

接下来,设置文件大小区间:

  1. 在图层面板中,点击 bytes 字段。

  2. 点击 Create custom ranges(创建自定义区间),在 Ranges(范围) 字段中输入以下内容,然后按回车键确认:

  • Ranges(范围):0 → 10240

  • Label(标签):Below 10KB(小于 10KB)

  1. 点击 Add range(添加区间),输入以下内容,然后按回车键确认:
  • Ranges(范围):10240 → +∞

  • Label(标签):Above 10KB(大于 10KB)

通过上述设置,我们可以将数据划分为两个文件大小区间,并分别计算各区间内传输的总字节数,从而比较它们在整体数据传输量中所占的比例。

查看数值字段的分布情况

分析数值字段的分布情况,可以帮助你发现数据中的规律。

例如,你可以分析网站在一天中不同小时的流量分布,从而确定执行日常系统维护的最佳时间段。

创建可视化图表

  1. 创建可视化图表。
  • 在应用程序菜单中,选择 Add(添加)> Visualization(可视化)。在仪表板工具栏中,点击 Create visualization(创建可视化)。
  1. 添加 bytes 字段。

从 Available fields(可用字段) 列表中,将 bytes 字段拖放到图层面板中的 Vertical axis(纵轴) 区域。

  1. 配置字节数聚合方式。

在图层面板中,点击 Median of bytes(字节数中位数)。

  1. 点击 Sum(求和) 快捷函数,将聚合方式更改为求和。

  2. 在 Name(名称) 字段中输入 Transferred bytes(传输字节数)。

  3. 在 Value format(数值格式) 下拉菜单中,选择 Bytes (1024),然后点击 Close(关闭)。

  4. 添加时间字段。

从 Available fields(可用字段) 列表中,将 hour_of_day(一天中的小时) 字段拖放到图层面板中的 Horizontal axis(横轴) 区域。

  1. 调整直方图的区间粒度。

在图层面板中,点击 hour_of_day,然后拖动 Intervals granularity(区间粒度) 滑块,直到横轴以每小时为间隔显示数据。

这样,你就可以直观地查看一天中各个小时的数据传输量分布,识别网站流量较低的时段,为安排日常维护工作提供参考。

创建多层级图表

Table(表格) 和 Proportion(比例) 类型的可视化图表支持使用多个聚合函数。

例如,如果希望按照网站流量来源和用户地理位置对数据进行分组分析,可以结合使用 Filters(过滤器) 和 Top values(高频值) 函数。

创建可视化图表

  1. 创建可视化图表。

    • Serverless 和 Stack 9.2+

      在应用程序菜单中,选择 Add(添加)> Visualization(可视化)。

    • Stack 9.0--9.1

      在仪表板工具栏中,点击 Create visualization(创建可视化)。

  2. 选择可视化类型。

    打开 Visualization type(可视化类型) 下拉菜单,然后选择 Treemap(矩形树图)。

  3. 添加指标字段。

    从 Available fields(可用字段) 列表中,将 Records(记录数) 拖放到图层面板中的 Metric(指标) 区域。

  4. 添加分组字段。

    在图层面板的 Group by(分组依据) 区域,点击 Add or drag-and-drop a field(添加字段或拖放字段)。

为每个网站流量来源创建过滤器

  1. 点击 Filters(过滤器)。

  2. 点击 All records(所有记录),在查询栏中输入以下内容,然后按回车键确认:

    • KQL:referer : *facebook.com*

    • Label(标签):Facebook

  3. 点击 Add a filter(添加过滤器),在查询栏中输入以下内容,然后按回车键确认:

    • KQL:referer : *twitter.com*

    • Label(标签):Twitter

  4. 再次点击 Add a filter(添加过滤器),在查询栏中输入以下内容,然后按回车键确认:

    • KQL:NOT referer : *twitter.com* OR NOT referer: *facebook.com*

    • Label(标签):Other(其他)

  5. 点击 Close(关闭)。

添加用户地理位置分组

  1. 从 Available fields(可用字段) 列表中,将 geo.srcdest(来源与目标地理位置) 字段拖放到工作区(Workspace)。

  2. 调整 Group by(分组依据)的顺序。

    在图层面板中,拖动 Top 3 values of geo.srcdest(geo.srcdest 出现频率最高的 3 个值),将其移动到分组列表的第一位。

这样,你就可以创建一个多层级的 Treemap(矩形树图),按照用户地理位置和网站流量来源展示访问记录的分布情况。

注意: 原文中 Other 过滤器使用了 OR,这可能导致部分 Facebook 或 Twitter 流量也被归入 Other。如果希望 Other 严格表示既不来自 Facebook、也不来自 Twitter 的流量,应使用:

调整仪表板面板布局

调整各个面板的大小和位置,使所有面板都能显示在仪表板中,而无需滚动页面。

缩小以下面板的尺寸,然后将它们移动到仪表板的第一行:

  • Unique visitors(独立访客数)

  • Median of bytes(字节数中位数)

  • Sum of bytes from large requests(大请求的总字节数)

  • Website traffic(网站流量)

保存仪表板

现在,你已经创建了一个能够全面展示 Web 服务器数据的仪表板,接下来可以将其保存。

  1. 在应用程序菜单中,点击 Save(保存)。

  2. 在 Save dashboard(保存仪表板) 窗口中,在 Title(标题) 字段输入 Logs dashboard(日志仪表板)。

  3. 勾选 Store time with dashboard(随仪表板保存时间范围),以保存当前设置的时间筛选条件。

  4. 点击 Save(保存)。

保存后,你将被标记为该仪表板的 Creator(创建者)。

如果你或其他用户后续修改了该仪表板,在查看仪表板详细信息时,还可以看到 Last editor(最后编辑者),以了解最近一次修改是由谁完成的。

相关推荐
高级程序源5 小时前
django房屋租赁系统28636-计算机课程设计、毕业设计
python·mysql·elasticsearch·小程序·django·flask·课程设计
Wx-bishekaifayuan8 小时前
springboot大学生就业平台47691-计算机课程设计、毕业设计
java·spring boot·后端·elasticsearch·课程设计·express·旅游
大圣编蚕21 小时前
OpenGL ES 教程:从零开始掌握 3D 渲染
大数据·elasticsearch·3d
回眸不遇1 天前
Elasticsearch嵌套类型nested使用指南<第七十二篇>
大数据·elasticsearch·jenkins
Elasticsearch1 天前
使用 Elastic Stack 丰富邮政地址信息 —— 第三部分
elasticsearch
Elasticsearch1 天前
使用 Elastic Stack 丰富邮政地址信息 —— 第二部分
elasticsearch
可乐ea1 天前
Git 基础设施重建:智能体规模开发下的读写解耦
大数据·git·elasticsearch·分布式存储·git基础设施·智能体规模开发·读写解耦
Elasticsearch1 天前
使用 Elastic Stack 丰富邮政地址信息 —— 第一部分
elasticsearch
ofoxcoding2 天前
借助 CLAUDE.md 约束 Sonnet 5.5 多文件重构行为的提示词实践
大数据·elasticsearch·ai·重构