gpt4 book ai didi

azure - 在 azure WADMetric 表中唯一标识 Linux 虚拟机

转载 作者:行者123 更新时间:2023-12-02 06:48:26 25 4
gpt4 key购买 nike

我们正在用 C++ 开发软件,以从 azure WADMetrics 表中检索 Linux 网络信息。目前,我们正在使用 Azure Rest API 来实现此目的。

但是我们遇到的问题是 WADMetric 表可以包含多个虚拟机的数据,而我们目前只知道 Host 值。这映射到 guest 中的主机名,并且它可能不是唯一的。

表中的deploymentid看起来确实唯一标识了机器,但似乎没有办法通过REST api获取它。

如果主机值在机器之间重复,是否有办法识别虚拟机数据?

谢谢,彼得

最佳答案

这些表中不存在部署 ID。

所有 Azure 资源均由其 Azure 资源管理器 (ARM) 资源 ID 标识。该值来自 Windows Azure 诊断 (WAD) 或 Linux 诊断扩展 (LDE) VM 扩展配置中的用户输入。如果您对 https://management.azure.com/ 执行 GET,则可以看到此值。 {资源ID}

PartitionKey 设置为 VM 的编码 ARM 资源 ID。

PartitionKey = EscapeKey(ARM 资源 ID)

private static string EscapeStorageCharacter(char character)
{

    var ordinalValue = (ushort)character;
    if (ordinalValue < 0x100)
    {
     return string.Format(CultureInfo.InvariantCulture, ":{0:X2}", ordinalValue);
    }
    else
    {
        return string.Format(CultureInfo.InvariantCulture, "::{0:X4}", ordinalValue);
    }
}

public static string EscapeKey(string storageKey)
{
StringBuilder escapedStorageKey = new StringBuilder(storageKey.Length);
    foreach (char c in storageKey)
    {
     if (!char.IsLetterOrDigit(c))
        {
         escapedStorageKey.Append(EscapeStorageCharacter(c));
        }
        else
        {
            escapedStorageKey.Append(c);
        }
    }
 
    return escapedStorageKey.ToString();
}

对于RowKey,每个指标值针对两个不同的索引写入两次:

1) [EncodedMetricName]__[UTCTicks_DescendingOrder]

2) [UTCTicks_DescendingOrder]__[EncodedMetricName]

其中 UTCTicks_DescendingOrder 是 DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks 填充到 19 位数字。

如果您尝试按时间读回所有指标数据,则应使用索引 #2。

关于azure - 在 azure WADMetric 表中唯一标识 Linux 虚拟机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43287593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com