2015-05-25 26 views
1

我創建了一個DynamoDB表。對dynamodb使用cloudwatch指標存在一些疑問

現在我試圖創建一個Cloudwatch警報,當表請求超過80%1小時時發送SNS通知(如我們使用AWS管理控制檯創建DynamoDB表時所顯示的那樣)。

我的疑惑是:

  1. 我需要創建兩個雲手表報警,如下面的代碼?或者有兩種方法可以創建兩個指標只有一個警報?

  2. 而且,對於這個例子,我試圖做Sum是正確的度量權嗎?

  3. 當我們創建AWS管理控制檯的表,它似乎建立在表請求超過80%雲值班報警,也出現了SNS通知將賭注時發送:

閱讀能力單位消耗> 1

寫入容量單位消耗> 1

我與這部分有點糊塗了,看使用的容量單位時和寫入容量的單位消耗> 1時,或者標籤的SNS通知將發送請求超過80%1小時?或者它是一樣的東西?如果1次讀取和1次寫入單位相當於每秒1次讀取和1次寫入的情況是相同的,那麼當消耗的讀寫容量單位> 1時,如果我們配置了我們只需要1個單位? Cloudwatch警報何時啓動?

def createCW(topicArn, tableName): 
    cloudwatch = boto.ec2.cloudwatch.connect_to_region("us-east-1") 
    t = time.localtime(time.time()) 

    alarmName1 = "ConsumedReadCapacityUnits" 
    alarmName2 = "ConsumedWriteCapacityUnits" 
    metric1 = cloudwatch.list_metrics(dimensions={'TableName':tableName}, 
        metric_name="ConsumedReadCapacityUnits")[0] 
    metric1.create_alarm(name=alarmName1, comparison='>=', threshold=0.8, period=3000, 
        evaluation_periods=1, statistic='Sum', alarm_actions=[topicArn])  
    metric2 = cloudwatch.list_metrics(dimensions={'TableName':tableName}, 
        metric_name="ConsumedReadCapacityUnits")[0] 
    metric2.create_alarm(name=alarmName2, comparison='>=', threshold=0.8, period=3000, 
        evaluation_periods=1, statistic='Sum', alarm_actions=[topicArn])  

回答

2
  1. CloudWatch的警報是每公噸之一,所以2個指標,你在你的代碼有,你需要2個報警。順便說一下,我認爲代碼中存在拼寫錯誤,這兩個度量標準名稱都是「ConsumedReadCapacityUnits」,我認爲其中一個需要是「ConsumedWriteCapacityUnits」。

  2. 是,總和是在監控時間範圍內消耗的容量單位時使用的正確度量。

  3. 這意味着只有當您的消耗容量單位超過1個單位時纔會發送通知,因爲這是容量單位的最小單位。報警發送的條件仍然是您的「80%」度量標準。如果您的表格有1個讀取和寫入單位,那麼我認爲警報不會觸發(因爲DynamoDB無法消耗0.8個容量單位)。