Skip to content

Instantly share code, notes, and snippets.

@phaneesh
Last active August 28, 2020 06:03
Show Gist options
  • Save phaneesh/91b4cf4a7f97a6b0eb510f3f1a93f0e2 to your computer and use it in GitHub Desktop.
Save phaneesh/91b4cf4a7f97a6b0eb510f3f1a93f0e2 to your computer and use it in GitHub Desktop.
Clear rundeck logs and job execution history
#!/bin/bash
RUNDECK_DB_HOST=''
RUNDECK_DB_USER=''
RUNDECK_DB_PASSWORD=''
RUNDECK_DB_NAME=''
cd /var/log/rundeck/
find . -type f \( -name "*.api.log.*" -o -name "*.executions.log.*" -o -name "rundeck.log.*" -o -name "*.service.log.*" -o -name "*.jobs.log.*" -o -name "*.audit.log.*" \) -mtime +3 -exec rm {} \;
cd /var/lib/rundeck/logs/rundeck/
find . -type f \( -name "*.rdlog" -o -name "*.json" -o -name "*.xml" \) -mtime +10 -exec rm {} \;
find . -type d -empty -delete
/usr/bin/rundeck-purge-jobs.py -db ${RUNDECK_DB_HOST} -u ${RUNDECK_DB_USER} -p ${RUNDECK_DB_PASSWORD} -n ${RUNDECK_DB_NAME}
#!/usr/bin/env python
import sys
import argparse
import logging
from datetime import datetime
import os
import mysql.connector as mariadb
def check_arg(args=None):
parser = argparse.ArgumentParser()
parser.add_argument("-db", "--database", required=True),
parser.add_argument("-u", "--user", required=True)
parser.add_argument("-p", "--password", required=True)
parser.add_argument("-n", "--dbname", required=True)
results = parser.parse_args(args)
return results.database, results.user, results.password, results.dbname
def log():
logger = logging.getLogger()
logFormatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")
consoleHandler = logging.StreamHandler()
consoleHandler.setFormatter(logFormatter)
logger.addHandler(consoleHandler) # Comment out to disable logs on screen
if not os.path.exists("logs"):
os.makedirs("logs")
log_name = (os.path.splitext(os.path.basename(__file__))[0]) + "_" + datetime.now().strftime(
'%Y-%m-%d_%H_%M_%S') + ".log"
log_path = "logs/" + log_name
fileHandler = logging.FileHandler(log_path)
fileHandler.setFormatter(logFormatter)
logger.addHandler(fileHandler)
consoleHandler.setLevel(logging.INFO)
fileHandler.setLevel(logging.INFO)
logger.setLevel(logging.INFO)
if __name__ == '__main__':
log()
database, user, password, dbname = check_arg(sys.argv[1:])
conn = mariadb.connect(user=user, password=password, host=database, database=dbname)
cursor = conn.cursor()
all_projects = []
cursor.execute("select name from project")
for p in cursor:
all_projects.append(str(p[0]))
for p in all_projects:
run_rep_batch = True
batch_cnt = 1
while run_rep_batch:
cursor.execute(
"DELETE FROM base_report WHERE (date_completed < DATE_SUB(NOW(), INTERVAL 10 DAY) or date_started < DATE_SUB(NOW(), INTERVAL 10 DAY)) and ctx_project='" + p + "' limit 1000")
r_count = cursor.rowcount
conn.commit()
print("Deleted " + str(r_count) + " records from base report from project: " + p + " | Batch: " + str(
batch_cnt))
run_rep_batch = r_count > 0
batch_cnt = batch_cnt + 1
run_exec_batch = True
batch_cnt = 1
while run_exec_batch:
cursor.execute(
"DELETE FROM execution WHERE date_started < DATE_SUB(NOW(), INTERVAL 10 DAY) and status='succeeded' limit 1000")
r_count = cursor.rowcount
conn.commit()
print("Deleted " + str(r_count) + " records from execution | Batch: " + str(batch_cnt))
run_exec_batch = r_count > 0
batch_cnt = batch_cnt + 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment