Last active
August 28, 2020 06:03
-
-
Save phaneesh/91b4cf4a7f97a6b0eb510f3f1a93f0e2 to your computer and use it in GitHub Desktop.
Clear rundeck logs and job execution history
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 | |
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} |
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
#!/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