Best Error Monitoring Services for Elixir Phoenix

Once you’ve deployed your Elixir Phoenix app to your users, it’s critical you manage errors to resolve them as quickly as possible. Error monitoring services will notify you when a user experiences an error, bug, or any unhandled exceptions while using your service. It is one the the first services you should add to a production application to give you confidence in the health of your software.

Based on our five years of experience with Phoenix in production and extensive testing, we determined that these are the three Elixir error monitoring services you should use for your Phoenix applications. As a bonus, all three are open source projects.

The overall best error monitoring service to integrate into your Elixir app is Honeybadger.

What are the best error monitoring services for Elixir Phoenix?

  1. HoneybadgerEditor’s Choice
  2. SentryBest Combination of Error and Performance Monitoring
  3. AppSignalBest Onboarding and Easy Setup

#1. Honeybadger

Sign Up for Free Trial | Editor’s Choice

error details

Pros and cons

Pros

  • Easy to set up with dedicated Elixir package
  • They run Elixir in production, so they have experience using Elixir
  • Comprehensive documentation and email support from developers

Cons

  • Does not offer application performance monitoring

Our experience with Honeybadger

We signed up for a Honeybadger account and followed the instructions to add Honeybadger to our app. For testing, we updated the configuration to report errors in development.

Once we had our Phoenix app running in development, we added a function to throw Elixir errors when we visited the Phoenix homepage. With that setup, we visited the homepage in the browser and checked for the error message on the Honeybadger dashboard.

Follow along in our guides on how to set up exception monitoring for Elixir with Honeybadger and the HelloHoneybadger project on GitHub.

Ease of Use

It was easy to follow the Honeybadger for Elixir documentation to add exception and error tracking. The written documentation is clear and concise. If you prefer video, there is also a Getting Started video. We added the Honeybadger package to our mix.exs file, updated our project config, and then added a couple lines of code to the Router module. If you are deployed to Heroku, there is also a Heroku Add-on for easy integration through the Heroku marketplace.

Available Features

Honeybadger has all the features you need to track errors and get notifications on the health of your system. You can set breadcrumb events, filter sensitive data, and customize your error grouping. It is possible to send messages to a variety of third-party services like email, Pager Duty, Slack, Trello, or GitHub.

Elixir and Erlang have a unique take on exception handling. Honeybadger uses Elixir in its own production apps, so you know they’ve tailored the features based on first-hand experience with the BEAM.

However, Honeybadger might not be a good choice if you a looking for an all-in-one service for both error and application performance monitoring. It is focused on error and uptime monitoring and it does that extremely well.

Documentation / Support

The documentation is extensive and is focused on Elixir-specific guides and issues. Support is exceptional. With Honeybadger, it is a small team focused on providing an exceptional customer experience. You can email your questions and will quickly get a response. Some of the other options don’t provide any email support (and even Twitter DMs are closed).

Conclusion

The Honeybadger team uses Elixir in production. We like to support Elixir companies and the first-hand experience means better features for Elixir devs. Support and documentation are exceptional. Pricing is reasonable compared to the other companies we reviewed. Honeybadger is the best overall error monitoring service for Elixir.

Sign Up for Free Trial

#2. Sentry

Sign Up for Free Trial | Best Combination of Error and Performance Monitoring

Resolved Sentry Error Exception for Elixir Phoenix

Pros and cons

Pros

  • Support for a wide variety of frameworks including both frontend and backend
  • Includes Performance Monitoring to measure metrics like throughput and latency

Cons

  • Less focus on Elixir developers and projects compared to other services
  • No email support for some customers

Our experience with Sentry

We signed up for a Sentry account and followed the instructions to add Sentry to our app. For testing, we updated the configuration to report errors in development.

We created an error in an app in development. Then we checked for the error message on the Sentry dashboard.

Follow along in our guides on how to set up exception monitoring for Elixir with Sentryand the HelloSentry project on GitHub.

Ease of Use

Once you choose Elixir as your platform, Sentry walks you through setup in its onboarding process. We had to add the Sentry package to our mix.exs file, update our project config, and then add a couple lines of code to Endpoint module. With the dashboard, it easy to view, triage, and resolve errros.

Available Features

Sentry provides standard features for error monitoring and notifications. It provides a number of different configuration options you can set in your config files. It also offers data scrubbing, event filtering, context/breadcrumbs, fingerprinting, and has the option to send source code with the error.

You can set up integrations with many different third-party applications like GitHub, Slack, Jira, and many more. It support a ton of different languages and platforms including both frontend and backend frameworks.

Sentry also makes it easy to add performance monitoring. With performance monitoring, Sentry tracks application performance, measures metrics like throughput and latency, and displays the impact of errors across your system.

Documentation / Support

Sentry provides an Elixir-specific getting started guide to walk you through setup. It also provides an Elixir SDK you can add as a mix.exs package. Sentry limits email support to only customers on certain plans. However, it does offer a community forum to ask questions.

Conclusion

Sentry is a great option if you want both error and performance monitoring from a single service. It provides support for nearly every language and platform. The main downside is a lack of direct email support if you run into any issues.

