Last active
May 3, 2019 19:53
-
-
Save dlanner/fa6cea5667de33ca8f5f77414f2cc4ce to your computer and use it in GitHub Desktop.
Scripts to clean CloudWatch logs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| aws logs describe-log-groups > log_groups.json | |
| LOG_GROUPS=$(ruby -r json -e 'puts JSON.parse(File.read("./log_groups.json"))["logGroups"].map { |log_group| log_group["logGroupName"] }') | |
| for log_group in $LOG_GROUPS; do | |
| aws logs describe-log-streams --log-group-name ${log_group} > log_streams.json | |
| IS_EMPTY_LOG_GROUP=$(ruby -r json -e 'puts JSON.parse(File.read("./log_streams.json"))["logStreams"].length == 0') | |
| if [ "${IS_EMPTY_LOG_GROUP}" == "true" ]; then | |
| echo "Deleting empty log group ${log_group}" | |
| aws logs delete-log-group --log-group-name ${log_group} | |
| else | |
| echo "Keeping in-use log group ${log_group}" | |
| fi | |
| done |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| aws logs describe-log-groups > log_groups.json | |
| LOG_GROUPS=$(ruby -r json -e 'puts JSON.parse(File.read("./log_groups.json"))["logGroups"].map { |log_group| log_group["logGroupName"] }') | |
| for log_group in $LOG_GROUPS; do | |
| echo "log_group: ${log_group}" | |
| aws logs describe-log-streams --log-group-name ${log_group} > log_streams.json | |
| LOG_STREAMS_TO_KEEP=$(ruby -r json -e 'puts JSON.parse(File.read("./log_streams.json"))["logStreams"].select { |log_stream| log_stream["lastEventTimestamp"] && log_stream["lastEventTimestamp"] >= (Time.now.to_i - 60*60*24*14)*1000 }.map { |log_stream| log_stream["logStreamName"] }') | |
| NUM_LOG_STREAMS_TO_KEEP=$(echo ${LOG_STREAMS_TO_KEEP} | wc -w) | |
| echo "Number of log streams to keep: ${NUM_LOG_STREAMS_TO_KEEP}" | |
| EMPTY_LOG_STREAMS=$(ruby -r json -e 'puts JSON.parse(File.read("./log_streams.json"))["logStreams"].select { |log_stream| !log_stream["lastEventTimestamp"] || log_stream["lastEventTimestamp"] < (Time.now.to_i - 60*60*24*14)*1000 }.map { |log_stream| log_stream["logStreamName"] }') | |
| NUM_EMPTY_LOG_STREAMS=$(echo ${EMPTY_LOG_STREAMS} | wc -w) | |
| echo "Number of empty log streams to delete: ${NUM_EMPTY_LOG_STREAMS}" | |
| for log_stream in $EMPTY_LOG_STREAMS; do | |
| echo "Deleting empty log stream ${log_stream} in log group ${log_group}" | |
| aws logs delete-log-stream --log-group-name $log_group --log-stream-name $log_stream | |
| done | |
| done |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| aws logs describe-log-groups > log_groups.json | |
| LOG_GROUPS=$(ruby -r json -e 'puts JSON.parse(File.read("./log_groups.json"))["logGroups"].map { |log_group| log_group["logGroupName"] }') | |
| for log_group in $LOG_GROUPS; do | |
| echo "Setting log retention policy for ${log_group} to 14 days" | |
| aws logs put-retention-policy --log-group-name "${log_group}" --retention-in-days 14 | |
| done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment