Newbie Question (Real user monitoring): how do I track browser and device origin?

I gave just got myself a paid elasticsearch account and installed RUM on my website (ref: https://www.elastic.co/blog/performing-real-user-monitoring-rum-with-elastic-apm).

I now want to track custom events on my 4-step registration form. What I want to do is discover and aggregate user events by a) the browser my users are using and b) the mobile device they are using

Are these event sources available to me via the RUM setup? Or do I have to somehow send them to elastic search and apm?

Hi,

Welcome to the forum and thanks for using Elastic APM.

Currently to capture form events you should instrument your application with Custom Transactions in other words you should create a custom transaction when each step is submitted. Please see the linked documentation page for more detail.

For the browser and device information we capture raw User-Agent header, however this field needs to be parsed further to show human readable values. At the moment you should add user agent processor to parse this field. But we also have an issue open to enable this processor on the APM server by default.

Cheers,
Hamid

1 Like

Thanks for that reply @Hamidreza. I think I understood the first part and can go ahead with instrumenting it in my app.

The second part is however, quite unclear. I don't have my own server (it's a frontend react app sitting in an s3 bucket) - only an elasticsearch cloud account. So how and where do I add a pipline with processors? Could you please guide me.?

Hi,

You should add the user agent processor to your Elasticsearch instance on the cloud. However you can do that through Kibana console. Here is an example that you can run in the Kibana console (I've updated the example to reflect APM server version 7.0 fields):

PUT _ingest/pipeline/user_agent
{
  "description" : "Add user agent information",
  "processors" : [
    {
      "user_agent" : {
        "field" : "user_agent.original"
      }
    }
  ]
}

Please also add the pipeline to the APM Server configuration

output.elasticsearch:
  pipelines:
  - pipeline: "user_agent"

Update:
If you don't need to customise the user agent processor you can set register.ingest.pipeline.enabled to true in APM server configuration so that it would create a default processor and use it for the ingestion.

Cheers,
Hamid

Hi @Hamidreza,
i wanted to know how to set register.ingest.pipeline.enabled if i use the cloud service and have no access to the .yml files ?

thanks ,
Ariel

Hey @ariel_k, better to open a new discuss topic in the future. On cloud, you have access to the apm-server configuration via edit under your deployment - this guide provides step by step instructions. Once you've navigated there, add these user settings overrides:

apm-server.register.ingest.pipeline.enabled: true
output.elasticsearch.pipelines:
- pipeline: "apm_user_agent"

It look like this in the UI:

image

Thank you very much. seems like its working :slight_smile:

Hi @gil,

Currently I am logged in to the Elastic Cloud account where APM, ElasticSearch and Kibana server setup is present. Where is this apm-server.yml file exaclty present.

Before helping out, please note we have added APM RUM in our frontend applications which is build upon ReactJS.

Hi Anush,

Welcome to the forum.

On cloud, you can't directly edit the apm-server.yml file, instead there's an APM configuration section in the edit view of your deployment, you can override some of the APM server config options by expanding "User setting overrides" (please see the above screenshot).

Cheers,
Hamid

1 Like

Got it. Thank you!

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