使用 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)
这就是我想要的:使用 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)