OopsyPad is a Breakpad minidumps processing tool for RedisDesktopManager.
Python 3
MongoDB
redis-server
(Celery backend)build-essential libcurl4-gnutls-dev pkg-config
for 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_server
Optionally 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 5050
After that run Celery worker for minidump processing:
oopsy_celery_worker run
Restart the worker using the command above each time the server is restarted.
To stop the worker use:
oopsy_celery_worker stop
To show log file contents use:
oopsy_celery_worker logs
For example to show last 10 log entries use -n
option:
oopsy_celery_worker logs -n 10
There are prod
(default), test
and dev
environments available. To change OopsyPad environment set environment variable OOPSY_ENV
, e.g.:
export OOPSY_ENV=test
You 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/file
To 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.com
To 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.sym
Required 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.9
Required arguments are:
symfile-path
- the path to the resulting symbol fileversion
of 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 Windows
To delete unwanted project use oopsy_admin project delete
command:
oopsy_admin project delete rdm
To list all projects use:
oopsy_admin project list
To send minidumps for processing use oopsy_crash_report
command:
oopsy_crash_report /path/to/minidump rdm 0.9 Linux
Or 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-report
Required arguments are:
product
- product nameversion
- product versionplatform
- platform where the crash has occurredupload_file_minidump
- path to the minidump file