Мы используем Агент CloudWatch для загрузки показателей экземпляра в CloudWatch. Мне удалось создать скрипт boto3 для создания сигналов CloudWatch для загрузки ЦП более 85%, и мне нужно получить «LogicalDisk% Free Space» для всех томов экземпляра. В другом посте показано, что _Total можно использовать для агента SSM, но он не работает для показателей, сообщаемых CWAgent. Следующий код - это то, что я использовал для создания будильника для одного тома в одном экземпляре, а затем изменил его на l oop во всех экземплярах.
Что можно сделать, чтобы создать тревогу CloudWatch для «LogicalDisk» % Свободного пространства, в котором меньше или равно 15% свободного пространства для всех томов экземпляра?
import boto3, sys
# This script requires an AWS profile name to be passed to it
if len(sys.argv) < 2:
print("A profile parameter is required.")
profile = input("Enter a profile name: ")
boto3.setup_default_session(profile_name=profile)
else:
profile = (sys.argv[1])
boto3.setup_default_session(profile_name=sys.argv[1])
# Create EC2 resource
ec2 = boto3.resource('ec2')
# Getting all running instances
instances = ec2.instances.all()
# Create CloudWatch client
cloudwatch = boto3.client('cloudwatch')
for i in instances:
i_name = "unnamed"
for tag in i.tags:
if tag['Key'] == "Name":
i_name = tag['Value']
print(i_name, i.id)
# Create alarm
cloudwatch.put_metric_alarm(
AlarmName = i_name + "-(" + i.id + ")-" + "Disk-Utilization-85-Pct",
ComparisonOperator = 'LessThanOrEqualToThreshold',
EvaluationPeriods = 10,
MetricName = 'LogicalDisk % Free Space',
Namespace = 'CWAgent',
Period = 60,
Statistic = 'Average',
Threshold = 15.0,
ActionsEnabled = False,
AlarmDescription = 'Alarm when there is 15% disk space or less',
Dimensions = [
{
'Name': 'InstanceId',
'Value': id,
'Name': 'instance',
'Value': '_Total'
},
],
Unit = 'Seconds',
TreatMissingData = 'notBreaching'
)