Alarm Modify
export PROJECT_NAME="apdev"
export ALARM_NAME=$(aws cloudwatch describe-alarms --query "MetricAlarms[?starts_with(AlarmName, 'TargetTracking-${PROJECT_NAME}-node-') && contains(AlarmName, 'AlarmLow')].AlarmName" --output text)
export ACTION_NAME=$(aws cloudwatch describe-alarms --alarm-names "$ALARM_NAME" --query "MetricAlarms[0].AlarmActions[0]" --output text)
export CLUSTER_NAME=$(aws cloudwatch describe-alarms --alarm-names "$ALARM_NAME" --query 'MetricAlarms[0].Dimensions[?Name==`ClusterName`].Value' --output text)
aws cloudwatch put-metric-alarm \
--alarm-name "$ALARM_NAME" \
--metric-name "CapacityProviderReservation" \
--namespace "AWS/ECS/ManagedScaling" \
--statistic "Average" \
--period 60 \
--evaluation-periods 1 \
--datapoints-to-alarm 1 \
--threshold 100 \
--comparison-operator "LessThanThreshold" \
--alarm-actions "$ACTION_NAME" \
--dimensions "Name=CapacityProviderName,Value=EC2" "Name=ClusterName,Value=$CLUSTER_NAME" \
--actions-enabled
Shell
복사
ASG Modify
aws autoscaling put-lifecycle-hook \
--lifecycle-hook-name ecs-managed-draining-termination-hook \
--auto-scaling-group-name $(aws autoscaling describe-auto-scaling-groups \
--query "AutoScalingGroups[?starts_with(AutoScalingGroupName, 'apdev-node')].AutoScalingGroupName" \
--output text | head -1) \
--heartbeat-timeout 300
Shell
복사
Delete Processlist Script
#!/bin/bash
MYSQL_USER="admin"
MYSQL_PASSWORD="password"
MYSQL_HOST=$(aws rds describe-db-instances --query "DBInstances[?DBInstanceIdentifier=='apdev-rds-instance'].Endpoint.Address" --output text)
MYSQL_PORT="3307"
MYSQL_DBNAME="dev"
while :
do
mysql -h $MYSQL_HOST -u $MYSQL_USER -P $MYSQL_PORT -p$MYSQL_PASSWORD -D $MYSQL_DBNAME -e "SELECT * FROM information_schema.processlist WHERE COMMAND = 'Sleep' AND USER NOT LIKE '%rds%' AND USER NOT LIKE '%event_scheduler%';" | egrep 'Sleep|Lock' | awk '{print "kill "$1";"}' > /tmp/kill.txt
mysql -h $MYSQL_HOST -u $MYSQL_USER -P $MYSQL_PORT -p$MYSQL_PASSWORD -D $MYSQL_DBNAME < /tmp/kill.txt
mysql -h $MYSQL_HOST -u $MYSQL_USER -P $MYSQL_PORT -p$MYSQL_PASSWORD -D $MYSQL_DBNAME -e "SHOW processlist;"
sleep 60
done
Shell
복사
