---
title: Express
description: Express is a Node.js web application framework.
breadcrumbs: Docs > Integrations > Express
---

# Express

{% image
   source="https://datadog-docs.imgix.net/images/integrations/expressjs/expressjs_graph.db8b25398e710a14ce956ee0f333a41c.png?auto=format"
   alt="ExpressJS graph" /%}

## Overview{% #overview %}

{% alert level="danger" %}
The Express integration is deprecated and has been replaced with Datadog APM. Datadog APM generates the same [metrics](https://docs.datadoghq.com/tracing/runtime_metrics/nodejs/) as the Express integration and also has many other features and integrations. Datadog highly recommends upgrading to [APM](https://docs.datadoghq.com/tracing/connect_logs_and_traces/nodejs/) as the Express integration will receive no further updates.
{% /alert %}

Add the Datadog [connect-datadog middleware](https://www.npmjs.com/package/connect-datadog) to your application to:

- Alert on your response times
- Monitor your response code

## Setup{% #setup %}

The Express integration requires the Datadog Agent DogStatsD server in order to forward your collected metrics to Datadog.

After [installing the Agent](https://app.datadoghq.com/account/settings/agent/latest) on your host, see the [DogStatsD Setup documentation](https://docs.datadoghq.com/developers/dogstatsd/?tab=hostagent#setup) to enable it.

### Configuration{% #configuration %}

1. Install the middleware

   ```shell
   npm install connect-datadog
   ```

1. Modify your code to add the Datadog middleware:

   ```js
   var dd_options = {
     'response_code':true,
     'tags': ['app:my_app']
   }
   
   var connect_datadog = require('connect-datadog')(dd_options);
   
   // Add your other middleware
   app.use(...);
   
   // Add the datadog-middleware before your router
   app.use(connect_datadog);
   app.use(router);
   ```

## Data Collected{% #data-collected %}

### Metrics{% #metrics %}

|  |
|  |
| **node.express.router.response\_code.100**(rate)           | The rate of requests that generate responses with a 100 status code.*Shown as response* |
| **node.express.router.response\_code.101**(rate)           | The rate of requests that generate responses with a 101 status code.*Shown as response* |
| **node.express.router.response\_code.102**(rate)           | The rate of requests that generate responses with a 102 status code.*Shown as response* |
| **node.express.router.response\_code.200**(rate)           | The rate of requests that generate responses with a 200 status code.*Shown as response* |
| **node.express.router.response\_code.201**(rate)           | The rate of requests that generate responses with a 201 status code.*Shown as response* |
| **node.express.router.response\_code.202**(rate)           | The rate of requests that generate responses with a 202 status code.*Shown as response* |
| **node.express.router.response\_code.203**(rate)           | The rate of requests that generate responses with a 203 status code.*Shown as response* |
| **node.express.router.response\_code.204**(rate)           | The rate of requests that generate responses with a 204 status code.*Shown as response* |
| **node.express.router.response\_code.205**(rate)           | The rate of requests that generate responses with a 205 status code.*Shown as response* |
| **node.express.router.response\_code.206**(rate)           | The rate of requests that generate responses with a 206 status code.*Shown as response* |
| **node.express.router.response\_code.207**(rate)           | The rate of requests that generate responses with a 207 status code.*Shown as response* |
| **node.express.router.response\_code.208**(rate)           | The rate of requests that generate responses with a 208 status code.*Shown as response* |
| **node.express.router.response\_code.226**(rate)           | The rate of requests that generate responses with a 226 status code.*Shown as response* |
| **node.express.router.response\_code.300**(rate)           | The rate of requests that generate responses with a 300 status code.*Shown as response* |
| **node.express.router.response\_code.301**(rate)           | The rate of requests that generate responses with a 301 status code.*Shown as response* |
| **node.express.router.response\_code.302**(rate)           | The rate of requests that generate responses with a 302 status code.*Shown as response* |
| **node.express.router.response\_code.303**(rate)           | The rate of requests that generate responses with a 303 status code.*Shown as response* |
| **node.express.router.response\_code.304**(rate)           | The rate of requests that generate responses with a 304 status code.*Shown as response* |
| **node.express.router.response\_code.305**(rate)           | The rate of requests that generate responses with a 305 status code.*Shown as response* |
| **node.express.router.response\_code.306**(rate)           | The rate of requests that generate responses with a 306 status code.*Shown as response* |
| **node.express.router.response\_code.307**(rate)           | The rate of requests that generate responses with a 307 status code.*Shown as response* |
| **node.express.router.response\_code.308**(rate)           | The rate of requests that generate responses with a 308 status code.*Shown as response* |
| **node.express.router.response\_code.400**(rate)           | The rate of requests that generate responses with a 400 status code.*Shown as response* |
| **node.express.router.response\_code.401**(rate)           | The rate of requests that generate responses with a 401 status code.*Shown as response* |
| **node.express.router.response\_code.402**(rate)           | The rate of requests that generate responses with a 402 status code.*Shown as response* |
| **node.express.router.response\_code.403**(rate)           | The rate of requests that generate responses with a 403 status code.*Shown as response* |
| **node.express.router.response\_code.404**(rate)           | The rate of requests that generate responses with a 404 status code.*Shown as response* |
| **node.express.router.response\_code.405**(rate)           | The rate of requests that generate responses with a 405 status code.*Shown as response* |
| **node.express.router.response\_code.406**(rate)           | The rate of requests that generate responses with a 406 status code.*Shown as response* |
| **node.express.router.response\_code.407**(rate)           | The rate of requests that generate responses with a 407 status code.*Shown as response* |
| **node.express.router.response\_code.408**(rate)           | The rate of requests that generate responses with a 408 status code.*Shown as response* |
| **node.express.router.response\_code.409**(rate)           | The rate of requests that generate responses with a 409 status code.*Shown as response* |
| **node.express.router.response\_code.410**(rate)           | The rate of requests that generate responses with a 410 status code.*Shown as response* |
| **node.express.router.response\_code.411**(rate)           | The rate of requests that generate responses with a 411 status code.*Shown as response* |
| **node.express.router.response\_code.412**(rate)           | The rate of requests that generate responses with a 412 status code.*Shown as response* |
| **node.express.router.response\_code.413**(rate)           | The rate of requests that generate responses with a 413 status code.*Shown as response* |
| **node.express.router.response\_code.414**(rate)           | The rate of requests that generate responses with a 414 status code.*Shown as response* |
| **node.express.router.response\_code.415**(rate)           | The rate of requests that generate responses with a 415 status code.*Shown as response* |
| **node.express.router.response\_code.416**(rate)           | The rate of requests that generate responses with a 416 status code.*Shown as response* |
| **node.express.router.response\_code.417**(rate)           | The rate of requests that generate responses with a 417 status code.*Shown as response* |
| **node.express.router.response\_code.421**(rate)           | The rate of requests that generate responses with a 421 status code.*Shown as response* |
| **node.express.router.response\_code.422**(rate)           | The rate of requests that generate responses with a 422 status code.*Shown as response* |
| **node.express.router.response\_code.423**(rate)           | The rate of requests that generate responses with a 423 status code.*Shown as response* |
| **node.express.router.response\_code.424**(rate)           | The rate of requests that generate responses with a 424 status code.*Shown as response* |
| **node.express.router.response\_code.425**(rate)           | The rate of requests that generate responses with a 425 status code.*Shown as response* |
| **node.express.router.response\_code.426**(rate)           | The rate of requests that generate responses with a 426 status code.*Shown as response* |
| **node.express.router.response\_code.428**(rate)           | The rate of requests that generate responses with a 428 status code.*Shown as response* |
| **node.express.router.response\_code.429**(rate)           | The rate of requests that generate responses with a 429 status code.*Shown as response* |
| **node.express.router.response\_code.431**(rate)           | The rate of requests that generate responses with a 431 status code.*Shown as response* |
| **node.express.router.response\_code.451**(rate)           | The rate of requests that generate responses with a 451 status code.*Shown as response* |
| **node.express.router.response\_code.500**(rate)           | The rate of requests that generate responses with a 500 status code.*Shown as response* |
| **node.express.router.response\_code.501**(rate)           | The rate of requests that generate responses with a 501 status code.*Shown as response* |
| **node.express.router.response\_code.502**(rate)           | The rate of requests that generate responses with a 502 status code.*Shown as response* |
| **node.express.router.response\_code.503**(rate)           | The rate of requests that generate responses with a 503 status code.*Shown as response* |
| **node.express.router.response\_code.504**(rate)           | The rate of requests that generate responses with a 504 status code.*Shown as response* |
| **node.express.router.response\_code.505**(rate)           | The rate of requests that generate responses with a 505 status code.*Shown as response* |
| **node.express.router.response\_code.506**(rate)           | The rate of requests that generate responses with a 506 status code.*Shown as response* |
| **node.express.router.response\_code.507**(rate)           | The rate of requests that generate responses with a 507 status code.*Shown as response* |
| **node.express.router.response\_code.508**(rate)           | The rate of requests that generate responses with a 508 status code.*Shown as response* |
| **node.express.router.response\_code.510**(rate)           | The rate of requests that generate responses with a 510 status code.*Shown as response* |
| **node.express.router.response\_code.511**(rate)           | The rate of requests that generate responses with a 511 status code.*Shown as response* |
| **node.express.router.response\_code.all**(rate)           | The rate of all requests that receive a response.*Shown as response*                    |
| **node.express.router.response\_time.95percentile**(gauge) | The 95th percentile of response time.*Shown as millisecond*                             |
| **node.express.router.response\_time.avg**(gauge)          | The average response time.*Shown as millisecond*                                        |
| **node.express.router.response\_time.count**(rate)         | The rate of responses received.*Shown as response*                                      |
| **node.express.router.response\_time.max**(gauge)          | The maximum response time.*Shown as millisecond*                                        |
| **node.express.router.response\_time.median**(gauge)       | The median response time.*Shown as millisecond*                                         |

### Events{% #events %}

The Express integration does not include any events.

### Service Checks{% #service-checks %}

The Express integration does not include any service checks.

## Troubleshooting{% #troubleshooting %}

Need help? Contact [Datadog support](https://docs.datadoghq.com/help/).
