批量创建EC2cloudwatch告警(mem、cpu、disk)
#!/bin/bash
instanceids=`aws ec2 describe-instances |jq -r .Reservations[].Instances[].InstanceId`
alarm_actions="arn:aws:sns:region:xxxxxxxxxx:Alarm"
region="af-south-1"
for instanceid in $instanceids
do
instanceinfo=`aws ec2 describe-instances --instance-ids $instanceid |jq -r .Reservations[].Instances[]`
ec2name=`aws ec2 describe-tags --filters "Name=resource-id,Values='$instanceid'" "Name=key,Values=Name" --region $region |jq -r .Tags[].Value`
ec2_Env=`aws ec2 describe-tags --filters "Name=resource-id,Values='$instanceid'" "Name=key,Values=env" --region $region |jq -r .Tags[].Value`
ec2_App=`aws ec2 describe-tags --filters "Name=resource-id,Values='$instanceid'" "Name=key,Values=app" --region $region |jq -r .Tags[].Value`
ec2_Priority=`aws ec2 describe-tags --filters "Name=resource-id,Values='$instanceid'" "Name=key,Values=priority" --region $region |jq -r .Tags[].Value`
PrivateIpAddress=`echo $instanceinfo|jq -r .PrivateIpAddress`
ImageId=`echo $instanceinfo|jq -r .ImageId`
InstanceType=`echo $instanceinfo|jq -r .InstanceType`
alarm_name_cpu="EC2_"ec2_App"_"$ec2_Env"_"$ec2name"_medium_"$instanceid"-CPU使用率超过70%"
alarm_name_mem="EC2-"$ec2name"-"$PrivateIpAddress"-mem_used_percent>70%"
alarm_name_disk="EC2-"$ec2name"-"$PrivateIpAddress"/-disk_used_percent>70%"
alarm_name_disk_data="EC2-"$ec2name"-"$PrivateIpAddress"/data-disk_used_percent>70%"
aws cloudwatch put-metric-alarm --alarm-name $alarm_name_cpu --alarm-description $alarm_name_cpu --metric-name "CPUUtilization" --namespace AWS/EC2 --statistic Average --period 300 --threshold 70 --comparison-operator GreaterThanOrEqualToThreshold --dimensions Name=InstanceId,Value=$instanceid --evaluation-periods 1 --alarm-actions $alarm_actions --ok-actions $alarm_actions --unit Percent --treat-missing-data missing
sleep 2s
aws cloudwatch put-metric-alarm --alarm-name $alarm_name_mem --alarm-description $alarm_name_mem --metric-name "mem_used_percent" --namespace CWAgent --statistic Average --period 300 --threshold 70 --comparison-operator GreaterThanOrEqualToThreshold --dimensions Name=InstanceId,Value=$instanceid Name=ImageId,Value=$ImageId Name=InstanceType,Value=$InstanceType --evaluation-periods 1 --alarm-actions $alarm_actions --ok-actions $alarm_actions --unit Percent --treat-missing-data missing
sleep 2s
aws cloudwatch put-metric-alarm --alarm-name $alarm_name_disk --alarm-description $alarm_name_disk --metric-name "disk_used_percent" --namespace CWAgent --statistic Average --period 300 --threshold 70 --comparison-operator GreaterThanOrEqualToThreshold --dimensions Name=path,Value="/" Name=InstanceId,Value=$instanceid Name=ImageId,Value=$ImageId Name=InstanceType,Value=$InstanceType Name=device,Value=nvme0n1p1 Name=fstype,Value=xfs --evaluation-periods 1 --alarm-actions $alarm_actions --ok-actions $alarm_actions --unit Percent --treat-missing-data missing
sleep 2s
aws cloudwatch put-metric-alarm --alarm-name $alarm_name_disk_data --alarm-description $alarm_name_disk_data --metric-name "disk_used_percent" --namespace CWAgent --statistic Average --period 300 --threshold 70 --comparison-operator GreaterThanOrEqualToThreshold --dimensions Name=path,Value="/data" Name=InstanceId,Value=$instanceid Name=ImageId,Value=$ImageId Name=InstanceType,Value=$InstanceType Name=device,Value=nvme1n1 Name=fstype,Value=xfs --evaluation-periods 1 --alarm-actions $alarm_actions --ok-actions $alarm_actions --unit Percent --treat-missing-data missing
sleep 2s
alarm_name_cpu1="EC2_"ec2_App"_"$ec2_Env"_"$ec2name"_high_"$instanceid"-CPU使用率超过85%"
alarm_name_mem1="严重EC2-"$ec2name"-"$PrivateIpAddress"-mem_used_percent>85%"
alarm_name_disk1="严重EC2-"$ec2name"-"$PrivateIpAddress"/-disk_used_percent>85%"
alarm_name_disk_data1="严重EC2-"$ec2name"-"$PrivateIpAddress"/data-disk_used_percent>85%"
aws cloudwatch put-metric-alarm --alarm-name $alarm_name_cpu1 --alarm-description $alarm_name_cpu1 --metric-name "CPUUtilization" --namespace AWS/EC2 --statistic Average --period 300 --threshold 85 --comparison-operator GreaterThanOrEqualToThreshold --dimensions Name=InstanceId,Value=$instanceid --evaluation-periods 1 --alarm-actions $alarm_actions --ok-actions $alarm_actions --unit Percent --treat-missing-data missing
sleep 2s
aws cloudwatch put-metric-alarm --alarm-name $alarm_name_mem1 --alarm-description $alarm_name_mem1 --metric-name "mem_used_percent" --namespace CWAgent --statistic Average --period 300 --threshold 85 --comparison-operator GreaterThanOrEqualToThreshold --dimensions Name=InstanceId,Value=$instanceid Name=ImageId,Value=$ImageId Name=InstanceType,Value=$InstanceType --evaluation-periods 1 --alarm-actions $alarm_actions --ok-actions $alarm_actions --unit Percent --treat-missing-data missing
sleep 2s
aws cloudwatch put-metric-alarm --alarm-name $alarm_name_disk1 --alarm-description $alarm_name_disk1 --metric-name "disk_used_percent" --namespace CWAgent --statistic Average --period 300 --threshold 85 --comparison-operator GreaterThanOrEqualToThreshold --dimensions Name=path,Value="/" Name=InstanceId,Value=$instanceid Name=ImageId,Value=$ImageId Name=InstanceType,Value=$InstanceType Name=device,Value=nvme0n1p1 Name=fstype,Value=xfs --evaluation-periods 1 --alarm-actions $alarm_actions --ok-actions $alarm_actions --unit Percent --treat-missing-data missing
sleep 2s
aws cloudwatch put-metric-alarm --alarm-name $alarm_name_disk_data1 --alarm-description $alarm_name_disk_data1 --metric-name "disk_used_percent" --namespace CWAgent --statistic Average --period 300 --threshold 85 --comparison-operator GreaterThanOrEqualToThreshold --dimensions Name=path,Value="/data" Name=InstanceId,Value=$instanceid Name=ImageId,Value=$ImageId Name=InstanceType,Value=$InstanceType Name=device,Value=nvme1n1 Name=fstype,Value=xfs --evaluation-periods 1 --alarm-actions $alarm_actions --ok-actions $alarm_actions --unit Percent --treat-missing-data missing
sleep 2s
done
浙公网安备 33010602011771号