批量创建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

 

posted on 2021-12-31 09:35  无聊的时候看一下  阅读(256)  评论(0)    收藏  举报

导航