OopsyPad is a Breakpad minidumps processing tool for RedisDesktopManager.
Python 3MongoDBredis-server(Celery backend)build-essential libcurl4-gnutls-dev pkg-configfor building breakpad deps
Python 3- OSX:
Xcode - Ubuntu:
build-essential libcurl4-gnutls-dev pkg-config
git clone --recursive https://github.com/RedisDesktop/OopsyPad.git
cd OopsyPad/
./3rdparty/build.sh
pip install .Install and run MongoDB.
Note: In case of using virtualenv keep it inside of the repository directory so the server could access 3rd party binaries.
To run the server use oopsy_run_server command.
oopsy_run_serverOptionally you can specify host, port and workers (which by default are 127.0.0.1, 8000 and 4 respectively) as well as any of other gunicorn options.
oopsy_run_server --host example.com --port 5050After that run Celery worker for minidump processing:
oopsy_celery_worker runRestart the worker using the command above each time the server is restarted.
To stop the worker use:
oopsy_celery_worker stopTo show log file contents use:
oopsy_celery_worker logsFor example to show last 10 log entries use -n option:
oopsy_celery_worker logs -n 10There are prod (default), test and dev environments available. To change OopsyPad environment set environment variable OOPSY_ENV, e.g.:
export OOPSY_ENV=testYou may want to add some extra settings for OopsyPad.
To do so you should specify the path to your configuration file in OOPSYPAD_SETTINGS environment variable:
export OOPSYPAD_SETTINGS=/path/to/settings/fileTo enable Sentry (already enabled for prod) you should set ENABLE_SENTRY = True and specify SENTRY_DSN in your custom configuration file or set SENTRY_DSN environment variable.
To use client shell commands you should specify OOPSY_HOST environment variable which is OopsyPad host address.
export OOPSY_HOST=http://example.comTo send symbol files and manage projects with command line you should obtain an authentication token by providing your OopsyPad credentials (email and password) to oopsy_admin login. In case if credentials are valid the token will be stored in ~/.oopsy configuration file.
Symbol files are necessary to decode minidump's binary data into human-readable stack trace.
To generate a symbol file use oopsy_symfile create command:
oopsy_symfile create path/to/product/executable rdm.symRequired arguments are:
bin-path- the path to the product executable filesymfile-name- the name for the resulting symbol file
The output will be the path to the generated symbol file which should be used in oopsy_symfile send command.
export SYMFILE_PATH=`oopsy_symfile create path/to/product/executable rdm.sym`To send generated symbol file to the server use oopsy_symfile send command:
oopsy_symfile send $SYMFILE_PATH 0.9Required arguments are:
symfile-path- the path to the resulting symbol fileversionof the product
Symbol file contains a product name and a platform info so there's no need to include them in the command.
Before sending any dump files to the server you should send your project information including name, minimum allowed version -v and allowed platforms -p using oopsy_admin project add command:
oopsy_admin project add rdm -v 0.9 -p Linux -p MacOS -p WindowsTo delete unwanted project use oopsy_admin project delete command:
oopsy_admin project delete rdmTo list all projects use:
oopsy_admin project listTo send minidumps for processing use oopsy_crash_report command:
oopsy_crash_report /path/to/minidump rdm 0.9 LinuxOr send a POST request to the /crash-report endpoint.
POST request using curl:
curl -X POST \
-F product=rdm \
-F version=0.9 \
-F platform=Linux \
-F upload_file_minidump=@/path/to/minidump \
http://example.com/crash-reportRequired arguments are:
product- product nameversion- product versionplatform- platform where the crash has occurredupload_file_minidump- path to the minidump file