HowFast Monitoring lets you monitor public URLs on your backend, see the response time and its evolution over time, and be notified if the URL or the backend stops responding (server down, expired certificate, you name it). With this approach, you get "real uptime", monitored from outside of your infrastructure, and you can spot internal issues if you are using health endpoints.

Here, we can see what was the impact of switching to Netlify - from the Deepki team

However, once you get more traffic, identifying what is slow or how often actual users receive errors - for production endpoints, not health endpoints - is very hard with this class of external monitoring tools.

This is why I am proud to release HowFast APM today! An APM (Application Performance Monitoring) solution gives you insights on what endpoints are the slowest, how often they get called, as well as historical data about the performance of each of them. No need to make a list of them beforehand, or simulate the routes: the APM agent will discover all the routes used, in real time, from the actual users hitting your API.

Try out the beta today

HowFast APM is currently publicly available for Flask backends (Python). What you need:

  • a recent version of Python (3.6+)
  • an identifier for your application, that you can get from HowFast's UI
  • to install the Flask middleware

The first step is to get your application identifier, also called the DSN (Data Source Name). Head to https://www.howfast.tech/apm/ and create a new DSN:

Create a DSN for each API you want to track

Since you probably don't want to mix staging and production data, we recommend that you create a dedicated DSN for each environment.

The next step is to install the APM agent:

# You can of course use your favorite package manager: pipenv, poetry...
pip install howfast-apm[flask]

The next (and last!) step is to use the middleware with your Flask application:

from howfast_apm import HowFastFlaskMiddleware

# Create your Flask app
app = Flask(__name__, ...)

# Instanciate all your other middlewares first

# Setup the APM middleware last, so that it can track the time spent inside other middlewares
HowFastFlaskMiddleware(app, app_id='your-shiny-dsn')

If you have the ability to set environment variables for different environments, you can even define the HOWFAST_APM_DSN environment variable and just initialize the APM like this:

# Install the middleware
HowFastFlaskMiddleware(app)

Now, deploy and then just make a few requests to your newly instrumented application. Tadaaa:

Now you have the list of URLs used in production, along with their average response time

For now you can see the average response time of each of your URLs, aggregated over the last 7 or 30 days.

This is just the beginning, and we will be adding more features in the next few weeks: graph of the average response time, day after day to help you identify faulty deploys, time budgets to alert you whenever more than X% of the requests respond in more than Y ms, etc.

If you have a specific use-case, I'd love to hear about it - please contact me on Twitter or by email at mickael@howfast.tech.

Also, the APM codebase is open-source on GitHub, feel free to contribute by opening issues or pull requests.

So what are you waiting for? Head to https://www.howfast.tech/apm/ and get started, it's entirely free if you join during the beta :)