infra-nimbus/ansible/roles/logclean-job/templates/logclean.sh

34 lines
990 B
Bash

#!/usr/bin/env bash
# ElasticSearch access
ES_HOST="{{ logclean_es_host | mandatory }}"
ES_PORT="{{ logclean_es_port | mandatory }}"
# Keep only this number of newest indices
INDICES_KEEP="{{ logclean_keep_indices | mandatory }}"
ES_REGEX="{{ logclean_index_regex }}"
ES_URL="http://${ES_HOST}:${ES_PORT}"
echo "Checking ElasticSearch for indices to clean...."
# Get list of indices
INDICES=$(curl -s "${ES_URL}/_cat/indices/${ES_REGEX}?pretty&h=index&s=index")
INDICES_NUM=$(echo "${INDICES}" | wc -l)
# If there are less indices than days stop
if [[ ${INDICES_NUM} -le ${INDICES_KEEP} ]]; then
echo "Nothing to remove. (${INDICES_NUM}/${INDICES_KEEP} indices)"
exit 0
fi
# Subtract how many to keep from number of existing indices
INDICES_TO_DELETE=$(echo "${INDICES}" | head -n$((INDICES_NUM-INDICES_KEEP)) )
echo "${INDICES_TO_DELETE}"
while IFS= read -r INDEX; do
echo "Deleting: ${INDEX}"
curl -s -XDELETE "${ES_URL}/${INDEX}"
done <<< "${INDICES_TO_DELETE}"