Adding analytics cleaning task.

This commit is contained in:
Samuel Clay 2012-12-24 20:24:45 -08:00
parent aa8157b669
commit 57ef407bc8
5 changed files with 149 additions and 4 deletions

View file

@ -7,6 +7,7 @@ from apps.social.models import MSharedStory
from apps.profile.models import Profile from apps.profile.models import Profile
from utils import json_functions as json from utils import json_functions as json
from utils import db_functions from utils import db_functions
from utils import log as logging
class MStatistics(mongo.Document): class MStatistics(mongo.Document):
key = mongo.StringField(unique=True) key = mongo.StringField(unique=True)
@ -318,7 +319,7 @@ class MAnalyticsPageLoad(mongo.Document):
try: try:
delete_old_history() delete_old_history()
except TimeoutError: except TimeoutError:
print "Timed out on deleting old history. Shit." logging.debug("~SK~SB~BR~FWTimed out on deleting old page load history. Shit.")
class MAnalyticsFetcher(mongo.Document): class MAnalyticsFetcher(mongo.Document):
@ -383,5 +384,5 @@ class MAnalyticsFetcher(mongo.Document):
try: try:
delete_old_history() delete_old_history()
except TimeoutError: except TimeoutError:
print "Timed out on deleting old history. Shit." logging.debug("~SK~SB~BR~FWTimed out on deleting old fetch history. Shit.")

View file

@ -1,6 +1,7 @@
from celery.task import Task from celery.task import Task
from apps.statistics.models import MStatistics from apps.statistics.models import MStatistics
from apps.statistics.models import MFeedback from apps.statistics.models import MFeedback
from apps.statistics.models import MAnalyticsPageLoad, MAnalyticsFetcher
from utils import log as logging from utils import log as logging
@ -19,3 +20,12 @@ class CollectFeedback(Task):
def run(self, **kwargs): def run(self, **kwargs):
logging.debug(" ---> ~FMCollecting feedback...") logging.debug(" ---> ~FMCollecting feedback...")
MFeedback.collect_feedback() MFeedback.collect_feedback()
class CleanAnalytics(Task):
name = 'clean-analytics'
def run(self, **kwargs):
logging.debug(" ---> ~FMCleaning analytics...")
MAnalyticsFetcher.clean()
MAnalyticsPageLoad.clean()
logging.debug(" ---> ~FMDone cleaning analytics...")

View file

@ -0,0 +1,119 @@
#! /bin/sh
### BEGIN INIT INFO
# Provides: spawn-fcgi-munin-graph
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: starts FastCGI for Munin-Graph
### END INIT INFO
# --------------------------------------------------------------
# Munin-CGI-Graph Spawn-FCGI Startscript by Julien Schmidt
# eMail: munin-trac at julienschmidt.com
# www: http://www.julienschmidt.com
# --------------------------------------------------------------
# Install:
# 1. Copy this file to /etc/init.d
# 2. Edit the variables below
# 3. run "update-rc.d spawn-fcgi-munin-graph defaults"
# --------------------------------------------------------------
# Last Update: 13. November 2012
#
# Please change the following variables:
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=spawn-fcgi-munin-graph
PID_FILE=/var/run/munin/fcgi-graph.pid
SOCK_FILE=/var/run/munin/fcgi-graph.sock
DAEMON=/usr/bin/spawn-fcgi
DAEMON_OPTS="-s $SOCK_FILE -U www-data -u www-data -g www-data /usr/lib/cgi-bin/munin-cgi-graph -P $PID_FILE"
# --------------------------------------------------------------
# No edits necessary beyond this line
# --------------------------------------------------------------
if [ ! -x $DAEMON ]; then
echo "File not found or is not executable: $DAEMON!"
exit 0
fi
status() {
if [ ! -r $PID_FILE ]; then
return 1
fi
FCGI_PID=`cat $PID_FILE`
if [ -z "${FCGI_PID}" ]; then
return 1
fi
FCGI_RUNNING=`ps -p ${FCGI_PID} | grep ${FCGI_PID}`
if [ -z "${FCGI_RUNNING}" ]; then
return 1
fi
return 0
}
start() {
if status; then
echo "FCGI is already running!"
exit 1
else
$DAEMON $DAEMON_OPTS
fi
}
stop () {
if ! status; then
echo "No PID-file at $PID_FILE found or PID not valid. Maybe not running"
exit 1
fi
# Kill process
kill -9 `cat $PID_FILE`
# Remove PID-file
rm -f $PID_FILE
# Remove Sock-File
rm -f $SOCK_FILE
}
case "$1" in
start)
echo "Starting $NAME: "
start
echo "... DONE"
;;
stop)
echo "Stopping $NAME: "
stop
echo "... DONE"
;;
force-reload|restart)
echo "Stopping $NAME: "
stop
echo "Starting $NAME: "
start
echo "... DONE"
;;
status)
if status; then
echo "FCGI is RUNNING"
else
echo "FCGI is NOT RUNNING"
fi
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac
exit 0

