AWS的ecs服务是一种容器化管理服务,为了监控这些容器的运行情况,可以使用ecs告警指标进行服务监控。其中包括内存利用率指标(memory utilization metric)。
AWS提供的内存利用率指标共有两个:MemoryUtilization和MemoryUtilizationRaw,它们的区别如下:
通过查询这两个指标,可以根据需要选择最适合的指标来实现监控需求。
以下是Python代码示例(使用boto3库)用来查询这两个指标:
import boto3
ecs = boto3.client('ecs')
response = ecs.describe_services(
cluster='my-cluster',
services=[
'my-service',
]
)
for svc in response['services']:
response = ecs.describe_services(
cluster=svc['clusterArn'].split('/')[1],
services=[svc['serviceName']],
include=[
'TAGS',
],
)
for task in response['services'][0]['deployments'][0]['tasks']:
for container in task['containers']:
response = ecs.describe_task_definition(
taskDefinition=task['taskDefinitionArn'].split('/')[1]
)
for defn in response['taskDefinition']['containerDefinitions']:
if defn['name'] == container['name']:
# 使用MemoryUtilization指标:
mem_util = ecs.get_metric_statistics(
Namespace='AWS/ECS',
MetricName='MemoryUtilization',
Dimensions=[
{
'Name': 'ServiceName',
'Value': svc['serviceName'],
},
{
'Name': 'ClusterName',
'Value': svc['clusterArn'].split('/')[1],
},
{
'Name': 'ContainerName',
'Value': container['name']
},
{
'Name': 'TaskDefinitionFamily',
'Value': defn['name'].split(':')[0],
},
{
'Name': 'TaskDefinitionRevision',
'Value': defn['name'].split(':')[1],
},
],
StartTime=datetime.datetime.utcnow() - datetime.timedelta(seconds=300),
EndTime
上一篇:AWS的DynamoDB API是什么类型的API?它是REST、SOAP还是其他类型的?
下一篇:aws的ElasticacheRedis在使用notify-keyspace-events事件触发器时无法捕获事件的问题。