regex - 使用基于日志的指标和正则表达式创建分布指标
问题描述
我正在尝试创建从某些日志中的字符串中提取的指标。
我正在创建一个新的分发日志指标。我正在应用过滤器来获取正确的日志。过滤器正在工作,因为我可以预览它。
然后我输入我的指标的字段名称。这里没有问题,因为我可以在建议的值中找到它。
现在该字段返回给我一个带有一些查询参数的字符串。我想将这些查询参数之一的值转换为指标。我正在添加一个正则表达式来做到这一点。
我的字符串看起来像这样: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 字段的日志
使用正则表达式设置基于日志的指标
和输出
解决方案
正如@c69 所提到的,您可以使用热图绘制具有分布值的指标。热图使用颜色来表示分布中的值。使用heatmaps,您可以覆盖百分位线,并且可以将这些图表配置为仅显示异常值。
如果要使用折线图,必须将直方图转换为数值。执行此转换的一种方法是绘制分布的特定百分位数。
计算分布度量的百分位值,算法取决于桶数、桶宽度和直方图的形状:
第 50、95 和 99 个百分位值总是不同的。但是,它们可能在同一个存储桶中显示不同的百分位数。
百分位数不是从测量中生成的,因为这些值不可用。
桶的宽度决定了计算的百分位数和测量值之间的最大误差。
直方图中的样本数量很重要。例如,如果此数字小于 20,则第 95 个和第 99 个百分位数始终在同一个存储桶中。
对于任何分布指标,您都可以使用 Cloud Monitoring API 来确定用于该指标的存储桶模型。由于此模型带有时间戳,因此服务可以更改存储桶模型。
有关绘制分布度量的更多信息,请参阅链接。
推荐阅读
- pandas - Pandas groupby with first 没有跳过 None 值
- godaddy-api - 在 goDaddy 域 API 建议中更改货币
- python - 过滤数据框,合并数据并在python中添加计数
- mysql - Docker / WSL / Symfony / MySQL - SQLSTATE [HY000] [2002] 连接被拒绝
- bash - Bash 输出跟踪
- dart - Google Maps Flutter - 折线未显示在地图上
- google-translate - AutoML Translation 的基于 API 密钥的访问?
- amazon-eks - 如何参数化 eksctl 的配置文件?
- ssl - 为 SSL 配置默认虚拟主机(HTTPS 本地主机)
- reactjs - 在 create-react-app 中引用 sass 文件中的静态文件或图像