Skip to content

[APM] Fix RUM transaction sorting by using sum as impact #26428

@roncohen

Description

@roncohen

The RUM agent does not know about the abstract page patterns that the website it is installed on uses (/blog/:blogID). It only knows the concrete page path: /blog/10-tips-when-youre-building-your-own-airplane. As it is at the moment, we cannot use the concrete page names because this results in a high cardinality of transaction names which means sorting by impact breaks down because we sort by "impact" in the Kibana node process. This has the effect that when the user logs in, they will se single pages that have only been loaded once with a high average response time, while there are actually pages that have a much higher impact that are not shown.

Impact is avg load time multiplied by number of page loads.

This is equal to the sum of the page load times

Instead of query for transaction groups sorted by load time and then calculating the impact in the Kibana node process, we should just sort by the SUM in Elasticsearch directly:

    "aggs": {
        "transactions": {
            "terms": {
                "field": "transaction.name.keyword",
                "order": {
                    "sum": "desc"
                },
                "size": 100
            },
            "aggs": {
                "avg": {
                    "avg": {
                        "field": "transaction.duration.us"
                    }
                },
                "p95": {
                    "percentiles": {
                        "field": "transaction.duration.us",
                        "percents": [
                            95
                        ]
                    }
                },
                "sum": {
                  "sum": {
                    "field": "transaction.duration.us"
                  }
                }
            }
        }

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions