Django backend for GlitchTip https://glitchtip.com/

James Kiger c0f745dbb6 Address camel case id discrepancy 11 months ago
.vscode 480a404021 . 1 year ago
alerts 0ce5f2616e feat: support for notifications over Google Chat 11 months ago
api_tokens 32cb1a4c60 lint 1 year ago
apps c0f745dbb6 Address camel case id discrepancy 11 months ago
assets 7b290b5349 HTML emails! 4 years ago
bin 14cf5ca9a7 Remove flower 1 year ago
bitfield c115d82480 lint 1 year ago
difs 241f9afa1a Isort and lint more on CI 1 year ago
djstripe_ext 0d3329afac Remove drf yasg 1 year ago
environments 241f9afa1a Isort and lint more on CI 1 year ago
events 6aed40f754 . 1 year ago
files a037886245 Delete old files in chunks 1 year ago
glitchtip c0f745dbb6 Address camel case id discrepancy 11 months ago
issues f91f5997c2 Merge branch 'master' of gitlab.com:glitchtip/glitchtip-backend into issue_events2 11 months ago
monitoring 13dd870b9d Add prometheus to docker compose for testing 2 years ago
observability 918ff915fa Fix tests 1 year ago
organizations_ext 562cab2823 Update django-organizations 11 months ago
performance 1e27dbc99a test: change timestamps to compute seconds 1 year ago
projects cff6df76ee Fix test problem 1 year ago
releases ff1cc1cf34 Removes ProjectReferenceWithMemberSerializer and uses OrganizationProject instead for nested projects on org detail 1 year ago
sentry 1672bf2a38 . 11 months ago
teams 2f588e276e Refactor project views 1 year ago
templates 36896f77ea Resolve "Style 404 page" 3 years ago
test_api 241f9afa1a Isort and lint more on CI 1 year ago
uploads 40f7adec8c Add uploads folder to repo with gitignore 2 years ago
user_reports 241f9afa1a Isort and lint more on CI 1 year ago
users 0d3329afac Remove drf yasg 1 year ago
.dockerignore 290e8a6dfa Don't include test data in docker images 2 years ago
.gitignore 40f7adec8c Add uploads folder to repo with gitignore 2 years ago
.gitlab-ci.yml 734c5d26b8 Python 3.12 11 months ago
.pylintrc 055e638728 working on adding linting and isort on CI 3 years ago
CONTRIBUTING.md 7b064ebe53 Add diagram link to contribution docs 1 year ago
Dockerfile 734c5d26b8 Python 3.12 11 months ago
LICENSE 5718e945ba Add license 5 years ago
NOTICE.md 8b3a243b24 Add environment tag creation 4 years ago
README.md 863556d7eb . 1 year ago
docker-compose.locust.yml 199dbcc672 Update docker compose version 4 years ago
docker-compose.metrics.yml 13dd870b9d Add prometheus to docker compose for testing 2 years ago
docker-compose.yml 3d3327d6b4 chore(deps): update postgres docker tag to v16 1 year ago
locustfile.py 241f9afa1a Isort and lint more on CI 1 year ago
manage.py eaeeddab42 Update black 1 year ago
poetry.lock 8aacff34aa Merge branch 'renovate/django-stubs-4.x-lockfile' into 'master' 11 months ago
pyproject.toml 4addd7df67 chore(deps): update dependency django-ipware to v6 11 months ago
renovate.json 93b7dc05f9 . 1 year ago

README.md

Gitter

GlitchTip Backend

GlitchTip is an open source, Sentry API compatible error tracking platform. It is a partial fork/mostly re-implementation of Sentry's open source codebase before it went proprietary. Its goals are to be a modern, easy-to-develop error tracking platform that respects your freedom to use it any way you wish. Some differences include:

  • A modern development environment with Python 3 and Django 4.
  • Simplicity over features. We use Postgres to store error data. Our code base is a fraction of the size of Sentry and looks like a typical Django app. We leverage existing open source Django ecosystem apps whenever possible.
  • Lightweight - GlitchTip runs with as little as 1GB of ram, PostgreSQL, and Redis.
  • Respects your privacy. No massive JS bundles. No invasive tracking. No third party spying. Our marketing site runs the privacy-focused Plausible analytics. Self hosted GlitchTip will never report home. We will never know if you run it yourself.
  • Commitment to open source. We use open source tools like GitLab whenever possible. With our MIT license, you can use it for anything you'd like and even sell it. We believe in competition and hope you make GlitchTip even better.

GlitchTip is a stable platform used in production environments for several years.

Developing

We use Docker for development. View our Contributing documentation if you'd like to help make GlitchTip better.

Run local dev environment

  1. Ensure docker and docker-compose are installed
  2. docker compose up
  3. docker compose run --rm web ./manage.py migrate

Run tests with docker-compose run --rm web ./manage.py test

Run HTTPS locally for testing FIDO2 keys

  1. cp docker-compose.yml docker-compose.override.yml
  2. Edit the override file and set command: ./manage.py runsslserver 0.0.0.0:8000
  3. Restart docker compose services

VS Code (Optional)

VS Code can do type checking and type inference. However, it requires setting up a virtual environment.

  1. Install Python. For Ubuntu this is apt install python3-dev python3-venv
  2. Install poetry
  3. Create Python virtual environment python -m venv env
  4. Activate environment source env/bin/activate
  5. Install packages poetry install

Load testing

Locust is built into the dev dependencies. To run with Locust run docker compose -f docker-compose.yml -f docker-compose.locust.yml up

Now go to localhost:8089 to run the test.

Locust will not be installed to production docker images and cannot be run from them.

Observability metrics with Prometheus

  1. Edit monitoring/prometheus/prometheus.yml and set credentials to a GlitchTip auth token
  2. docker compose -f docker-compose.yml -f docker-compose.metrics.yml up

GCP Logging

In order to enable json logging, set the environment as follows::

DJANGO_LOGGING_HANDLER_CLASS=google.cloud.logging_v2.handlers.ContainerEngineHandler
UWSGI_LOG_ENCODER='json {"severity":"info","timestamp":${unix},"message":"${msg}"}}'

Acknowledgements

  • Thank you to the Sentry team for their ongoing open source SDK work and formerly open source backend of which this project is based on.
  • We use element.io for internal chat and public gitter room
  • Plausible Analytics is used for analytics
  • Django - no other web framework is as feature complete
  • django-ninja/Pydantic - brings typed and async-first api design