14
fabfile.py vendored
View file

@ -301,6 +301,7 @@ def setup_common():
setup_logrotate() setup_logrotate()
setup_nginx() setup_nginx()
configure_nginx() configure_nginx()
setup_munin()
def setup_app(): def setup_app():
setup_common() setup_common()
@ -351,13 +352,12 @@ def setup_task():
def setup_installs(): def setup_installs():
sudo('apt-get -y update') sudo('apt-get -y update')
sudo('apt-get -y upgrade') sudo('apt-get -y upgrade')
sudo('apt-get -y install build-essential gcc scons libreadline-dev sysstat iotop git zsh python-dev locate python-software-properties libpcre3-dev libncurses5-dev libdbd-pg-perl libssl-dev make pgbouncer python-psycopg2 libmemcache0 python-memcache libyaml-0-2 python-yaml python-numpy python-scipy python-imaging munin munin-node munin-plugins-extra curl monit') sudo('apt-get -y install build-essential gcc scons libreadline-dev sysstat iotop git zsh python-dev locate python-software-properties libpcre3-dev libncurses5-dev libdbd-pg-perl libssl-dev make pgbouncer python-psycopg2 libmemcache0 python-memcache libyaml-0-2 python-yaml python-numpy python-scipy python-imaging curl monit')
# sudo('add-apt-repository ppa:pitti/postgresql') # sudo('add-apt-repository ppa:pitti/postgresql')
sudo('apt-get -y update') sudo('apt-get -y update')
sudo('apt-get -y install postgresql-client') sudo('apt-get -y install postgresql-client')
sudo('mkdir -p /var/run/postgresql') sudo('mkdir -p /var/run/postgresql')
sudo('chown postgres.postgres /var/run/postgresql') sudo('chown postgres.postgres /var/run/postgresql')
put('config/munin.conf', '/etc/munin/munin.conf', use_sudo=True)
with settings(warn_only=True): with settings(warn_only=True):
run('git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh') run('git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh')
run('curl -O http://peak.telecommunity.com/dist/ez_setup.py') run('curl -O http://peak.telecommunity.com/dist/ez_setup.py')
@ -720,6 +720,16 @@ def setup_redis():
sudo('/etc/init.d/redis stop') sudo('/etc/init.d/redis stop')
sudo('/etc/init.d/redis start') sudo('/etc/init.d/redis start')
def setup_munin():
sudo('apt-get update')
sudo('apt-get install -y munin munin-node munin-plugins-extra spawn-fcgi')
put('config/munin.conf', '/etc/munin/munin.conf', use_sudo=True)
put('config/spawn_fcgi_munin_graph.conf', '/etc/init.d/spawn_fcgi_munin_graph', use_sudo=True)
sudo('chmod u+x /etc/init.d/spawn_fcgi_munin_graph')
sudo('/etc/init.d/spawn_fcgi_munin_graph start')
sudo('update-rc.d spawn_fcgi_munin_graph defaults')
def setup_db_munin(): def setup_db_munin():
sudo('cp -frs %s/config/munin/mongo* /etc/munin/plugins/' % env.NEWSBLUR_PATH) sudo('cp -frs %s/config/munin/mongo* /etc/munin/plugins/' % env.NEWSBLUR_PATH)
sudo('cp -frs %s/config/munin/pg_* /etc/munin/plugins/' % env.NEWSBLUR_PATH) sudo('cp -frs %s/config/munin/pg_* /etc/munin/plugins/' % env.NEWSBLUR_PATH)

View file

@ -367,6 +367,11 @@ CELERYBEAT_SCHEDULE = {
'schedule': datetime.timedelta(hours=24), 'schedule': datetime.timedelta(hours=24),
'options': {'queue': 'beat_tasks'}, 'options': {'queue': 'beat_tasks'},
}, },
'clean-analytics': {
'task': 'clean-analytics',
'schedule': datetime.timedelta(hours=24),
'options': {'queue': 'beat_tasks'},
},
} }
# ========= # =========