Kibana 中用公式和时间旅行回答的 10 个常见问题
Posted Elastic 中国社区官方博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kibana 中用公式和时间旅行回答的 10 个常见问题相关的知识,希望对你有一定的参考价值。
Kibana 创建了简单的方法来有效地处理你的所有数据 — 提出和回答问题并跟踪分析流程。 很多时候,你的问题的答案需要根据查询数据进行计算。 公式允许你通过使用数学运算组合多个聚合字段来创作自己的指标。
此外,在时间和空间中移动和重放数据是获取历史背景和了解关于现在的更多见解的有效方法。
在以下部分中,你将找到 10 个问题示例,你可以通过公式、时移和及时浏览数据,使用 Kibana 中的仪表板数据和地图可视化来回答这些问题。 尝试跟随你自己的数据或使用 Kibana 的示例数据集。 有问题吗? 前往我们的讨论论坛。
在名单上:
- 错误的比例在增加吗?
- 表现与上周相比如何?
- 这些数据与同行相比如何?
- 对我的平均水平影响最大的是什么?
- 与历史相比,原始收益/损失是多少?
- 收益/损失占过去业绩的百分比是多少?
- 数据是如何到达现在的位置的?
- 如何以交互方式探索空间中的仪表板?
- 这个指标的单位版本是什么?
- 我对上一时期的行业特定计算(例如“净推荐值”)是什么?
错误的比例在增加吗?
比率很有用,因为它们可以帮助显示占总体总数的比例,并回答原始计数无法回答的问题:“我是否看到这个指标的增加是因为我获得了更多的总体数据?” 可以通过过滤数据的子集并将其与未过滤的总体数据进行比较来构建比率。 尝试使用 KQL 在自定义公式中充当此过滤器,以即时构建您的比率。
以下示例显示了遇到 HTTP 错误代码(响应代码大于 HTTP 200)的唯一用户与整体唯一用户的比率。 为了获得更多洞察力,可视化将一天中的小时作为行,将一周中的某天作为列。 如果你的数据缺少这些字段,您可以随时将它们添加为运行时字段。
在本示例中,我们需要导入 Kibana 自带的数据集 kibana_sample_data_logs:
这样就导入了 kibana_sample_data_logs 数据集。我们可以利用 Lens 来创建一个 table 可视化:
我们可以参考文章 “Kibana:在 Lens 和 Discover 中轻松地创建 runtime fields 以分析数据 - 7.13 版本” 来创建所需要的 runtime fields。我们来创建一个叫做 day_of_week 的 runtime field:
在上面,我们输入如下的代码:
ZonedDateTime input = doc['timestamp'].value;
String output = input.format(DateTimeFormatter.ofPattern('e')) + ' ' + input.format(DateTimeFormatter.ofPattern('E'));
emit(output);
我们可以在 Lens 中看到一个新增加的 day_of_week 字段:
我们可以看到如下的画面:
在上面,我们输入如下的脚本:
unique_count(clientip, kql='response.keyword > 200') / unique_count(clientip)
我们最终实现如上所示的可视化图。
可视化实践:比率
可视化比率时,应用百分比值格式。 在你的指标名称中使用 “ratio”。 如果你正在可视化诸如错误率之类的内容,那么在表格中将其与一天中的某个小时和一周中的某天显示出来会很有用。 通过比率,平均值可以提供列级别的洞察力(在这种情况下,是一周中某天的平均错误率)。
表现与上周相比如何?
一个时期内的同比将为你提供现在与过去相比的百分比表示,其中 100% 是完全匹配。
该示例显示,与前一周相比,带宽增加了 14 倍 (1400%)。
median(bytes) / median(bytes, shift='1w')
关于这个的实践,你可以参考我的另外一篇文章 “Kibana:如何使用 Kibana 时间偏移、高级公式和动态颜色 - 7.14”。在文章中,有详细的描述该如何实现这个。
可视化实践:一段时间内同比
一段时间内同比几乎可用于任何可视化。 随着时间的推移查看一段时间内的时间段以查看期间变化本身是否随着时间的推移而变化可能很有用。 此计算输出另一个百分比,因此不要忘记值格式,如果你的数据在折线图上很稀疏,则 “linear” 默认选项在视觉上的破坏性最小。
这些数据与同行相比如何?
使用 overall sums 允许你将任何数据显示为总数的一部分,以便于比较。
在下面的示例中,我们可以看到生成最多数据的 “ceph” 图像,而不必查看计数,我们可以看到以百分比表示的值。
count() / overall_sum( count() )
可视化实践:占总和的百分比
使用公式构建总体总数的百分比允许任何可视化呈现与整体数据的比例,而以前只有树形图、饼图和甜甜圈提供此功能。 当你想要确保每个数据点都可读时,你可以使用水平条来显示总数的百分比。
Tremaps、Donuts 和 Pie 会自动生成数据的百分比,但可能会错过可读性
对我的平均水平影响最大的是什么?
诸如整体平均值之类的函数允许你对完整报告中所有值的平均值进行数学比较。
在这个例子中,我们可以看到哪些类别的表现优于总销售额的整体平均水平,两个服装类别均高于整体平均水平。
sum(taxless_total_price) - overall_average(sum(taxless_total_price))
产品类别与平均销售额的偏差。
可视化实践:偏差
在可视化以 0 为中心的度量时,使用水平条特别有用。不要忘记给出一个描述性的度量名称。
与历史相比,原始收益/损失是多少?
时移差异可与时移后的同一指标进行比较。 从现在中减去过去会很有用,这会给你一个以零为中心的可视化——正数是过去的增加。
这里我们有一个 Kubernetes 节点上平均 CPU 使用率与 6 小时前相比的示例。 此示例使用除法将 CPU 纳米核心数转换为核心数(注意,运行时字段是将其添加为其他用户在字段列表中查找的额外指标转换的好方法,而不必在公式中执行此操作)。
(
average(kubernetes.node.cpu.usage.nanocores)
- average(kubernetes.node.cpu.usage.nanocores, shift='6h')
) / 1
与 6 小时前相比,节点 CPU 核心利用率发生了变化。
可视化实践:时移差异和改变单位
当最 “相关” 的数字是可视化顶部的大数字时,将轴移动到可视化顶部会有所帮助。
收益/损失占过去业绩的百分比是多少?
对时移差异(% 变化)的看法略有不同,可以让你看到过去值的百分比增加,而不是原始差异。 这在谈论增长时很流行。
示例百分比变化计算。
以下示例显示了 Kubernetes 的 CPU 使用率变化百分比。
(
(
average(kubernetes.node.cpu.usage.nanocores)
- average(kubernetes.node.cpu.usage.nanocores, shift='3d')
) /
(
average(kubernetes.node.cpu.usage.nanocores, shift='3d')
)
)
与 3 天前相比,节点 CPU 利用率的变化百分比
可视化实践:百分比变化
如果你使用“百分比”值格式,则不需要将值乘以 100。如果有空间,值标签可以帮助补充可视化效果。
数据是如何到达现在的位置的?
地图是了解数据地理环境的最佳方式。 不过,地图只是快照——它可能代表过去 15 分钟或去年。 事实上,如果你逐分钟或日复一日地查看地图,你的地图可能会讲述不同的故事。 使用时间滑块,你可以回放指标并查看每个增量时间单位随时间的变化。 你可能会发现以前未被发现的模式或需要进一步调查的异常情况。 时间滑块显示你的数据今天如何到达其位置。
Elastic Maps 中的时间滑块控件
关于这个的具体操作实践你可以参阅我的另外一篇文章 “Kibana:如何使用 Kibana 时间偏移、高级公式和动态颜色 - 7.14”。
如何以交互方式探索空间中的仪表板?
有时,你的问题的答案取决于在哪里。 如果你正在为他人创作仪表板,请考虑启用将地图用作整个仪表板的过滤器的功能。 尝试在地图旁边的仪表板上可视化关键指标。 这允许任何人在空间过滤的同时可视化非空间指标,并且可以成为进行比较和发现异常的有效方法。
地图作为仪表板的过滤器
这个指标的单位版本是什么?
自定义公式可用于减少汇总数据以获取每个单位的指标。 这完全取决于你的数据如何输入、指标是什么以及您的数据中的“单位”是什么。
下面的示例显示了定期间隔(例如每 30 秒)的云指标遥测。 指标总数(例如 CPU 使用率)和总数代表的事件数(请求),通过一个公式,我们可以确定每个请求的平均 CPU 使用率,并做一些事情,例如随着时间的推移新指标的趋势,以了解负载增加时的效率 . 在最终的可视化中,“山谷”显示系统在重负载下变得更加高效。
average(kubernetes.pod.cpu.usage.node.pct) //average metric
counter_rate(max(nginx.stubstatus.requests)) //per request
一段时间内每个请求的平均 CPU
可视化实践:每单位
如果你使用的是每单位指标,请确保在指标名称中包含正在使用的指标的聚合和“每单位”。 在单独的仪表板面板或系列中可视化公式中的单位会很有用。
我对上一时期的行业特定计算(例如“净推荐值”)是什么?
假设你的组织采用了以特定方式计算的特定指标。 例如,如果你的数据包含调查问题,一些组织喜欢通过计算 “推荐者” 人数的百分比(在量表问题中得分最高的 2 个选项)减去 “批评者” 的百分比来计算 “净推荐人分数” (对量表问题的最低 2 个选项进行评分)以在 -100% 到 100% 之间获得一个分数。 这种业务指标就像公式一样简单,而且由于公式是在报告时计算的,因此你可以随着业务发展其指标和定义而轻松地重新定义它。
计算特定于行业的指标,例如净推荐值
有你自己的数据问题吗?
通过注册免费试用 Elastic Cloud 或免费下载 Elastic Stack 的自我管理版本,亲自尝试这些示例。 如果你对入门还有其他疑问,请访问 Kibana 论坛或查看 Kibana 文档指南。
参考:
【1】https://www.elastic.co/blog/kibana-10-common-questions-formulas-time-series-maps
以上是关于Kibana 中用公式和时间旅行回答的 10 个常见问题的主要内容,如果未能解决你的问题,请参考以下文章
Kibana:如何使用 Kibana 时间偏移高级公式和动态颜色 - 7.14
Kibana:如何使用 Kibana 时间偏移高级公式和动态颜色 - 7.14