# High cardinality on APM spans

**URL:** <https://discuss.elastic.co/t/high-cardinality-on-apm-spans/345460>\
**Category:** APM\
**Tags:** nodejs\
**Created:** [October 20, 2023, 12:39pm UTC](https://discuss.elastic.co/t/high-cardinality-on-apm-spans/345460 "2023-10-20T12:39:06Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Rajat\_Gupta1](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/rajat_gupta1/32/126729_2.png) [@Rajat\_Gupta1](https://discuss.elastic.co/u/Rajat_Gupta1)\
**Post date:** [October 20, 2023, 12:39pm UTC](https://discuss.elastic.co/t/high-cardinality-on-apm-spans/345460/1 "2023-10-20T12:39:06Z")

</div>

**Kibana version** : 8.5.1

**Elasticsearch version** : 8.5.1

**APM Server version** : 7.\*

**APM Agent language and version** : Node js 20

**Browser version** : Chrome

**Original install method (e.g. download page, yum, deb, from source, etc.) and version**: Helm

**Fresh install or upgraded from other version?** Fresh

**Is there anything special in your setup?** For example, are you using the Logstash or Kafka outputs? Are you using a load balancer in front of the APM Servers? Have you changed index pattern, generated custom templates, changed agent configuration etc.

Yes

I am getting very high cardinality on the span names.

for example, If I have a route called /drugs/:drug-slug in that case I am getting span names of all the complete URLs like

drugs/123  
drugs/3fsfdsf  
drugs/dfdagxvvwe  
drugs/daexxd

I am using 3rd party vendor to collect the APM data traces.

And each of these spans , show the latency and requests of each URL and not cummulative of the /drugs which is causing my collector to go down. Also I can see that because of this issue , the load on my system is increasing.

---

<div class="post-metadata">

**Author:** ![David\_Luna\_Bistuer](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/david_luna_bistuer/32/122147_2.png) [@David\_Luna\_Bistuer](https://discuss.elastic.co/u/David_Luna_Bistuer)\
**Post date:** [October 25, 2023, 1:55pm UTC](https://discuss.elastic.co/t/high-cardinality-on-apm-spans/345460/2 "2023-10-25T13:55:03Z")

</div>

Hi @Rajat_Gupta1

If you want these spans to have the same name you can use filters to modify spans before being sent and change its data.

> **[Agent API | APM Node.js Agent Reference \[4.x\] | Elastic](https://www.elastic.co/guide/en/apm/agent/nodejs/current/agent-api.html#apm-add-filter)**

> And each of these spans , show the latency and requests of each URL and not cummulative of the /drugs which is causing my collector to go down.

I think I did not understand completely. Do you expect the agent to aggregate the data for all the requests in `/drugs/:drug-slug` path and send this summary to your 3rd party collector?

Cheers

---

<div class="post-metadata">

**Author:** ![Rajat\_Gupta1](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/rajat_gupta1/32/126729_2.png) [@Rajat\_Gupta1](https://discuss.elastic.co/u/Rajat_Gupta1)\
**Post date:** [October 26, 2023, 6:22am UTC](https://discuss.elastic.co/t/high-cardinality-on-apm-spans/345460/3 "2023-10-26T06:22:26Z")

</div>

> [@David\_Luna\_Bistuer](#):
>
> > And each of these spans , show the latency and requests of each URL and not cummulative of the /drugs which is causing my collector to go down.

Hi David, So basically let's consider a route defined in my Nodejs application

/drugs/:drug\_id

and another route  
/location/:location\_id

When a user clicks on the drugs button, the code , sends an api call to backend service, with let's say an example id of "paracetamol\_123" and "ibuprufin\_637", so the spans should be created under

/drugs  
not under

/drugs/paracetamol\_123  
/drugs/ibuprufin\_637

Similarly in case of /location span it should be under /location  
not

/location/delhi  
/location/new\_york

and so on.

---

<div class="post-metadata">

**Author:** ![trentm](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/trentm/32/77647_2.png) [@trentm](https://discuss.elastic.co/u/trentm)\
**Post date:** [October 26, 2023, 8:21pm UTC](https://discuss.elastic.co/t/high-cardinality-on-apm-spans/345460/4 "2023-10-26T20:21:04Z")

</div>

@Rajat_Gupta1 Are you using a web framework such as Express or Fastify or Hapi for creating your routes? The Node.js APM agent will automatically detect the routes and create transaction (entry span) names using the route name -- e.g. `GET /drigs/:drug-slug` rather than the raw URL `GET /drugs/123`. That is typically how the cardinality issue is managed.

It isn't clear to me from what you said if you are even using our Node.js APM agent (`elastic-apm-node`). Can you perhaps show some example code from your app and give us an idea of what packages are involved? Thanks.

---

<div class="post-metadata">

**Author:** ![Rajat\_Gupta1](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/rajat_gupta1/32/126729_2.png) [@Rajat\_Gupta1](https://discuss.elastic.co/u/Rajat_Gupta1)\
**Post date:** [October 27, 2023, 6:13am UTC](https://discuss.elastic.co/t/high-cardinality-on-apm-spans/345460/5 "2023-10-27T06:13:22Z")

</div>

> [@trentm](#):
>
> It isn't clear to me from what you said if you are even using our Node.js APM agent (`elastic-apm-node`). Can you perhaps show some example code from your app and give us an idea of what packages are involved? Thanks.

Hi @trentm

Yes We are using express framework for creating routes.

We have built a debug app to do the same.

```auto
var express = require('express');
var router = express.Router();

/* GET otc listing. */
router.get('/', function(req, res, next) {
  res.send('respond with a resource');
});
router.get('/:id', function(req, res, next) {
    res.send("URL path:" + req.params.id);
  });
module.exports = router;

```

```auto
var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express Based Debug App' });
});

module.exports = router;

```

these are sample routes.

For idea to get what packages are involved

```auto
{
  "name": "express-basic-app",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "cookie-parser": "~1.4.4",
    "debug": "~2.6.9",
    "elastic-apm-node": "^3.11.0",
    "express": "~4.16.1",
    "http-errors": "~1.6.3",
    "jade": "~1.11.0",
    "morgan": "~1.9.1"
  }
}

```

---

<div class="post-metadata">

**Author:** ![trentm](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/trentm/32/77647_2.png) [@trentm](https://discuss.elastic.co/u/trentm)\
**Post date:** [October 30, 2023, 5:23pm UTC](https://discuss.elastic.co/t/high-cardinality-on-apm-spans/345460/6 "2023-10-30T17:23:30Z")

</div>

@Rajat_Gupta1 Here is an "express-basic-app", working from the example code you provided in your last comment. When using the latest Node.js APM agent 3.x version -- elastic-apm-node@3.50.0 -- I get the expected behaviour: the transaction names use the route name `GET /a/:id`.

```auto
% pwd
/Users/trentm/tmp/express-basic-app

% tree --gitignore
.
├── bin
│ └── www
├── lib
│ ├── a.js
│ └── home.js
├── package.json
└── views
    └── index.jade

```

package.json

```json
{
  "name": "express-basic-app",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "cookie-parser": "~1.4.4",
    "debug": "~2.6.9",
    "elastic-apm-node": "^3.11.0",
    "express": "~4.16.1",
    "http-errors": "~1.6.3",
    "jade": "~1.11.0",
    "morgan": "~1.9.1"
  }
}

```

bin/www

```js
#!/usr/bin/env node

// Start APM before any other imports.
var apm = require('elastic-apm-node').start({
    // TODO: configure serverUrl and secretToken here
});

var express = require('express');
var home = require('../lib/home');
var a = require('../lib/a');

var app = express();
app.set('views', './views');
app.set('view engine', 'jade');
app.use('/', home);
app.use('/a', a);
app.listen(3000, () => {
    console.log('listening');
});

```

lib/home.js

```js
var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express Based Debug App' });
});

module.exports = router;

```

lib/a.js

```js
var express = require('express');
var router = express.Router();

/* GET otc listing. */
router.get('/', function(req, res, next) {
  res.send('respond with a resource');
});
router.get('/:id', function(req, res, next) {
  res.send("URL path:" + req.params.id);
});
module.exports = router;

```

views/index.jade

```auto
html
  head
    title= title
  body
    h1= message

```

I run the service:

```auto
% npm start

> express-basic-app@0.0.0 start
> node ./bin/www

{"log.level":"info","@timestamp":"2023-10-30T17:13:48.899Z","log.logger":"elastic-apm-node","ecs.version":"1.6.0","agentVersion":"3.50.0","env":{"pid":97382,"proctitle":"node","os":"darwin 22.6.0","arch":"x64","host":"pink.local","timezone":"UTC-0700","runtime":"Node.js v16.20.2"},"config":{"serviceName":{"source":"default","value":"express-basic-app","commonName":"service_name"},"serviceVersion":{"source":"default","value":"0.0.0","commonName":"service_version"},"serverUrl":{"source":"default","value":"http://127.0.0.1:8200/","commonName":"server_url"},"logLevel":{"source":"default","value":"info","commonName":"log_level"}},"activationMethod":"require","message":"Elastic APM Node.js Agent v3.50.0"}
listening

```

Then I made a number of requests to it:

```auto
curl -i localhost:3000/ >/dev/null
curl -i localhost:3000/a >/dev/null
curl -i localhost:3000/a/id1 >/dev/null
curl -i localhost:3000/a/id2 >/dev/null
curl -i localhost:3000/a/id3 >/dev/null
curl -i localhost:3000/a/id4 >/dev/null

```

The resultant APM trace data sent are (summarized to a text view):

```auto
trace 093976
`- transaction 70df92 "GET /" (152.242ms, GET http://localhost:3000/ -> 200)
    `- span 458794 "jade" (16.007ms, jade, sync)
    `- span a854d8 "jade" (0.193ms, jade, sync)
trace 3a0af4
`- transaction ba3d9d "GET /a" (1.056ms, GET http://localhost:3000/a -> 200)
trace 4855c4
`- transaction 582384 "GET /a/:id" (1.129ms, GET http://localhost:3000/a/id1 -> 200)
trace 501697
`- transaction dac748 "GET /a/:id" (0.916ms, GET http://localhost:3000/a/id2 -> 200)
trace 9bb357
`- transaction 0ac03a "GET /a/:id" (0.962ms, GET http://localhost:3000/a/id3 -> 200)
trace 24da37
`- transaction 195275 "GET /a/:id" (0.729ms, GET http://localhost:3000/a/id4 -> 200)

```

In the Kibana APM app it looks like this:

 ![Screenshot 2023-10-30 at 10.19.04 AM](https://us1.discourse-cdn.com/elastic/original/3X/9/c/9c48864c7f9470a0daf6b172e10f536b30a7bc95.png)

Are you able to see how your running example differs from mine?  
What version of elastic-apm-node are you using? There was a fix for Express routing in v3.36.0.

If you are unable to spot a different, turning on debug logging -- `logLevel: 'debug'` -- running the example with some test requests and then showing us the debug log output from the APM agent could help us figure out what is happening.

---

<div class="post-metadata">

**Author:** ![Rajat\_Gupta1](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/rajat_gupta1/32/126729_2.png) [@Rajat\_Gupta1](https://discuss.elastic.co/u/Rajat_Gupta1)\
**Post date:** [November 1, 2023, 7:19am UTC](https://discuss.elastic.co/t/high-cardinality-on-apm-spans/345460/7 "2023-11-01T07:19:26Z")

</div>

> [@trentm](#):
>
> If you are unable to spot a different, turning on debug logging -- `logLevel: 'debug'` -- running the example with some test requests and then showing us the debug log output from the APM agent could help us figure out what is happening.

Hi @trentm

The App you sent behaves as expected.

The elastic-apm-node being used is 3.5.0.

When I am running the sample app I have created, I am getting disrupted behaviour.

If you can send me your email ID , I can send you my code base.

```auto
1. nvm use 20.4.0 // for setting node js version to 20.4.0 if multiple node versions are present on the system
2. npm i // for package installation
3. npm start // for starting express server

For auto-hitting the server with dynamic urls 100 times run the following file:
node autohitscript.js

```

Inside config.json you can change server url to point to your elastic index.

Here are logs that are printed by my app with debug mode on as you requested.

```auto
{"metadata":{"service":{"name":"pwa-mock-app-node-server","environment":"debug","runtime":{"name":"node","version":"20.4.0"},"language":{"name":"javascript"},"agent":{"name":"nodejs","version":"3.50.0","activation_method":"require"},"version":"0.0.0"},"process":{"pid":83844,"ppid":83829,"title":"node","argv":["/Users/vaibhav/.nvm/versions/node/v20.4.0/bin/node","/Users/vaibhav/Documents/Projects/express-basic-app/bin/www"]},"system":{"architecture":"arm64","platform":"darwin","detected_hostname":"1mp-lptp-2056.local"}}}
{"metricset":{"samples":{"system.cpu.total.norm.pct":{"value":0.41666666666666663},"system.memory.total":{"value":8589934592},"system.memory.actual.free":{"value":104218624},"system.process.cpu.total.norm.pct":{"value":0.1205121919535993},"system.process.cpu.system.norm.pct":{"value":0.02301240621022126},"system.process.cpu.user.norm.pct":{"value":0.09749978574337805},"system.process.memory.rss.bytes":{"value":73482240},"nodejs.handles.active":{"value":8},"nodejs.requests.active":{"value":4},"nodejs.eventloop.delay.avg.ms":{"value":0},"nodejs.memory.heap.allocated.bytes":{"value":33046528},"nodejs.memory.heap.used.bytes":{"value":13214968},"nodejs.memory.external.bytes":{"value":2767342},"nodejs.memory.arrayBuffers.bytes":{"value":41203}},"timestamp":1698740915439000,"tags":{"hostname":"1MP-LPTP-2056.local","env":"debug"}}}
{"metadata":{"service":{"name":"pwa-mock-app-node-server","environment":"debug","runtime":{"name":"node","version":"20.4.0"},"language":{"name":"javascript"},"agent":{"name":"nodejs","version":"3.50.0"},"version":"0.0.0"},"process":{"pid":83844,"ppid":83829,"title":"node","argv":["/Users/vaibhav/.nvm/versions/node/v20.4.0/bin/node","/Users/vaibhav/Documents/Projects/express-basic-app/bin/www"]},"system":{"architecture":"arm64","platform":"darwin","detected_hostname":"1mp-lptp-2056.local"}}}
{"metricset":{"samples":{"system.cpu.total.norm.pct":{"value":0.47597666904452185},"system.memory.total":{"value":8589934592},"system.memory.actual.free":{"value":91717632},"system.process.cpu.total.norm.pct":{"value":0.0014097251113220832},"system.process.cpu.system.norm.pct":{"value":0.00037214531878799394},"system.process.cpu.user.norm.pct":{"value":0.0010375797925340892},"system.process.memory.rss.bytes":{"value":31293440},"nodejs.handles.active":{"value":4},"nodejs.requests.active":{"value":0},"nodejs.eventloop.delay.avg.ms":{"value":0.9913794323432352},"nodejs.memory.heap.allocated.bytes":{"value":16531456},"nodejs.memory.heap.used.bytes":{"value":13696944},"nodejs.memory.external.bytes":{"value":2314723},"nodejs.memory.arrayBuffers.bytes":{"value":74101}},"timestamp":1698740945424000,"tags":{"hostname":"1MP-LPTP-2056.local","env":"debug"}}}
{"metadata":{"service":{"name":"pwa-mock-app-node-server","environment":"debug","runtime":{"name":"node","version":"20.4.0"},"language":{"name":"javascript"},"agent":{"name":"nodejs","version":"3.50.0"},"version":"0.0.0"},"process":{"pid":83844,"ppid":83829,"title":"node","argv":["/Users/vaibhav/.nvm/versions/node/v20.4.0/bin/node","/Users/vaibhav/Documents/Projects/express-basic-app/bin/www"]},"system":{"architecture":"arm64","platform":"darwin","detected_hostname":"1mp-lptp-2056.local"}}}
{"transaction":{"name":"GET /otc/wGBG","type":"request","result":"HTTP 2xx","id":"d339930a0706f7eb","trace_id":"fb588f55a887ad2958d1be174dddfadc","duration":11.113,"timestamp":1698740958153234,"sampled":true,"context":{"user":{},"tags":{},"custom":{},"service":{},"cloud":{},"message":{},"request":{"http_version":"1.1","method":"GET","url":{"raw":"/otc/wGBG","protocol":"http:","hostname":"localhost","port":"3000","pathname":"/otc/wGBG","full":"http://localhost:3000/otc/wGBG"},"headers":{"accept":"application/json, text/plain, */*","user-agent":"axios/1.6.0","accept-encoding":"gzip, compress, deflate, br","host":"localhost:3000","connection":"keep-alive"},"socket":{"remote_address":"::1"}},"response":{"status_code":200,"headers":{"x-powered-by":"Express","content-type":"text/html; charset=utf-8","content-length":"13","etag":"W/\"d-q/JzqNzhxXFIPHlLUDCyW00T+ag\"","date":"Tue, 31 Oct 2023 08:29:18 GMT","connection":"keep-alive","keep-alive":"timeout=5"}}},"span_count":{"started":0},"outcome":"success","sample_rate":0.99}}
{"transaction":{"name":"GET /otc/DVnQ","type":"request","result":"HTTP 2xx","id":"92748ebcf44aadeb","trace_id":"dcd031d81c7a9d55175d6168747061aa","duration":1.692,"timestamp":1698740958170002,"sampled":true,"context":{"user":{},"tags":{},"custom":{},"service":{},"cloud":{},"message":{},"request":{"http_version":"1.1","method":"GET","url":{"raw":"/otc/DVnQ","protocol":"http:","hostname":"localhost","port":"3000","pathname":"/otc/DVnQ","full":"http://localhost:3000/otc/DVnQ"},"headers":{"accept":"application/json, text/plain, */*","user-agent":"axios/1.6.0","accept-encoding":"gzip, compress, deflate, br","host":"localhost:3000","connection":"keep-alive"},"socket":{"remote_address":"::1"}},"response":{"status_code":200,"headers":{"x-powered-by":"Express","content-type":"text/html; charset=utf-8","content-length":"13","etag":"W/\"d-OjIsVnK3VSfgVL7n3bajvChusuk\"","date":"Tue, 31 Oct 2023 08:29:18 GMT","connection":"keep-alive","keep-alive":"timeout=5"}}},"span_count":{"started":0},"outcome":"success","sample_rate":0.99}}
{"transaction":{"name":"GET /otc/K4G1","type":"request","result":"HTTP 2xx","id":"f0cab17396bf17e9","trace_id":"6416b40d04a404a0bf676e558ece86c2","duration":10.359,"timestamp":1698740958173002,"sampled":true,"context":{"user":{},"tags":{},"custom":{},"service":{},"cloud":{},"message":{},"request":{"http_version":"1.1","method":"GET","url":{"raw":"/otc/K4G1","protocol":"http:","hostname":"localhost","port":"3000","pathname":"/otc/K4G1","full":"http://localhost:3000/otc/K4G1"},"headers":{"accept":"application/json, text/plain, */*","user-agent":"axios/1.6.0","accept-encoding":"gzip, compress, deflate, br","host":"localhost:3000","connection":"keep-alive"},"socket":{"remote_address":"::1"}},"response":{"status_code":200,"headers":{"x-powered-by":"Express","content-type":"text/html; charset=utf-8","content-length":"13","etag":"W/\"d-AzFgR71bYJeUVRM406BTsk+X8Eg\"","date":"Tue, 31 Oct 2023 08:29:18 GMT","connection":"keep-alive","keep-alive":"timeout=5"}}},"span_count":{"started":0},"outcome":"success","sample_rate":0.99}}
{"transaction":{"name":"GET /otc/otXV","type":"request","result":"HTTP 2xx","id":"f01eb1c3606d85a7","trace_id":"33a5f7c2d461e8d439cd2fd578e7124d","duration":1.258,"timestamp":1698740958187004,"sampled":true,"context":{"user":{},"tags":{},"custom":{},"service":{},"cloud":{},"message":{},"request":{"http_version":"1.1","method":"GET","url":{"raw":"/otc/otXV","protocol":"http:","hostname":"localhost","port":"3000","pathname":"/otc/otXV","full":"http://localhost:3000/otc/otXV"},"headers":{"accept":"application/json, text/plain, */*","user-agent":"axios/1.6.0","accept-encoding":"gzip, compress, deflate, br","host":"localhost:3000","connection":"keep-alive"},"socket":{"remote_address":"::1"}},"response":{"status_code":200,"headers":{"x-powered-by":"Express","content-type":"text/html; charset=utf-8","content-length":"13","etag":"W/\"d-/6Bg4k5ZSfuQQ/Tx5gIvdfN9PF4\"","date":"Tue, 31 Oct 2023 08:29:18 GMT","connection":"keep-alive","keep-alive":"timeout=5"}}},"span_count":{"started":0},"outcome":"success","sample_rate":0.99}}
{"transaction":{"name":"GET /otc/36Fr","type":"request","result":"HTTP 2xx","id":"d90e5d9b22a3d522","trace_id":"a387a993ddb697a92e862d5bb2cd06a4","duration":1.55,"timestamp":1698740958192002,"sampled":true,"context":{"user":{},"tags":{},"custom":{},"service":{},"cloud":{},"message":{},"request":{"http_version":"1.1","method":"GET","url":{"raw":"/otc/36Fr","protocol":"http:","hostname":"localhost","port":"3000","pathname":"/otc/36Fr","full":"http://localhost:3000/otc/36Fr"},"headers":{"accept":"application/json, text/plain, */*","user-agent":"axios/1.6.0","accept-encoding":"gzip, compress, deflate, br","host":"localhost:3000","connection":"keep-alive"},"socket":{"remote_address":"::1"}},"response":{"status_code":200,"headers":{"x-powered-by":"Express","content-type":"text/html; charset=utf-8","content-length":"13","etag":"W/\"d-M4PwBErj53znSskVwg8igCqiTQU\"","date":"Tue, 31 Oct 2023 08:29:18 GMT","connection":"keep-alive","keep-alive":"timeout=5"}}},"span_count":{"started":0},"outcome":"success","sample_rate":0.99}}
{"transaction":{"name":"GET /otc/vZ5m","type":"request","result":"HTTP 2xx","id":"ce1f90239a6cff96","trace_id":"0de10bcdd76e4d86782f7fbad13a1860","duration":1.118,"timestamp":1698740958196002,"sampled":true,"context":{"user":{},"tags":{},"custom":{},"service":{},"cloud":{},"message":{},"request":{"http_version":"1.1","method":"GET","url":{"raw":"/otc/vZ5m","protocol":"http:","hostname":"localhost","port":"3000","pathname":"/otc/vZ5m","full":"http://localhost:3000/otc/vZ5m"},"headers":{"accept":"application/json, text/plain, */*","user-agent":"axios/1.6.0","accept-encoding":"gzip, compress, deflate, br","host":"localhost:3000","connection":"keep-alive"},"socket":{"remote_address":"::1"}},"response":{"status_code":200,"headers":{"x-powered-by":"Express","content-type":"text/html; charset=utf-8","content-length":"13","etag":"W/\"d-V9Ch1Pjgjp4jOh6Ooiv8GGbjJOA\"","date":"Tue, 31 Oct 2023 08:29:18 GMT","connection":"keep-alive","keep-alive":"timeout=5"}}},"span_count":{"started":0},"outcome":"success","sample_rate":0.99}}
{"transaction":{"name":"GET /otc/CiBw","type":"request","result":"HTTP 2xx","id":"1839a1b2c3da256e","trace_id":"1a141695664638f58d2ee9d10530ad8a","duration":1.225,"timestamp":1698740958203007,"sampled":true,"context":{"user":{},"tags":{},"custom":{},"service":{},"cloud":{},"message":{},"request":{"http_version":"1.1","method":"GET","url":{"raw":"/otc/CiBw","protocol":"http:","hostname":"localhost","port":"3000","pathname":"/otc/CiBw","full":"http://localhost:3000/otc/CiBw"},"headers":{"accept":"application/json, text/plain, */*","user-agent":"axios/1.6.0","accept-encoding":"gzip, compress, deflate, br","host":"localhost:3000","connection":"keep-alive"},"socket":{"remote_address":"::1"}},"response":{"status_code":200,"headers":{"x-powered-by":"Express","content-type":"text/html; charset=utf-8","content-length":"13","etag":"W/\"d-l+APnQjPDCx86vOgTCQQi3dy6kk\"","date":"Tue, 31 Oct 2023 08:29:18 GMT","connection":"keep-alive","keep-alive":"timeout=5"}}},"span_count":{"started":0},"outcome":"success","sample_rate":0.99}}
{"transaction":{"name":"GET /otc/KGLo","type":"request","result":"HTTP 2xx","id":"9e8df05afac319be","trace_id":"87d2f93c31499b502fced0f79dc8fb12","duration":0.61,"timestamp":1698740958206003,"sampled":true,"context":{"user":{},"tags":{},"custom":{},"service":{},"cloud":{},"message":{},"request":{"http_version":"1.1","method":"GET","url":{"raw":"/otc/KGLo","protocol":"http:","hostname":"localhost","port":"3000","pathname":"/otc/KGLo","full":"http://localhost:3000/otc/KGLo"},"headers":{"accept":"application/json, text/plain, */*","user-agent":"axios/1.6.0","accept-encoding":"gzip, compress, deflate, br","host":"localhost:3000","connection":"keep-alive"},"socket":{"remote_address":"::1"}},"response":{"status_code":200,"headers":{"x-powered-by":"Express","content-type":"text/html; charset=utf-8","content-length":"13","etag":"W/\"d-9EJYav0Hx0tfBhUwtZsgsU/YhX4\"","date":"Tue, 31 Oct 2023 08:29:18 GMT","connection":"keep-alive","keep-alive":"timeout=5"}}},"span_count":{"started":0},"outcome":"success","sample_rate":0.99}}
{"transaction":{"name":"GET /otc/uWKx","type":"request","result":"HTTP 2xx","id":"e2270115714060e9","trace_id":"e02a42a856950a9980e5a48d63d4adce","duration":1.017,"timestamp":1698740958208002,"sampled":true,"context":{"user":{},"tags":{},"custom":{},"service":{},"cloud":{},"message":{},"request":{"http_version":"1.1","method":"GET","url":{"raw":"/otc/uWKx","protocol":"http:","hostname":"localhost","port":"3000","pathname":"/otc/uWKx","full":"http://localhost:3000/otc/uWKx"},"headers":{"accept":"application/json, text/plain, */*","user-agent":"axios/1.6.0","accept-encoding":"gzip, compress, deflate, br","host":"localhost:3000","connection":"keep-alive"},"socket":{"remote_address":"::1"}},"response":{"status_code":200,"headers":{"x-powered-by":"Express","content-type":"text/html; charset=utf-8","content-length":"13","etag":"W/\"d-WOy4+pdJmTXtaAGzuK7kybDFm9Q\"","date":"Tue, 31 Oct 2023 08:29:18 GMT","connection":"keep-alive","keep-alive":"timeout=5"}}},"span_count":{"started":0},"outcome":"success","sample_rate":0.99}}
{"transaction":{"name":"GET /otc/7uE1","type":"request","result":"HTTP 2xx","id":"bb3e288d83211138","trace_id":"60db8149d4a941a183d3293efcda0fef","duration":0.876,"timestamp":1698740958210002,"sampled":true,"context":{"user":{},"tags":{},"custom":{},"service":{},"cloud":{},"message":{},"request":{"http_version":"1.1","method":"GET","url":{"raw":"/otc/7uE1","protocol":"http:","hostname":"localhost","port":"3000","pathname":"/otc/7uE1","full":"http://localhost:3000/otc/7uE1"},"headers":{"accept":"application/json, text/plain, */*","user-agent":"axios/1.6.0","accept-encoding":"gzip, compress, deflate, br","host":"localhost:3000","connection":"keep-alive"},"socket":{"remote_address":"::1"}},"response":{"status_code":200,"headers":{"x-powered-by":"Express","content-type":"text/html; charset=utf-8","content-length":"13","etag":"W/\"d-ZvSLm8fArsSwP+oloeVoerC0knc\"","date":"Tue, 31 Oct 2023 08:29:18 GMT","connection":"keep-alive","keep-alive":"timeout=5"}}},"span_count":{"started":0},"outcome":"success","sample_rate":0.99}}
{"transaction":{"name":"GET /otc/CF95","type":"request","result":"HTTP 2xx","id":"161a705ef6751fff","trace_id":"321b628aa30551ce2c7d8f71bf89320e","duration":0.692,"timestamp":1698740958211001,"sampled":true,"context":{"user":{},"tags":{},"custom":{},"service":{},"cloud":{},"message":{},"request":{"http_version":"1.1","method":"GET","url":{"raw":"/otc/CF95","protocol":"http:","hostname":"localhost","port":"3000","pathname":"/otc/CF95","full":"http://localhost:3000/otc/CF95"},"headers":{"accept":"application/json, text/plain, */*","user-agent":"axios/1.6.0","accept-encoding":"gzip, compress, deflate, br","host":"localhost:3000","connection":"keep-alive"},"socket":{"remote_address":"::1"}},"response":{"status_code":200,"headers":{"x-powered-by":"Express","content-type":"text/html; charset=utf-8","content-length":"13","etag":"W/\"d-H1xzKGla2beERuB/yEj3+5fbdCQ\"","date":"Tue, 31 Oct 2023 08:29:18 GMT","connection":"keep-alive","keep-alive":"timeout=5"}}},"span_count":{"started":0},"outcome":"success","sample_rate":0.99}}
{"transaction":{"name":"GET /otc/q0Qs","type":"request","result":"HTTP 2xx","id":"ec9c130dc9ec239e","trace_id":"b70bb16f17671fd492243e505ffb1916","duration":7.085,"timestamp":1698740958213002,"sampled":true,"context":{"user":{},"tags":{},"custom":{},"service":{},"cloud":{},"message":{},"request":{"http_version":"1.1","method":"GET","url":{"raw":"/otc/q0Qs","protocol":"http:","hostname":"localhost","port":"3000","pathname":"/otc/q0Qs","full":"http://localhost:3000/otc/q0Qs"},"headers":{"accept":"application/json, text/plain, */*","user-agent":"axios/1.6.0","accept-encoding":"gzip, compress, deflate, br","host":"localhost:3000","connection":"keep-alive"},"socket":{"remote_address":"::1"}},"response":{"status_code":200,"headers":{"x-powered-by":"Express","content-type":"text/html; charset=utf-8","content-length":"13","etag":"W/\"d-CLofzWqhTK5TLjfvmYe3KhjWKwI\"","date":"Tue, 31 Oct 2023 08:29:18 GMT","connection":"keep-alive","keep-alive":"timeout=5"}}},"span_count":{"started":0},"outcome":"success","sample_rate":0.99}}
{"transaction":{"name":"GET /otc/6ttN","type":"request","result":"HTTP 2xx","id":"d64b09facdc62ceb","trace_id":"fff87227839b617c1fac04d2adefa481","duration":0.842,"timestamp":1698740958222001,"sampled":true,"context":{"user":{},"tags":{},"custom":{},"service":{},"cloud":{},"message":{},"request":{"http_version":"1.1","method":"GET","url":{"raw":"/otc/6ttN","protocol":"http:","hostname":"localhost","port":"3000","pathname":"/otc/6ttN","full":"http://localhost:3000/otc/6ttN"},"headers":{"accept":"application/json, text/plain, */*","user-agent":"axios/1.6.0","accept-encoding":"gzip, compress, deflate, br","host":"localhost:3000","connection":"keep-alive"},"socket":{"remote_address":"::1"}},"response":{"status_code":200,"headers":{"x-powered-by":"Express","content-type":"text/html; charset=utf-8","content-length":"13","etag":"W/\"d-j5QvEgFo3IS+ls5GXn2XnG/tdDc\"","date":"Tue, 31 Oct 2023 08:29:18 GMT","connection":"keep-alive","keep-alive":"timeout=5"}}},"span_count":{"started":0},"outcome":"success","sample_rate":0.99}}
{"transaction":{"name":"GET /otc/8Tuv","type":"request","result":"HTTP 2xx","id":"d614fde4eb19162a","trace_id":"1a33a10b30a7271080d01224ced190be","duration":0.684,"timestamp":1698740958224001,"sampled":true,"context":{"user":{},"tags":{},"custom":{},"service":{},"cloud":{},"message":{},"request":{"http_version":"1.1","method":"GET","url":{"raw":"/otc/8Tuv","protocol":"http:","hostname":"localhost","port":"3000","pathname":"/otc/8Tuv","full":"http://localhost:3000/otc/8Tuv"},"headers":{"accept":"application/json, text/plain, */*","user-agent":"axios/1.6.0","accept-encoding":"gzip, compress, deflate, br","host":"localhost:3000","connection":"keep-alive"},"socket":{"remote_address":"::1"}},"response":{"status_code":200,"headers":{"x-powered-by":"Express","content-type":"text/html; charset=utf-8","content-length":"13","etag":"W/\"d-G+uBH8h86WSRKeJ0ao8ALUddBLw\"","date":"Tue, 31 Oct 2023 08:29:18 GMT","connection":"keep-alive","keep-alive":"timeout=5"}}},"span_count":{"started":0},"outcome":"success","sample_rate":0.99}}
{"transaction":{"name":"GET /otc/JPsv","type":"request","result":"HTTP 2xx","id":"0fde406435625d56","trace_id":"8babf37529b034d149476bc8ea7de643","duration":0.854,"timestamp":1698740958225001,"sampled":true,"context":{"user":{},"tags":{},"custom":{},"service":{},"cloud":{},"message":{},"request":{"http_version":"1.1","method":"GET","url":{"raw":"/otc/JPsv","protocol":"http:","hostname":"localhost","port":"3000","pathname":"/otc/JPsv","full":"http://localhost:3000/otc/JPsv"},"headers":{"accept":"application/json, text/plain, */*","user-agent":"axios/1.6.0","accept-encoding":"gzip, compress, deflate, br","host":"localhost:3000","connection":"keep-alive"},"socket":{"remote_address":"::1"}},"response":{"status_code":200,"headers":{"x-powered-by":"Express","content-type":"text/html; charset=utf-8","content-length":"13","etag":"W/\"d-2a0QcuzsjfiQgOkSm7Pd89PWrSY\"","date":"Tue, 31 Oct 2023 08:29:18 GMT","connection":"keep-alive","keep-alive":"timeout=5"}}},"span_count":{"started":0},"outcome":"success","sample_rate":0.99}}
{"transaction":{"name":"GET /otc/laVh","type":"request","result":"HTTP 2xx","id":"b061b272658d76db","trace_id":"f28db3a51b105c5f786e72b54b10b2e8","duration":0.621,"timestamp":1698740958227001,"sampled":true,"context":{"user":{},"tags":{},"custom":{},"service":{},"cloud":{},"message":{},"request":{"http_version":"1.1","method":"GET","url":{"raw":"/otc/laVh","protocol":"http:","hostname":"localhost","port":"3000","pathname":"/otc/laVh","full":"http://localhost:3000/otc/laVh"},"headers":{"accept":"application/json, text/plain, */*","user-agent":"axios/1.6.0","accept-encoding":"gzip, compress, deflate, br","host":"localhost:3000","connection":"keep-alive"},"socket":{"remote_address":"::1"}},"response":{"status_code":200,"headers":{"x-powered-by":"Express","content-type":"text/html; charset=utf-8","content-length":"13","etag":"W/\"d-NsUtzHYuHeKd9ewM3zcwv3Obfq0\"","date":"Tue, 31 Oct 2023 08:29:18 GMT","connection":"keep-alive","keep-alive":"timeout=5"}}},"span_count":{"started":0},"outcome":"success","sample_rate":0.99}}
{"transaction":{"name":"GET /otc/IA0F","type":"request","result":"HTTP 2xx","id":"e85f207852f24ab4","trace_id":"230e142d7b9c4c9d5e7d06589034d678","duration":0.728,"timestamp":1698740958228001,"sampled":true,"context":{"user":{},"tags":{},"custom":{},"service":{},"cloud":{},"message":{},"request":{"http_version":"1.1","method":"GET","url":{"raw":"/otc/IA0F","protocol":"http:","hostname":"localhost","port":"3000","pathname":"/otc/IA0F","full":"http://localhost:3000/otc/IA0F"},"headers":{"accept":"application/json, text/plain, */*","user-agent":"axios/1.6.0","accept-encoding":"gzip, compress, deflate, br","host":"localhost:3000","connection":"keep-alive"},"socket":{"remote_address":"::1"}},"response":{"status_code":200,"headers":{"x-powered-by":"Express","content-type":"text/html; charset=utf-8","content-length":"13","etag":"W/\"d-vasBX6TJObVNkBa4ICxSUdBdYTc\"","date":"Tue, 31 Oct 2023 08:29:18 GMT","connection":"keep-alive","keep-alive":"timeout=5"}}},"span_count":{"started":0},"outcome":"success","sample_rate":0.99}}
{"transaction":{"name":"GET /otc/zXAo","type":"request","result":"HTTP 2xx","id":"a4e595ade0db69df","trace_id":"ae99b2593e4664b43460d21bf21cb311","duration":7.609,"timestamp":1698740958230001,"sampled":true,"context":{"user":{},"tags":{},"custom":{},"service":{},"cloud":{},"message":{},"request":{"http_version":"1.1","method":"GET","url":{"raw":"/otc/zXAo","protocol":"http:","hostname":"localhost","port":"3000","pathname":"/otc/zXAo","full":"http://localhost:3000/otc/zXAo"},"headers":{"accept":"application/json, text/plain, */*","user-agent":"axios/1.6.0","accept-encoding":"gzip, compress, deflate, br","host":"localhost:3000","connection":"keep-alive"},"socket":{"remote_address":"::1"}},"response":{"status_code":200,"headers":{"x-powered-by":"Express","content-type":"text/html; charset=utf-8","content-length":"13","etag":"W/\"d-0H874P/1pX3sJF8bXLnptj2DJcc\"","date":"Tue, 31 Oct 2023 08:29:18 GMT","connection":"keep-alive","keep-alive":"timeout=5"}}},"span_count":{"started":0},"outcome":"success","sample_rate":0.99}}
{"transaction":{"name":"GET /otc/Rcdu","type":"request","result":"HTTP 2xx","id":"92fdf545eb597e9c","trace_id":"1d5051bd6e7812f2d55f1a313b93e6d7","duration":0.531,"timestamp":1698740958238001,"sampled":true,"context":{"user":{},"tags":{},"custom":{},"service":{},"cloud":{},"message":{},"request":{"http_version":"1.1","method":"GET","url":{"raw":"/otc/Rcdu","protocol":"http:","hostname":"localhost","port":"3000","pathname":"/otc/Rcdu","full":"http://localhost:3000/otc/Rcdu"},"headers":{"accept":"application/json, text/plain, */*","user-agent":"axios/1.6.0","accept-encoding":"gzip, compress, deflate, br","host":"localhost:3000","connection":"keep-alive"},"socket":{"remote_address":"::1"}},"response":{"status_code":200,"headers":{"x-powered-by":"Express","content-type":"text/html; charset=utf-8","content-length":"13","etag":"W/\"d-3UiSFzU7glbfhNoms/0TSF8DaGo\"","date":"Tue, 31 Oct 2023 08:29:18 GMT","connection":"keep-alive","keep-alive":"timeout=5"}}},"span_count":{"started":0},"outcome":"success","sample_rate":0.99}}
{"transaction":{"name":"GET /otc/WNAM","type":"request","result":"HTTP 

```

I am not sure what's happening wrong in my app. It's a simple app which is executing a few end points.

I know it might be a bit hectic , but can you please have a look and see if there is something wrong with my configurations,.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [November 29, 2023, 7:20am UTC](https://discuss.elastic.co/t/high-cardinality-on-apm-spans/345460/8 "2023-11-29T07:20:25Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
