工程

通过 Kibana 中的公式和时间旅行可解答的十大常见问题

Kibana 让您能够轻松地对自己的全部数据进行操作,释放数据的强大潜能——询问并解答问题以及遵循分析流程。很多时候,要想回答您的问题,都需要基于所查询的数据进行计算。借助公式,您可通过数学运算组合使用多个聚合字段,创建您独有的指标。

此外,跨时空探究并重新审视您的数据可赋予您强大能力,让您获得历史背景并理解有关现状的更多洞察。

在下面的部分,我们将会介绍 10 个示例问题;使用 Kibana 中的仪表板数据和地图可视化,借助公式、时间移位和跨时空探究数据,这些问题都能得到解答。您可以使用自己的数据或者 Kibana 的样本数据集跟着做。有问题?请前往我们的论坛

不妨先看看下面的列表!

  1. 错误比例在上升吗?
  2. 性能相较于上周怎么样?
  3. 该数据与同行相比怎么样?
  4. 对我的均值影响最大的是什么?
  5. 相较于历史数据,原始损益是多少?
  6. 以过往性能作为基准,损益的比例是多少?
  7. 数据是如何变成现在这样的?
  8. 我如何能够跨空间以互动方式探索仪表板?
  9. 该指标经过平均后是多少?
  10. 在上个期间,我们行业所特有的计算值(例如“净推荐值”)是多少?

1) 错误比例在上升吗?

比率用处很大,因为比率能够展示相对于整体而言所占的比例,也能够回答使用原始计数无法回答的问题:“我之所以在这个测量指标上看到增长,是因为我获得的整体数据变多了吗?” 构建比率的方法是筛选出您的一个子数据集,然后将其与您未经筛选的整体总值进行对比。可以尝试在自定义公式中将 KQL 作为筛选条件,来实时创建您的比率。

下面的示例显示了相对于全部的唯一身份用户,遇到 HTTP 错误代码(响应代码大于 HTTP 200)的唯一身份用户所占的比例。为了帮助得出更多洞察,该可视化将一天中的时间作为行,将一周中的日期作为列。如果您的数据中没有这些字段,您可以随时将它们作为运行时字段添加进去。 

unique_count(clientip, kql='response.keyword > 200') / unique_count(clientip)

Using formulas in Kibana Lens for ratios and visualizing with color-by-value.

按一天中的时间和一周中的日期列出的错误比率表格

可视化练习:比率

当对比率进行可视化时,需应用百分比值格式。在您指标的名称中使用“比率”一词。如果您可视化的是诸如错误比率等指标,您不妨在表格中按照一天中的时间和一周中的日期来列出,这样可能会有所帮助。通过比率,均值可以提供有关整列内容的洞察(在本例中,一周中每天的平均错误率)。

2) 性能相较于上周怎么样?

同比增长率能够向您展示当前相对于过去的百分比;如是 100%,则表示保持原样。 

下面的示例显示了相较于上周,带宽增长至 14 倍 (1400%)。

median(bytes) / median(bytes, shift='1w')

Formulas in Kibana Lens for showing change week over week over time.

一段时间以来带宽变化的周同比增长率

可视化练习:同比增长率 

对几乎任何可视化而言,同比增长率都特别实用。看一段时间内的同比增长率之所以实用,是因为能确定在一段时间内期间变化本身是否发生了变化。该计算会输出另一个百分比,所以不要忘记值的格式,如果您的数据在线状图上很少,则“线性”缺失值选项的视觉冲击感最小。

3) 该数据与同行相比怎么样?

通过使用整体总和,您可以将任何数据展示为相对于总值的比例,从而更轻松地进行比较。 

在下面的示例中,我们可以看到“ceph”图片产生了最多的数据,这里我们选择不看计数,而是选择把值看作百分比。

count() / overall_sum( count() )

Formulas in Kibana Lens for visualizing percents of overall sums for comparisons

按容器图片分类的基础架构数据百分比

可视化练习:占整体总和的百分比

通过使用公式创建一个相对于整体总值的百分比,您能够使用任何可视化来展示部分对整体数据,而之前只有树形图、饼图和圆环图能够提供此功能。如果您想确保每个数据点都可读,可以用一个水平柱形来显示占总体的百分比。

Treemaps in Kibana树形图、圆环图和饼图虽然可以自动产生数据百分比,但可读性却不好

4) 对我的均值影响最大的是什么?

整体均值等函数可以让您与完整报告中所有值的平均值进行数学比较。 

在这个示例中,我们可以看到哪一品类的表现优于全体销售的整体均值,其中两个服装品类的表现都优于整体均值。

sum(taxless_total_price) - overall_average(sum(taxless_total_price))

Using formulas to visualize deviation of sum

各品类与平均销售额的偏差

可视化练习:偏差

对以 0 为中心点的指标进行可视化时,使用水平柱形尤为有用。不要忘记给指标起一个易理解的名称。 

5) 相较于历史数据,原始损益是多少?

