You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用.NET SDK获取Azure Postgres弹性服务器的已用存储?

获取Azure Postgres Flexible Server已用存储的.NET SDK解决方案

你遇到的问题很常见——Azure Resource Manager的资源数据对象(比如PostgreSqlFlexibleServerData)只包含服务器的配置属性(比如分配的存储大小),而实时的存储使用量属于监控指标,需要通过Azure Monitor的Metrics API来获取,这也是Azure门户显示存储使用率的底层逻辑。

下面是具体的实现步骤:

1. 安装必要的NuGet包

首先需要添加Azure Monitor查询的SDK包:

Install-Package Azure.Monitor.Query
Install-Package Azure.Identity

(Azure.Identity用来处理身份验证,和你之前使用的ARM SDK保持一致的认证方式)

2. 编写代码查询已用存储指标

在原有代码的基础上,添加以下逻辑来获取存储使用量:

using Azure.Monitor.Query;
using Azure.Identity;
using System;
using System.Threading.Tasks;

// 原有获取服务器资源的代码保持不变
ResourceIdentifier resourceGroupResourceId = ResourceGroupResource.CreateResourceIdentifier(subscriptionId, resourceGroupName);
ResourceGroupResource resourceGroupResource = client.GetResourceGroupResource(resourceGroupResourceId);
PostgreSqlFlexibleServerCollection collection = resourceGroupResource.GetPostgreSqlFlexibleServers();
string resourceName = dbmap.RowKey;
PostgreSqlFlexibleServerResource result = await collection.GetAsync(resourceName);

// 初始化Metrics查询客户端
var metricsClient = new MetricsQueryClient(new DefaultAzureCredential());

// 定义查询参数:服务器的资源ID、指标名称、时间范围
string resourceId = result.Id;
var response = await metricsClient.QueryResourceAsync(
    resourceId,
    new[] { "storage_used" }, // 存储已用的指标名称
    new MetricsQueryOptions
    {
        TimeRange = new QueryTimeRange(TimeSpan.FromHours(1)), // 查询最近1小时的数据
        Aggregations = new[] { MetricAggregationType.Average } // 取平均值,也可以用Total
    });

// 解析结果
foreach (var metric in response.Value.Metrics)
{
    foreach (var timeSeries in metric.TimeSeries)
    {
        foreach (var dataPoint in timeSeries.Data)
        {
            // storage_used的单位是字节,转成GB
            double usedStorageGB = dataPoint.Average.Value / (1024 * 1024 * 1024);
            Console.WriteLine($"已用存储: {usedStorageGB:F2} GB");
            Console.WriteLine($"分配存储: {result.Data.StorageSizeInGB} GB");
            Console.WriteLine($"存储使用率: {usedStorageGB / result.Data.StorageSizeInGB * 100:F2}%");
        }
    }
}

关键说明

  • 指标名称storage_used是Azure Postgres Flexible Server官方定义的存储使用量指标,单位为字节。
  • 时间范围可以根据需求调整,比如TimeSpan.FromDays(1)查询最近一天的数据。
  • 聚合方式选择Average是因为存储使用量是随时间变化的数值,取最近一段时间的平均值可以反映当前的使用情况;如果需要某个时间点的精确值,可以调整时间范围为更小的粒度(比如5分钟)并取最新的数据点。
  • 权限要求:你的认证账号需要拥有目标服务器的Monitoring Reader或更高权限,才能读取监控指标。

内容的提问来源于stack exchange,提问作者acart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 20:42:46