如何使用python获取AWS SQS指标

时间:2015-12-09 17:14:20

标签: python amazon-web-services boto amazon-cloudwatch

目前我们使用包boto获取队列消息,然后进行一些处理。相关代码是:

from boto.sqs.message import RawMessage
import boto.sqs
import boto.sns
import json

conn = boto.sqs.connect_to_region(
    "us-west-1",
    aws_access_key_id="XXXXXXX",
    aws_secret_access_key="XXXXXXX")
q=conn.get_queue('queueName')
q.set_message_class(RawMessage)
res=q.get_messages(10,wait_time_seconds=1)
....

其余的只是处理代码(对问题不重要)。这段代码完美无缺。

我想知道是否有办法从python获取队列的指标,例如NumberOfMessagesSent

根据此帖子get metricsCloudWatch网站,我认为可能会有类似

的内容
conn = boto.sqs.cloudwatch.connect_to_region()

我能从中做到

conn.get_metric_statistics()

但似乎并非如此(除非我遗漏了一些东西)。

我找到了code这个非常好的部分。但我想知道boto.sqs

中是否有“更好”(或更简洁的替代方案)

2 个答案:

答案 0 :(得分:1)

如果您致电q.get_attributes()

,则可以获得以下属性
  

ApproximateNumberOfMessages,ApproximateNumberOfMessagesNotVisible,   VisibilityTimeout,CreatedTimestamp,LastModifiedTimestamp,Policy   ReceiveMessageWaitTimeSeconds

对于NumberOfMessagesSent之类的内容,您需要在CloudWatch中查询数据SQS日志。您链接的代码看起来像是使用boto查询CloudWatch指标的正确方法。

答案 1 :(得分:0)

谢谢,

另外,如果有人发现它有用,我们发现了与我链接的code类似的方式,但也许更简洁一点。

import boto
import datetime
conn = boto.connect_cloudwatch(aws_access_key_id="xxx",aws_secret_access_key="xxx")
conn.get_metric_statistics(
        300,
        datetime.datetime.utcnow() - datetime.timedelta(seconds=300),
        datetime.datetime.utcnow(),
        'ApproximateNumberOfMessagesVisible',
        'AWS/SQS',
        'Average',
        dimensions={'QueueName':['Myqueuename']}
   )