时移差异会与过去的同一指标进行对比。很有用的一种算法是您可以从当前值中减去过去值,从而得到一个以零为中心的可视化——正值表示在过去的基础上有增长。 

这里的例子是 Kubernetes 节点相比于 6 小时前的平均 CPU 使用情况。这个示例使用除法将 CPU 纳核转变为核(注:一种很好的方法是通过运行时字段将此数据作为一个额外的指标转换添加进去,以让其他用户能够在字段列表中找到,而不需要通过公式来实现。)。 

(
   average(kubernetes.node.cpu.usage.nanocores)
   - average(kubernetes.node.cpu.usage.nanocores, shift='6h')
) / 1000000000

Time-shifted differences with formulas in Kibana

相较于 6 小时前节点 CPU 核利用情况的变化 

可视化练习:时移差异和变更单位

当最“需要关注的”数字是位于可视化顶部的一个大值时,可以将数轴移到可视化的顶部,这能够起到一定的帮助作用。 

6) 以过往性能作为基准,损益的比例是多少?

变化百分比与时移差异稍有不同,能够允许您将增长看作过去值的百分比,而不是原始值之间的差异。讨论增长时,这种方法很流行。 

Percentage change calculation

变化百分比计算的示例

下面的示例显示了 Kubernetes CPU 使用情况的变化百分比。 

(
   (
   average(kubernetes.node.cpu.usage.nanocores)
   - average(kubernetes.node.cpu.usage.nanocores, shift='3d')
   ) /
   (
   average(kubernetes.node.cpu.usage.nanocores, shift='3d')
   )
)

Using formulas for percentage change

相较于 3 天前,节点 CPU 利用情况的变化百分比

可视化练习:变化百分比

如果使用“百分比”值格式,则您无需将该值乘以 100。如果有空间,值标签能为可视化提供辅助信息。 

7) 数据是如何变成现在这样的?

地图是理解您数据的地理背景的最好方式。但地图就是一张快照——它可能代表过去 15 分钟的状况,也可能代表去年的状况。实际上,如果您以分钟为单位或者以天为单位,您的地图可能会讲述一个完全不同的故事。借助时间滑块,您可以回看指标并查看一段时间以来每个时间增量单位发生的变化。您可能会找到之前未被检测到的模式,或者发现一个需要深度调查的异常。时间滑块能够展示您的数据是如何到达它今天的位置的。 

Time slider in Elastic Maps

Elastic Maps 中的时间滑块控制

8) 我如何能够跨空间以互动方式探索仪表板?

有时候,您的问题的答案取决于地点。如果您在为他人创作仪表板,可以考虑让用户将地图作为整个仪表板的一个筛选器。尝试搭配地图在仪表板上对关键指标进行可视化。这能够让任何人在进行空间筛选的同时对非空间指标进行可视化,是进行对比并找出异常的一种强大方法。

Filter your dashboard data using Maps

将地图作为仪表板的一个筛选条件

9) 单位效率如何?

可以使用自定义公式来减少汇总数据,从而得出单位指标。这一切都取决于您的数据进来时的样子,都有哪些指标,您数据中的“单位”是什么。 

下面的示例显示了基于周期性间隔(例如每 30 秒)的云指标遥测数据。指标总数(例如 CPU 利用率)和总数所代表的事件数量(请求),再加上公式,能够让我们确定每个请求的平均 CPU 使用率,并完成很多事情,例如在负载增加时确定新指标在一段时间内的趋势以理解效率。在生成的可视化中,“波谷”表明系统在重负载下效率变高了。

average(kubernetes.pod.cpu.usage.node.pct) //单个请求的
counter_rate(max(nginx.stubstatus.requests)) //平均指标

Using formulas for finding average metrics per unit一段时间内单个请求的平均 CPU 利用率

可视化练习:单位

如果您使用单位指标,确保您在指标名称中包含所使用的指标聚合“单位”二字。一种实用的方法是,可以在单独的仪表板面板和系列中对公式所包含的单位进行可视化。

10) 在上个期间,我们行业所特有的计算值(例如“净推荐值”)是多少?

假设您所在组织采用了一个通过特定方法计算得出的特定指标。例如,如果您的数据包含调查问题,有些组织喜欢计算“净推荐值”,计算方法是用“推荐者”(在问题标尺上选择前两个选项)的百分比减去“贬损者”(在问题标尺上选择最后两个选项)的百分比,进而得出一个介于 -100% 和 100% 之间的分数。这种业务指标通过一个公式即可轻松得出,因为公式是在报告时进行计算的,所以您可以随着公司指标和定义的演变轻松地对公式进行重定义。

Calculating industry-specific metrics with formulas

计算行业所特有的指标,例如净推荐值

您有自己的数据问题?

注册 Elastic Cloud 的免费试用计划并尝试亲自解决这些示例中的问题,或免费下载 Elastic Stack 的自管型版本。如果您有更多入门相关问题,请前往 Kibana 论坛,或者也可以查看 Kibana 文档指南。