Merge branch 'master' of git://github.com/rackspace/stacktach into exists_verifier

This commit is contained in:
Andrew Melton 2013-03-12 17:26:56 -04:00
commit ef5dd0a23f
6 changed files with 74 additions and 17 deletions

View File

@ -2,6 +2,7 @@ export STACKTACH_DB_NAME="stacktach"
export STACKTACH_DB_HOST=""
export STACKTACH_DB_USERNAME="root"
export STACKTACH_DB_PASSWORD="password"
export STACKTACH_DB_PORT="3306"
export STACKTACH_INSTALL_DIR="/srv/www/stacktach/"
export STACKTACH_DEPLOYMENTS_FILE="/srv/www/stacktach/stacktach_worker_config.json"

View File

@ -1,14 +1,9 @@
#!/usr/bin/env python
from django.core.management import execute_manager
import imp
try:
imp.find_module('settings') # Assumed to be in the same directory.
except ImportError:
import sys
sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n" % __file__)
sys.exit(1)
import settings
import os, sys
if __name__ == "__main__":
execute_manager(settings)
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "stacktach.settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)

21
reports/batch.py Normal file
View File

@ -0,0 +1,21 @@
# This is a one-time utility script for backfilling reports.
# Be sure to set up your DJANGO_SETTINGS_MODULE env var first.
import datetime
import subprocess
start_date = datetime.date(2013, 2, 17)
today = datetime.datetime.now().date()
target = today - datetime.timedelta(days=30)
done = today - start_date
days = done.days
while start_date != target:
for region in ["dfw", "lon", "ord"]:
cmd = "python pretty.py --utcdate %s --region %s --store --percentile 97" % (start_date, region)
print cmd
subprocess.call(cmd, shell=True)
start_date = start_date - datetime.timedelta(days=1)

View File

@ -237,6 +237,12 @@ if __name__ == '__main__':
parser.add_argument('--hours',
help='Report span in hours. Default: 24', default=24,
type=int)
parser.add_argument('--days_back',
help='Report start date. N days back from now. Default: 0', default=0,
type=int)
parser.add_argument('--hours_back',
help='Report start date. N hours back from now. Default: 0', default=0,
type=int)
parser.add_argument('--start_hour',
help='Starting hour 0-23. Default: 0', default=0,
type=int)
@ -252,12 +258,23 @@ if __name__ == '__main__':
args = parser.parse_args()
yesterday = args.utcdate
days_back = args.days_back
hours_back = args.hours_back
percentile = args.percentile
hours = args.hours
start_hour = args.start_hour
store_report = args.store
region = args.region
if (not yesterday) and days_back > 0:
yesterday = datetime.datetime.utcnow().date() - \
datetime.timedelta(days=days_back)
if (not yesterday) and hours_back > 0:
yesterday = datetime.datetime.utcnow() - \
datetime.timedelta(hours=hours_back)
yesterday = yesterday.replace(minute=0, second=0, microsecond=0)
start_hour = yesterday.hour
start, end, raw_report = make_report(yesterday, start_hour, hours,
percentile, store_report, region)
details = raw_report[0]

View File

@ -9,6 +9,7 @@ try:
db_host = STACKTACH_DB_HOST
db_username = STACKTACH_DB_USERNAME
db_password = STACKTACH_DB_PASSWORD
db_port = STACKTACH_DB_PORT
install_dir = STACKTACH_INSTALL_DIR
except ImportError:
db_engine = os.environ.get('STACKTACH_DB_ENGINE',
@ -17,6 +18,7 @@ except ImportError:
db_host = os.environ.get('STACKTACH_DB_HOST', "")
db_username = os.environ['STACKTACH_DB_USERNAME']
db_password = os.environ['STACKTACH_DB_PASSWORD']
db_port = os.environ.get('STACKTACH_DB_PORT', "")
install_dir = os.environ['STACKTACH_INSTALL_DIR']
DEBUG = False
@ -35,7 +37,7 @@ DATABASES = {
'USER': db_username,
'PASSWORD': db_password,
'HOST': db_host, # Set to empty string for localhost.
'PORT': '', # Set to empty string for default.
'PORT': db_port, # Set to empty string for default.
}
}
@ -139,6 +141,8 @@ INSTALLED_APPS = (
'stacktach',
)
ALLOWED_HOSTS = ['*']
# A sample logging configuration. The only tangible logging
# performed by this configuration is to send an email to
# the site admins on every HTTP 500 error.
@ -150,7 +154,8 @@ LOGGING = {
'handlers': {
'mail_admins': {
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler'
'class': 'django.utils.log.AdminEmailHandler',
'filters': []
}
},
'loggers': {

View File

@ -1,4 +1,14 @@
#!/bin/bash
#!/bin/sh
### BEGIN INIT INFO
# Provides: stacktach
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start/stop stacktach workers
### END INIT INFO
. /lib/lsb/init-functions
WORKDIR=/srv/www/stacktach/app
DAEMON=/usr/bin/python
@ -9,16 +19,24 @@ export DJANGO_SETTINGS_MODULE="settings"
case "$1" in
start)
echo "Starting server"
echo "Starting stacktach workers"
cd $WORKDIR
/sbin/start-stop-daemon --start --pidfile $PIDFILE --make-pidfile -b --exec $DAEMON $ARGS
;;
stop)
echo "Stopping server"
echo "Stopping stacktach workers"
/sbin/start-stop-daemon --stop --pidfile $PIDFILE --verbose
;;
restart)
echo "Restarting stacktach workers"
/sbin/start-stop-daemon --stop --pidfile $PIDFILE --retry 5
/sbin/start-stop-daemon --start --pidfile $PIDFILE --make-pidfile -b --exec $DAEMON $ARGS
;;
status)
status_of_proc "$DAEMON" "stacktach" && exit 0 || exit $?
;;
*)
echo "Usage: stacktach.sh {start|stop}"
echo "Usage: stacktach.sh {start|stop|restart|status}"
exit 1
;;
esac