Pra*_*ngh 1 boto amazon-cloudwatch
我正在尝试使用 boto 获取 elasticsearch cloud-watch 指标,但无论我做什么,我都没有得到价值。下面是我的代码片段,例如,如果我用于 RDS 指标,则相同的代码可以工作。
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"})
Run Code Online (Sandbox Code Playgroud)
打印数据
[]
但是,如果我将命名空间更改为 RDS,它可以在正确的维度值下正常工作。这是我可以编写的简单代码。我不确定这里有什么问题。谁能帮我弄清楚这一点?
我在这里做错了什么?
谢谢
我找到了解决方案。
要拉取特定域名的 Elasticsearch 指标,您还需要在维度中指明您的 ClientId。
我下面的示例在 Boto3 中,但为了使用您的代码 (boto2) 执行它,我相信您只需要按如下方式修改维度,假设您的语法最初是正确的:
data = conn.get_metric_statistics(60, start, end, metric, "AWS/ES", "Average", {"ClientId":"My-client-id", "DomainName": "My-es-name"})
Run Code Online (Sandbox Code Playgroud)
试试下面的代码 (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']
)
Run Code Online (Sandbox Code Playgroud)
如果您更喜欢使用客户端,请改用以下内容:
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']
)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
665 次 |
最近记录: |