Sign Up for Free Trial

#3. AppSignal

Sign Up for Free Trial | Best Onboarding and Easy Setup

Pros and cons

Pros

  • Uses a mix task to parse your code and inject AppSignal config and setup code
  • Error and Performance Monitoring in a single service
  • Direct email support from AppSignal developers

Cons

  • Dashboard isn’t as intuitive as other options

Our experience with AppSignal

We created simple a Phoenix application and ran the server on our local machine. Next, we signed up for an AppSignal account and followed the instructions to add AppSignal to our app using a mix task.

We added a function to throw Elixir errors from the homepage and checked for the error notification on the AppSignal dashboard.

Follow along in our guides on how to set up exception monitoring for Elixir Phoenix with AppSignaland the HelloAppSignal project on GitHub.

Ease of Use

AppSignal had the easiest installation of all the services we tried. Once you sign up, it immediately walks you through onboarding. First you add the :appsignal_phoenix hex package. Then you run mix appsignal.install YOUR_PUSH_API_KEY from the command line. It guides you through a setup sequence right in the terminal. Based on what you select, AppSignal injects the required config and code into your project. When you receive errors, the dashboard allows you to view, triage, and resolve errors. However, AppSignal’s dashboard seemed to make you search around for error details more than the other services.

Available Features

AppSignal provides standard features for monitoring and notifications. It provides a number of different configuration options you can choose during the automated setup process. It also offers host monitoring, uptime monitoring, anomaly detection, and error filtering.

You can set up integrations with many different third-party applications like PagerDuty, Slack, Discord, and many others. It supports Ruby, Elixir, Node.js, and frontend frameworks.

AppSignal makes it easy to add performance monitoring. With performance monitoring, AppSignal helps you inspect and improve the performance of your applications. You’ll get alerted when requests are slow and can track overall performance metrics.

Documentation / Support

AppSignal provides an Elixir-specific getting started guide to walk you through setup. It also provides an Elixir hex package you add as a mix.exs package. AppSignal offers email support with replies directly from developers.

Conclusion

AppSignal’s set up with a mix task was really slick. It made setup super easy. However, we thought the dashboard was the least intuitive out of the services we reviewed. With that said, it is another great option if you want both error and performance monitoring from a single service. In addition, it is focused on only Ruby, Elixir, and Node.js, so the Elixir documentation was solid.

Sign Up for Free Trial

Frequently Asked Questions

What other services did you consider?

We also looked at AirBrake, Rollbar, and New Relic. While these services all provided a way to track errors in your Phoenix application, the lack of documentation made it clear Elixir is not a strong focus for these companies.

What is the difference between error monitoring and application performance monitoring?

Error monitoring services notify you when your users find a bug, error, or exception in your software. Along with the notification, the service will provide debugging information so you don’t have to search through your logs. Performance monitoring services notify you when requests and background jobs are taking longer than expected. You get alerts about slow requests based on thresholds you configure in the service.

What are the best ways to debug my code once I find an error?

The simplest approach is to use IO.inspect/2 to identify bugs in your code. If you want to learn about some other methods, check our article Debugging Elixir Phoenix: Beyond IO.inspect/2.

What is tracing?

Tracing allows you to “trace” the path of an end-to-end request as it moves through your application. This lets you pinpoint errors or performance bottlenecks in individual services that are negatively affecting the overall system.

Methodology

We conducted extensive research into the options for Elixir and Phoenix. We looked for services with Elixir specific documentation and setup.

During evaluation, we created simple a Phoenix application and ran it on our local machine. We created an account with each service and followed the instructions to configure our app. For testing, we updated the configuration to report errors in development.

Once we had our Phoenix app running in development, we added a function to throw an error when we visited the Phoenix homepage. With that setup, we visited the homepage and then checked for the error notification on the service. Finally, we examined the available dashboard and options for sending messages with other project management and messaging platforms.

Rating Criteria

We assessed each platform in three areas:

  • Ease of Use
  • Available Features
  • Documentation / Support

Ease of Use

Ideally, the service will provide a good user experience (UX) to help you get up and running quickly and easily. The best services will have resources designed to make setting up the service for Phoenix applications as seamless as possible.

Available Features

The best contenders will offer notifications and other monitoring options that can meet the needs of your application.

Additionally, these platforms will provide a dashboard with real-time data including all other errors you receive. Plus it will have easy integration for notifications using other tools.

Finally, the BEAM provides many out of the box features not available from other languages. Furthermore, it provides a unique approach using the supervision tree to handle errors and exceptions when a process dies. We rate services better if they are tailored for these features.

Documentation / Support

The best services will have Elixir and Phoenix specific documentation with FAQs addressing common issues.

For support, we expect companies to offer help via email or help ticket. If we needed assistance, we made a note about the responsiveness of our request.

Services get a bonus for having a large collection of community-developed guides and other content available for use and troubleshooting.

Want To Know How To Deploy Phoenix Apps Using A single Command?

This brand-new FREE training reveals the most powerful new way to reduce your deployment time and skyrocket your productivity… and truly see your programming career explode off the charts!