2016-09-13 57 views
1

我正在嘗試使用boto獲取elasticsearch雲觀察指標,但無論我做什麼,我都沒有獲得價值。下面是我的代碼片段,例如,如果我使用RDS指標,則相同的代碼工作。Boto無法獲取ElasticSearch Cloudwatch指標

import datetime 
import boto.ec2.cloudwatch 

end = datetime.datetime.utcnow() 
start = end - datetime.timedelta(minutes=5) 

metric="CPUUtilization" 

region = boto.regioninfo.RegionInfo(
    name='ap-southeast-1', 
    endpoint='monitoring.ap-southeast-1.amazonaws.com') 

conn = boto.ec2.cloudwatch.CloudWatchConnection(region=region) 

data = conn.get_metric_statistics(60, start, end, metric, "AWS/ES", "Average", {"DomainName": "My-es-name"}) 

打印數據

[]

但是如果我命名空間更改爲RDS它正常工作與適當的尺寸值。這是一個我可以寫的簡單代碼。我不確定這裏有什麼問題。任何人都可以幫我弄清楚這個嗎?

我在這裏做錯了什麼?

感謝

回答

2

我有完全相同的問題,失去了幾個小時試圖數字出來,但我設法找到解決方案。

要爲特定域名取得Elasticsearch指標,您還需要在維度中指明您的ClientId。

我下面的例子是Boto3,但對你的代碼(boto2)執行它,相信你只需要修改的尺寸如下,假設你的語法原本是正確的:

data = conn.get_metric_statistics(60, start, end, metric, "AWS/ES", "Average", {"ClientId":"My-client-id", "DomainName": "My-es-name"}) 

嘗試下面的代碼(boto3)。它爲我工作。

import boto3 
from datetime import datetime, timedelta 

cloudwatch = boto3.resource('cloudwatch', region_name='ap-southeast-1') 
cpu = cloudwatch.Metric('AWS/ES', 'CPUUtilization') 

cpu_usage = cpu.get_statistics(
    Dimensions=[ 
     {'Name': 'ClientId', 'Value': 'YOUR-CLIENT-ID'}, 
     {'Name': 'DomainName', 'Value': 'YOUR-DOMAIN-NAME'} 
    ], 
    StartTime=(datetime.utcnow() - timedelta(minutes=5)).isoformat(), 
    EndTime=datetime.utcnow().isoformat(), 
    Period=60, 
    Statistics=['Average'] 
) 

如果你喜歡使用一個客戶端,請使用以下代替:

client = boto3.client('cloudwatch', region_name='ap-southeast-1') 
response = client.get_metric_statistics(
    Namespace='AWS/ES', 
    MetricName='CPUUtilization', 
    Dimensions=[ 
     {'Name': 'ClientId', 'Value': 'YOUR-CLIENT-ID'}, 
     {'Name': 'DomainName', 'Value': 'YOUR-DOMAIN-NAME'} 
    ], 
    StartTime=(datetime.utcnow() - timedelta(minutes=5)).isoformat(), 
    EndTime=datetime.utcnow().isoformat(), 
    Period=60, 
    Statistics=['Average'] 
) 

請接受我的答案,如果它工作:-)

+0

讓我看一下..移動到boto3是位因爲我必須將所有代碼移至boto3。 – PratapSingh

+0

它應該與Boto語法一樣工作。讓我更新我的答案,我認爲可以與您的代碼一起工作。 –

+1

Lifesaver ..也適用於CLI。 –