问题描述
我正在通过收集资源的每个度量标准的默认聚合类型,使用Azure度量标准评估我的Azure资源的运行状况。我可以在SDK的Microsoft.Azure.Management.Monitor.Fluent.Models命名空间中看到MetricValue类,它将为所有Aggregation类型返回double类型的值。
namespace Microsoft.Azure.Management.Monitor.Fluent.Models
{
public class MetricValue
{
public MetricValue();
public MetricValue(DateTime timeStamp,double? average = null,double? minimum = null,double? maximum = null,double? total = null,double? count = null);
public DateTime TimeStamp { get; set; }
public double? Average { get; set; }
public double? Minimum { get; set; }
public double? Maximum { get; set; }
public double? Total { get; set; }
public double? Count { get; set; }
public virtual void Validate();
}
}
我的问题是(考虑双精度数据类型),实际上所有服务的所有Azure指标都有机会返回十进制值吗?我可以看到服务总线度量标准中的消息计数有时返回十进制值。我找不到与我的问题有关的特定文档,需要澄清。谢谢。
解决方法
因为度量可以是任意值,而MetricValue是通用的通用类型/模式,因此需要满足各种度量,有些度量要求尽可能高的精度,很高或很低的值(+ ve或-ve),并且也必须保持不变在基础公共数据存储中(例如Azure Monitor)。现在,尽管某些度量标准可能是整数,具体取决于上下文中的单位(例如,当您说我的请求花费了300毫秒),但某些度量标准却可能不是整数(例如,有20.57 GB的可用磁盘空间)。请记住,除了内置的Azure指标之外,还可以从应用程序中自定义指标,这可能是想象中的任何事情。因此,为了容纳足够的高精度,double
是选择。这说明了平均值,最小值,最大值,总计。但是,为什么计数也为double
,我不确定,但很可能是为了容纳超高数字,以防万一,并且我们不会因为int或long而疲惫。或者它可能是一个时间窗内的计数,该时间窗可以是十进制(每分钟10.6个请求)。