使用 Telegraf 和 Cloudwatch 获取 RDS 免费光盘 space

Getting RDS free disc space using Telegraf and Cloudwatch

这就是我想要的:使用 Telegraf 在 RDS 上获取免费光盘 space 的当前值。

为此,我正在使用 Telegraf 的 Cloudwatch 输入(请参阅下面的配置)。我得到了一些指标,但它们似乎都具有相同的值。 Max == Min,这(对我来说)听起来不对。我希望 Max 是 RDS 光盘的大小,而 Min 是当前未使用的 space。我使用 AWS CLI 进行的测试也支持这一点。

那么,我是不是做错了什么?这是 telegraf 中的错误吗?

这是我的电报配置:

[[inputs.cloudwatch]]
region = "us-west-2"
period = '1m'
delay = '5m'
interval = '5m'
namespace = 'AWS/RDS'
[[inputs.cloudwatch.metrics]]
names = ['FreeStorageSpace']
[[inputs.cloudwatch.metrics.dimensions]]
  name = 'DBInstanceIdentifier'
  value = '*'

这是一个 RDS 实例的输出 - 注意值“103560384512”如何针对最大值、最小值、平均值和总和重复:

> cloudwatch_aws_rds,db_instance_identifier=my-rds-instance,host=ip-172-31-47-37,node_name=my-rds-instance,region=us-west-2,unit=bytes free_storage_space_average=103560384512,free_storage_space_maximum=103560384512,free_storage_space_minimum=103560384512,free_storage_space_sample_count=1,free_storage_space_sum=103560384512 1547418720000000000

这是 AWS 的 CLI 等价物。我已经尝试过 Max、Min 并且我得到了非常不同的数字,这是有道理的。下面是 Min 在另一张光盘上的输出:

aws cloudwatch   get-metric-statistics  --namespace AWS/RDS --metric-name FreeStorageSpace   --region us-east-2 --start-time 2019-01-12T20:00:00Z --end-time 2019-01-12T23:59:00Z --period 3600 --statistics Minimum

"Datapoints": [
    {
        "Timestamp": "2019-01-12T21:00:00Z",
        "Minimum": 19796946944.0,
        "Unit": "Bytes"
    },
    {
        "Timestamp": "2019-01-12T23:00:00Z",
        "Minimum": 19792580608.0,
        "Unit": "Bytes"
    },
    {
        "Timestamp": "2019-01-12T22:00:00Z",
        "Minimum": 19794690048.0,
        "Unit": "Bytes"
    },
    {
        "Timestamp": "2019-01-12T20:00:00Z",
        "Minimum": 19798822912.0,
        "Unit": "Bytes"
    }
],
"Label": "FreeStorageSpace"

好的,我明白了 - 这里没有任何问题,但有点违反直觉。 FreeStorageSpace 指标是一个指标,因此它可以有一个最小值、一个最大值和一个平均值 - 当随着时间的推移进行采样时。如果你在“1m”的时间段内对其进行采样(就像我所做的那样),那么它只是一个数据点,然后显然是 max==min==average。另外,它的值 returns 是以字节为单位的,要将它恢复为 Mb,你需要将它除以 (1024^2)