How to setup self-hosted Sentry
Published at April 27, 2023
Introduction
In today's fast-paced world of software development, having an efficient alert system, error reporting, and application performance monitoring solution is crucial for maintaining the overall performance and stability of applications. Sentry is an open-source tool designed for this purpose, offering a user-friendly, straightforward experience for developers. With a variety of libraries and frameworks available for integration, Sentry stands out as a reliable choice for development teams. This article will delve into Sentry's features, its open-source nature, and the advantages of using it with docker-compose on a dedicated VM.
Features of Sentry
- Alert System: Sentry provides an effective alert system that notifies developers about critical issues in real-time. This allows teams to proactively address problems, ensuring the application's stability and reducing downtime.
- Error Reporting: Sentry's error reporting feature collects and aggregates errors from various sources, presenting them in a comprehensive and easily understandable manner. This helps developers identify and fix issues faster, improving application performance and user experience.
- Application Performance Monitoring: Sentry's APM feature enables developers to track and monitor the performance of applications, making it easier to identify bottlenecks and optimize code for better performance.
Integration and Compatibility
Sentry's ease of use is further enhanced by its compatibility with various programming languages and frameworks. With numerous libraries available for integration, developers can seamlessly incorporate Sentry into their projects, regardless of the language or framework they are working with.
Open Source and Self-Hosted
One of the many advantages of Sentry is its open-source nature, which allows developers to access its source code and customize it to suit their specific requirements. Additionally, Sentry can be installed as a self-hosted solution, offering flexibility in terms of deployment options. This enables teams to choose between Kubernetes and docker-compose for their preferred hosting method.
Kubernetes vs. Docker-Compose: Stability Matters
While both Kubernetes and docker-compose are viable options for hosting Sentry, our experience has shown that running Sentry on docker-compose on a dedicated VM provides a more stable environment. In contrast, Sentry installations on Kubernetes have been found to be full of glitches, leading to a less reliable experience.
Integrations with Communication Platforms
Sentry's versatility extends beyond its compatibility with various programming languages and frameworks. It also boasts excellent integration capabilities with popular communication platforms like Slack, Telegram, and Discord. This makes it incredibly easy to incorporate Sentry into a ChatOps architecture design.
ChatOps refers to the use of chat tools and services to facilitate efficient communication and collaboration within development and operations teams. By integrating Sentry with these communication platforms, developers can receive real-time alerts and notifications directly in their chat tools, making it easier to collaborate and address issues as they arise.
This seamless integration with chat platforms contributes to a more streamlined and efficient workflow for developers, as they can quickly discuss and troubleshoot issues without having to switch between multiple applications. The ability to involve Sentry in ChatOps architecture designs further strengthens its value as a comprehensive solution for alert systems, error reporting, and application performance monitoring.
Sentry vs. Datadog vs. New Relic
Selecting the right monitoring solution for your development team can be a challenging task, given the multitude of tools available in the market. In this comparison table below, we provide a fair comparison of three popular monitoring solutions: Sentry, Datadog, and New Relic. While Datadog and New Relic may be considered more feature-rich than Sentry, it's essential to assess each solution based on its unique features, ease of use, and overall effectiveness to make an informed decision.
Feature/Capability | Sentry | Datadog | New Relic |
---|---|---|---|
Primary Focus | Error monitoring & APM | Infrastructure & APM monitoring | APM & infrastructure |
Open Source | Yes | No | No |
Alert System | Yes | Yes | Yes |
Error Reporting | Yes | Yes | Yes |
Application Performance Monitoring (APM) | Yes | Yes | Yes |
Infrastructure Monitoring | Limited | Comprehensive | Comprehensive |
Integrations (Communication Platforms) | Good (Slack, Telegram, Discord) | Extensive (Slack, Microsoft Teams, etc.) | Extensive (Slack, Microsoft Teams, etc.) |
Supported Languages and Frameworks | Multiple | Multiple | Multiple |
Deployment Options (Kubernetes, Docker-Compose) | Self-hosted (Kubernetes, Docker-Compose) | Cloud-hosted | Cloud-hosted |
Pricing Model | Free & Paid (Self-hosted) | Free & Paid (Cloud-hosted) | Free & Paid (Cloud-hosted) |
Setup Self-hosted Sentry
We recommend to setup self-hosted Sentry using Docker Compose rather than install it on Kubernetes, since we see many glitches in installation on Kubernetes. Installing Sentry on VM via Docker Compose is pretty straightforward.
Prerequisites
We require a minimum of one virtual machine (VM) with appropriate specifications to ensure optimal performance. Sentry demands significant CPU resources; therefore, it is essential to allocate sufficient CPU power to your VM. The following example illustrates a Terraform resource configuration for setting up a VM with a 4-core CPU and 16 GB of RAM on Google Cloud Platform (GCP). Alternatively, you can choose to manually create a VM tailored to your specific requirements.
Apply Terraform:
~$ terraform apply
After executing the aforementioned Terraform configuration, we will obtain a Public IP Address. To associate this IP address with your domain, create an A Record in your DNS management system. For instance:
A 32.322.322.344 sentry.example.com
We need to install both Docker and Docker Compose which can be done through these commands, assuming we are using Ubuntu Linux here
Install Sentry
Download Sentry latest release:
~$ wget https://github.com/getsentry/self-hosted/archive/refs/tags/23.4.0.zip
~$ unzip 23.4.0.zip
~$ cd self-hosted-23.4.0
Download Sentry Dependencies by executing install.sh
and wait a few minutes until it's done.
~$ sudo chmod +x install.sh
~$ ./install.sh
Run Docker Compose to setup Sentry:
~$ docker-compose up -d
Setup Nginx as Reverse Proxy
Sentry Web Application is running on localhost:9000
and cannot be accessed from outside. We will install Nginx along with Certbot to get SSL Certificate for our Sentry VM.
~$ sudo apt install nginx
Create a Nginx Configuration to handle request for Sentry Web:
~$ sudo vim /etc/nginx/conf.d/sentry.conf
Restart Nginx:
~$ sudo service nginx restart
Install Certbot to get Let's Encrypt SSL Certificate:
~$ sudo certbot --nginx -d sentry.example.com
Boom! You now have Sentry Self-hosted installed on your VM. Access it on https://sentry.example.com
About 8grams
We are a small DevOps Consulting Firm that has a mission to empower businesses with modern DevOps practices and technologies, enabling them to achieve digital transformation, improve efficiency, and drive growth.
Ready to transform your IT Operations and Software Development processes? Let's join forces and create innovative solutions that drive your business forward.
Subscribe to our newsletter for cutting-edge DevOps practices, tips, and insights delivered straight to your inbox!