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

David Burke 98195e40ae Merge branch 'renovate/django-allauth-65.x-lockfile' into 'master' 5 часов назад
.vscode 480a404021 . 10 месяцев назад
apps 82ba0aee89 Organizations event throttle 3 дней назад
assets 7b290b5349 HTML emails! 4 лет назад
bin b5495e6dfa Merge branch 'master' into 'master' 2 месяцев назад
bitfield c115d82480 lint 1 год назад
django_rest_mfa a34cbea6e6 Stub out django rest mfa for migration need only 3 недель назад
events 99524e6a65 Remove 3.x to 4.x event migration. 2 месяцев назад
glitchtip bc8c8d1884 Move org user role to constants file 4 дней назад
issues 9d44e0db05 Add old issue/event deletion 6 месяцев назад
monitoring 13dd870b9d Add prometheus to docker compose for testing 2 лет назад
psqlextra 974dc01207 Add IssueTag with partition 8 месяцев назад
sentry be91e188f5 Remove unnecessary space 5 месяцев назад
templates b4791751b6 Rename and adjust urls in password reset templates, remove old frontend user urls 1 месяц назад
test_api 724150c705 Exempt seed_data view from CSRF 1 месяц назад
uploads 40f7adec8c Add uploads folder to repo with gitignore 2 лет назад
.dockerignore 290e8a6dfa Don't include test data in docker images 2 лет назад
.gitignore b14d28fc52 . 1 месяц назад
.gitlab-ci.yml ec8d9aac7c test 3 недель назад
.pylintrc 055e638728 working on adding linting and isort on CI 2 лет назад
CHANGELOG 030146a227 Update changelog 4 дней назад
CONTRIBUTING.md 462307a28d Update CONTRIBUTING.md 8 месяцев назад
Dockerfile 76688bdfdd Consistent casing in Dockerfile 2 месяцев назад
LICENSE 5718e945ba Add license 4 лет назад
NOTICE.md 8b3a243b24 Add environment tag creation 3 лет назад
README.md b5517b6870 Move org viewset to ninja 3 месяцев назад
docker-compose.locust.yml e30c55ccc7 First pass at removing old issues and events 6 месяцев назад
docker-compose.metrics.yml 13dd870b9d Add prometheus to docker compose for testing 2 лет назад
docker-compose.yml 70a610f803 Upgrade to allauth 65.0.0 4 дней назад
locustfile.py d5563370bb Remove more issues/events 6 месяцев назад
manage.py eaeeddab42 Update black 1 год назад
poetry.lock 92e379f2fb Update dependency django-allauth to v65.0.2 5 часов назад
pyproject.toml 88296d6adb Update dependency boto3 to v1.35.29 6 часов назад
renovate.json 93b7dc05f9 . 1 год назад

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, Django 5, async, and types.
  • 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. See API Documentation

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

First set the env var IS_LOAD_TEST to true in docker-compose.yml

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 our 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