SelfHost #2 | BugSink β An Error Tracking Tool
I am regular follower of https://selfh.st/ , last week they showcased about BugSink. Bugsink is a tool to track errors in your applications that you can self-host. Itβs easy to install and use, is compatible with the Sentry SDK, and is scalable and reliable.
When an application breaks, finding and fixing the root cause quickly is critical. Hosted error tracking tools often make you trade privacy for convenience, and they can be expensive. On the other hand, self-hosted solutions are an alternative, but they are often a pain to set up and maintain.
What Is Error Tracking?
When code is deployed in production, errors are inevitable. They can arise from a variety of reasons like bugs in the code, network failures, integration mismatches, or even unforeseen user behavior. To ensure smooth operation and user satisfaction, error tracking is essential.
Error tracking involves monitoring and recording errors in your application code, particularly in production environments. A good error tracker doesnβt just log errors; it contextualizes them, offering insights that make troubleshooting straightforward.
Here are the key benefits of error tracking
- Early Detection: Spot issues before they snowball into critical outages.
- Context-Rich Reporting: Understand the βwhat, when, and whyβ of an error.
- Faster Debugging: Detailed stack traces make it easier to pinpoint root causes.
Effective error tracking tools allow developers to respond to errors proactively, minimizing user impact.
Why Bugsink?
Bugsink takes error tracking to a new level by prioritizing privacy, simplicity, and compatibility.
1. Built for Self-Hosting
Unlike many hosted error tracking tools that require sensitive data to be shared with third-party servers, Bugsink is self-hosted. This ensures you retain full control over your data, a critical aspect for privacy-conscious teams.
2. Easy to Set Up and Manage
Whether youβre deploying it on your local server or in the cloud, the experience is smooth.
3. Resource Efficiency
Bugsink is designed to be lightweight and efficient. It doesnβt demand hefty server resources, making it an ideal choice for startups, small teams, or resource-constrained environments.
4. Compatible with Sentry
If youβve used Sentry before, youβll feel right at home with Bugsink. It offers Sentry compatibility, allowing you to migrate effortlessly or use it alongside existing tools. This compatibility also means you can leverage existing SDKs and integrations.
5. Proactive Notifications
Bugsink ensures youβre in the loop as soon as something goes wrong. Email notifications alert you the moment an error occurs, enabling swift action. This proactive approach reduces the mean time to resolution (MTTR) and keeps users happy.
In this blog, i jot down my experience on using BugSink with Python.
1. Run using Docker
There are many ways proposed for BugSink installation, https://www.bugsink.com/docs/installation/. In this blog, i am trying using docker.
docker pull bugsink/bugsink:latest docker run \ -e SECRET_KEY=ab4xjs5wfnP2XrUwRJPtmk1sEnMcx9d2mta8vtbdZ4oOtvy5BJ \ -e CREATE_SUPERUSER=admin:admin \ -e PORT=8000 \ -p 8000:8000 \ bugsink/bugsink
2. Log In, Create a Team, Project
The Application will run at port 8000.
Login using admin/admin. Create a new team, by clicking the top right button.
Give a name to the team,
then create a project, under this team,
After creating a project, you will be able to see like below,
You will get an individual DSN , like http://9d0186dd7b854205bed8d60674f349ea@localhost:8000/1.
3. Attaching DSN to python app
import sentry_sdk sentry_sdk.init( "http://d76bc0ccf4da4423b71d1fa80d6004a3@localhost:8000/1", send_default_pii=True, max_request_body_size="always", traces_sample_rate=0, ) def divide(num1, num2): return num1/num2 divide(1, 0)
The above program, will throw an Zero Division Error, which will be reflected in BugSink application.
The best part is you will get the value of variables at that instance. In this example, you can see values of num1 and num2.
There are lot more awesome features out there https://www.bugsink.com/docs/.