如何了解RDS免费存储

问题描述 投票:0回答:2

我最初创建了一个大小为 65GB 的 RDS postgres 实例。 是否可以使用任何 postgres 查询来获取可用空间。

如果没有,我怎样才能达到同样的效果?

提前谢谢您。

amazon-web-services amazon-rds
2个回答
66
投票

有几种方法可以做到这一点

使用 AWS 控制台

转到 RDS 控制台并选择您的数据库所在的区域。单击 显示监控按钮并选择您的数据库实例。将会有一个图表(如下图所示)显示可用存储空间。它可能在图表的第二页或第三页上。

这已记录在AWS RDS 文档中。

Example AWS RDS console

通过 AWS CLI 使用 API

或者,您可以使用 AWS API 从 cloudwatch 获取信息。

我将展示如何使用 AWS CLI 执行此操作。

这假设您已设置 AWS CLI 凭证。我在环境变量中导出

AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
,但是有 有多种方法可以配置 CLI(或 SDKS)

REGION="eu-west-1"
START="$(date -u -d '5 minutes ago' '+%Y-%m-%dT%T')"
END="$(date -u '+%Y-%m-%dT%T')"
INSTANCE_NAME="tstirldbopgs001"

AWS_DEFAULT_REGION="$REGION" aws cloudwatch get-metric-statistics \
  --namespace AWS/RDS --metric-name FreeStorageSpace \
  --start-time $START --end-time $END --period 300 \
  --statistics Average \
  --dimensions "Name=DBInstanceIdentifier, Value=${INSTANCE_NAME}"

{
    "Label": "FreeStorageSpace",
    "Datapoints": [
        {
            "Timestamp": "2017-11-16T14:01:00Z",
            "Average": 95406264320.0,
            "Unit": "Bytes"
        }
    ]
}

通过Java SDK使用API

以下是如何使用 Cloudwatch API 通过 Java AWS SDK 获取相同数据的基本示例。

build.gradle
内容

apply plugin: 'java'
apply plugin: 'application'

sourceCompatibility = 1.8

repositories {
    jcenter()
}

dependencies {
    compile 'com.amazonaws:aws-java-sdk-cloudwatch:1.11.232'
}

mainClassName = 'GetRDSInfo'

Java 类

再次,我依靠凭证链来获取 AWS API 凭证(我在我的环境中设置它们)。您可以更改对构建器的调用来更改此行为(请参阅使用 AWS 凭证文档)。

import java.util.Calendar;
import java.util.Date;

import com.amazonaws.regions.Regions;
import com.amazonaws.services.cloudwatch.AmazonCloudWatch;
import com.amazonaws.services.cloudwatch.AmazonCloudWatchClientBuilder;
import com.amazonaws.services.cloudwatch.model.GetMetricStatisticsRequest;
import com.amazonaws.services.cloudwatch.model.GetMetricStatisticsResult;
import com.amazonaws.services.cloudwatch.model.StandardUnit;
import com.amazonaws.services.cloudwatch.model.Dimension;
import com.amazonaws.services.cloudwatch.model.Datapoint;

public class GetRDSInfo {
    public static void main(String[] args) {
        final long GIGABYTE = 1024L * 1024L * 1024L;

        // calculate our endTime as now and startTime as 5 minutes ago.
        Calendar cal = Calendar.getInstance();
        Date endTime = cal.getTime();
        cal.add(Calendar.MINUTE, -5);
        Date startTime = cal.getTime();

        String dbIdentifier = "tstirldbopgs001";
        Regions region = Regions.EU_WEST_1;

        Dimension dim = new Dimension()
            .withName("DBInstanceIdentifier")
            .withValue(dbIdentifier);

        final AmazonCloudWatch cw = AmazonCloudWatchClientBuilder.standard()
                                        .withRegion(region)
                                        .build();

        GetMetricStatisticsRequest req = new GetMetricStatisticsRequest()
            .withNamespace("AWS/RDS")
            .withMetricName("FreeStorageSpace")
            .withStatistics("Average")
            .withStartTime(startTime)
            .withEndTime(endTime)
            .withDimensions(dim)
            .withPeriod(300);

        GetMetricStatisticsResult res = cw.getMetricStatistics(req);

        for (Datapoint dp : res.getDatapoints()) {
            // We requested only the average free space over the last 5 minutes
            // so we only have one datapoint
            double freespaceGigs = dp.getAverage() / GIGABYTE;
            System.out.println(String.format("Free Space: %.2f GB", freespaceGigs));
        }
    }
}

Java 代码执行示例

> gradle run

> Task :run
Free Space: 88.85 GB


BUILD SUCCESSFUL in 7s

4
投票

使用AWS 管理控制台的方法已更改。

现在你必须走了:

  • RDS > 数据库 > [your_db_instance]
  • 从那里向下滚动,然后单击“监控
  • 您应该能够看到数据库的“可用存储空间”(以 MB/秒或字节/秒为单位)
    • 如果第一页没有看到,请尝试检查第二页
© www.soinside.com 2019 - 2024. All rights reserved.