簡體   English   中英

Amazon CloudWatch不返回Redshift指標

[英]Amazon CloudWatch is not returning Redshift metrics

下面是我獲取Redshift的PercentageDiskSpaceUsed指標的Python腳本的一部分。

我已經更改了上一篇文章的代碼。 當我使用boto3編寫腳本時,它不起作用。 但是使用boto2編寫時可以工作。 粘貼兩個腳本。 請檢查並更正:

使用boto2的腳本:-

from boto.ec2 import cloudwatch
from datetime import datetime, timedelta
import boto

REDSHIFT_REGION = 'ap-south-1'
connection = boto.ec2.cloudwatch.connect_to_region(REDSHIFT_REGION)

def set_time_ranges():
    return {
        "start": datetime.utcnow() - timedelta(seconds=600),
        "end": datetime.utcnow()
    }

time_range = set_time_ranges()

data = connection.get_metric_statistics(60,time_range["start"], time_range["end"],'PercentageDiskSpaceUsed','AWS/Redshift', 'Average',                                  dimensions={
                                        "ClusterIdentifier": 'test'})    
print (data)

使用boto3的腳本:-

import boto3
from datetime import datetime, timedelta

access_key = <xxxxxxxxxxxxxx>
secret_key = <xxxxxxxxxxxxxxx>


def set_time_ranges():
return {
    "start": datetime.utcnow() - timedelta(seconds=600),
    "end": datetime.utcnow()
}
time_range = set_time_ranges()

client = boto3.client('cloudwatch', aws_access_key_id = access_key , aws_secret_access_key = secret_key, region_name='ap-south-1')
print(client.get_metric_statistics(Period=60, StartTime=time_range["start"], EndTime=time_range["end"], MetricName="PercentageDiskSpaceUsed", Namespace="AWS/RedShift", Statistics=["Average"], Unit="Percent", Dimensions=[{'Name': 'ClusterIdentifier', 'Value': 'test'}]))

看來您還需要提供Dimensions

首先,通過AWS命令行界面(CLI)使指標起作用:

aws cloudwatch get-metric-statistics \
--namespace 'AWS/Redshift' \
--metric-name PercentageDiskSpaceUsed \
--start-time 2017-04-22T00:00:00Z \
--end-time 2017-04-22T05:00:00Z \
--period 60 \
--statistics Average \
--dimensions Name=NodeID,Value=Shared Name=ClusterIdentifier,Value=lab

(根據您的特定需求調整集群名稱和時間段。)

要發現可用的名稱空間和維度值,請使用:

aws cloudwatch list-metrics --namespace 'AWS/Redshift'

此代碼然后工作:

import boto3

from datetime import datetime, timedelta

client = boto3.client('cloudwatch',region_name='ap-southeast-2')

client.get_metric_statistics(
    Namespace='AWS/Redshift',
    MetricName='PercentageDiskSpaceUsed',
    Dimensions=[{'Name':'NodeID','Value':'Shared'},
                {'Name':'ClusterIdentifier','Value':'lab'}
                ],
    StartTime=datetime.utcnow() - timedelta(seconds=3600),
    EndTime=datetime.utcnow(),
    Period=60,
    Statistics=['Average']
    )

嘗試使用更新的StartTime和EndTime(例如3月)或其他時間段(嘗試3600)。

您設置的期限為600,即10分鍾。 要構建10分鍾級別的響應,CloudWatch需要兩個5分鍾數據點,而5分鍾數據點僅保留63天: http : //docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricStatistics.html

您需要的是1月份(過去63天以上)的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM