首页 > 解决方案 > 使用基于日志的指标和正则表达式创建分布指标

问题描述

我正在尝试创建从某些日志中的字符串中提取的指标。

我正在创建一个新的分发日志指标。我正在应用过滤器来获取正确的日志。过滤器正在工作,因为我可以预览它。

然后我输入我的指标的字段名称。这里没有问题,因为我可以在建议的值中找到它。

现在该字段返回给我一个带有一些查询参数的字符串。我想将这些查询参数之一的值转换为指标。我正在添加一个正则表达式来做到这一点。

我的字符串看起来像这样:https://blabla.com/Name=Foo&Value=123&Version=14这是我的正则表达式Version=([^&]*)

正如建议的那样,我尝试了以下 regex Version=([0-9]+)。输出是一样的。

但该指标不起作用。打开指标资源管理器时,我收到以下消息:

Only numeric metric data can be drawn as a line chart. the data provided cannot be drawn

我在这里缺少什么吗?

#edit1

我尝试了一些更简单的东西。我有一个只返回值的字段。例如"348",如果我正在查看日志。我尝试使用以下正则表达式基于此字段构建分布指标([0-9.]+),但我遇到了同样的问题。输出似乎没有被读取为数字数据。

#edit2

添加一些插图

带有 requestSize 字段的日志

在此处输入图像描述

使用正则表达式设置基于日志的指标

在此处输入图像描述

和输出

在此处输入图像描述

标签: regexgoogle-cloud-platformgoogle-cloud-stackdrivergoogle-cloud-logginggoogle-cloud-monitoring

解决方案


正如@c69 所提到的,您可以使用热图绘制具有分布值的指标。热图使用颜色来表示分布中的值。使用heatmaps,您可以覆盖百分位线,并且可以将这些图表配置为仅显示异常值。

如果要使用折线图,必须将直方图转换为数值。执行此转换的一种方法是绘制分布的特定百分位数。

计算分布度量的百分位值,算法取决于桶数、桶宽度和直方图的形状:

  • 第 50、95 和 99 个百分位值总是不同的。但是,它们可能在同一个存储桶中显示不同的百分位数。

  • 百分位数不是从测量中生成的,因为这些值不可用。

  • 桶的宽度决定了计算的百分位数和测量值之间的最大误差。

  • 直方图中的样本数量很重要。例如,如果此数字小于 20,则第 95 个和第 99 个百分位数始终在同一个存储桶中。

  • 对于任何分布指标,您都可以使用 Cloud Monitoring API 来确定用于该指标的存储桶模型。由于此模型带有时间戳,因此服务可以更改存储桶模型。

有关绘制分布度量的更多信息,请参阅链接。


推荐阅读