User Tools

Site Tools


products:promonitor:latest:monitorsguide:sap_cloud_alm:real_user_monitoring_monitor

ALM Real User Monitoring Monitor

Retrieves RUM metrics from SAP Cloud ALM API. Publishes time-series metrics and evaluates alarms per configured rule.

  • API: GET /api/calm-metrics/v1/metrics?provider=rum

Prerequisites

Cloud ALM Connector (required)

Requires a Web Service connector with authentication type CLOUD_ALM.

SAP Cloud ALM Connector

Based on a service key from the SAP Cloud ALM API service instance in the BTP subaccount.

Required OAuth scopes in the authorities list of the instance parameters:

  • $XSMASTERAPPNAME.calm-api.hm.read
  • $XSMASTERAPPNAME.calm-api.metrics.read
  • $XSMASTERAPPNAME.calm-api.rum.personal.read (optional) needed to see real user names. Without it user names appear anonymized.

API Endpoints

Endpoint Purpose
POST /oauth/token Authentication (BTP UAA)
POST /api/calm-analytics/v1/analytics/providers/filters Fetch RUM service IDs and labels (data collection)
GET /api/calm-landscape/v1/landscapeObjects Fetch landscape objects (data collection)
GET /api/calm-metrics/v1/metrics?provider=rum Retrieve RUM metrics

Key Features

  • Publishes six metric types per RUM datapoint: responseTime users requests okStatus warningStatus criticalStatus
  • Per-row thresholds with standard G2W:80 W2M:90 syntax. Multi Threshold Syntax
  • Attributes Filter narrows which datapoints a row evaluates
  • Exclusive controls whether a matched datapoint is consumed or passed to later rows
  • Glob support for Metric and Service name fields (* = all; note: partial globs like *Status do NOT work on Metric)
  • Optional alarm tag for grouping or routing
  • Auto-clear when alarm condition no longer matches
  • Load Services button: auto-discovers RUM service IDs and labels from the live tenant and populates Service name and Service ID in the table

Data Collection

Data collection populates Service name and Service ID from the Cloud ALM landscape. It calls the RUM analytics filters API to resolve the exact service labels used by the metrics API (e.g. S4H.100 not S4H).

Always run data collection before adding rows. A service name not returned by data collection will not match what the metrics API returns and the row will never apply.

Data collection runs two calls:

  1. POST /api/calm-analytics/v1/analytics/providers/filters with body {“providerName”:“DP_RUM_REQUEST_TYPES”,“providerVersion”:“v1”} — returns the RUM service filter list. Extracts each service UUID and its label (e.g. S4H.100).
  2. GET /api/calm-landscape/v1/landscapeObjects — returns all landscape objects. Each object is checked against the RUM map. If found the RUM label is used as Service name. If not found the landscape name is used as fallback.

If the first call fails data collection falls back to showing all landscape objects without RUM label resolution.

Why the label matters: the metrics API returns service.name = S4H.100. The landscape object name is S4H. Without label resolution S4H* would fail to match S4H.100 and no rows would apply.

Click Load Services to run data collection and populate the surveillance table.

Configuration

Method 1: Load Services

  1. Open monitor configuration
  2. Click Load Services
  3. Table populates with Service name and Service ID from the live tenant
  4. Enable rows, set thresholds, save

Method 2: Manual / Wildcard

  1. Set Metric = * and/or Service name = * to match all
  2. Use only service labels returned by data collection. Do not invent service names.

Settings Reference

Field Type Default Description
Active Boolean true Enable or disable this row
Service name String * Glob matched against RUM service label e.g. S4H.100. * = all. Populated by data collection
Service ID String (empty) UUID of service. Auto-populated by data collection. Do not edit manually
Metric String * Metric type to match. Exact values only or *. See Metric types
Attributes Filter String (empty) Narrows datapoints. Format: key:value,key2:value2. Empty = no restriction
Thresholds String G2W:80 W2M:90 Alarm thresholds. Multi Threshold Syntax
Alarm tag String (empty) Optional tag appended to alarm message
Exclusive Boolean true If true datapoint is consumed by this row and not re-evaluated by later rows
Alarm Boolean true Enable alarm evaluation for this row
Metric Boolean true Publish metric datapoints for this row. If false evaluate alarms only

Metric types

Value Description
criticalStatus Count of requests in critical state
okStatus Count of requests in ok state
warningStatus Count of requests in warning state
responseTime Average response time in ms
requests Total request count
users Distinct user count
* All of the above

Attributes Filter

Narrows which datapoints a row matches. All clauses must match (AND). Matching is case insensitive. Malformed clauses are silently ignored.

Attribute Description Example
request RFC or HTTP request name /SDF/AJM_EXECUTE_EXM
requestType Protocol type RFC RFCS HTTP
user Hashed user identifier a3f9c…
microService Logical system name S4H100

Example filter value:

request:/SDF/AJM_EXECUTE_EXM,requestType:RFC

Filter Evaluation Order

  1. No rows configured: publish all metrics. No filtering. Backward compatible.
  2. Service name: glob matched against RUM service label. S4H* matches S4H.100. * matches all.
  3. Metric: exact match only. * matches all types. Partial globs like *Status do NOT work.
  4. Attributes Filter: all clauses must match. Empty = match all datapoints.
  5. Exclusive = true: datapoint consumed by first matching row. Later rows skip it.
  6. Metric = false: row evaluates alarms but publishes no metric datapoints.

Collected Metrics

Base key: promonitor.cloud_alm.rum.*

Metric key Unit Description
promonitor.cloud_alm.rum.<metric>.responseTime ms Average response time
promonitor.cloud_alm.rum.<metric>.users count Distinct user count
promonitor.cloud_alm.rum.<metric>.requests count Total request count
promonitor.cloud_alm.rum.<metric>.okStatus count Requests in ok state
promonitor.cloud_alm.rum.<metric>.warningStatus count Requests in warning state
promonitor.cloud_alm.rum.<metric>.criticalStatus count Requests in critical state

Tags published with each datapoint: service.name sap.service.name service.namespace service.instance.id sap.service.display_name request requestType user microService

Examples

1. Publish all metrics for all services

No rows needed. Empty table = publish everything.

2. Monitor only responseTime for service S4H.100

Active Service name Metric Attributes Filter Thresholds Exclusive Alarm Metric
true S4H.100 responseTime (empty) G2W:80 W2M:90 true true true

Other metric types for S4H.100 are not published.

3. Monitor only one request across all metric types

Active Service name Metric Attributes Filter Thresholds Exclusive Alarm Metric
true * * request:/SDF/AJM_EXECUTE_EXM G2W:80 W2M:90 true true true

All six metric types published. Only datapoints where request = /SDF/AJM_EXECUTE_EXM.

4. Alarm on responseTime without publishing metrics

Active Service name Metric Attributes Filter Thresholds Alarm tag Exclusive Alarm Metric
true * responseTime request:/SDF/AJM_EXECUTE_EXM G2W:2000 W2M:3000 SLOW_REQ true true false

Metric = false: alarms fire but no datapoints written to time-series.

5. Two requests with different thresholds

Active Service name Metric Attributes Filter Thresholds Alarm tag Exclusive Alarm Metric
true * responseTime request:/SDF/AJM_EXECUTE_EXM G2W:1000 W2M:2000 REQ_A true true true
true * responseTime request:/UI2/PAGE_BUILDER_PERS G2W:500 W2M:1500 REQ_B true true true

Row 1 consumes datapoints for first request (Exclusive = true). Row 2 handles second request independently.

6. Publish only request counts for RFC calls

Active Service name Metric Attributes Filter Thresholds Exclusive Alarm Metric
true * requests requestType:RFC G2W:80 W2M:90 true true true

Only requests metric published. Only datapoints where requestType = RFC.

Troubleshooting

Symptom Check
Empty table after Load Services Connector uses CLOUD_ALM auth. Service key is valid. Tenant has active RUM data.
Service name in row does not match Run data collection again. Use only labels returned by Load Services. Do not type service names manually.
HTTP 401 or 403 Regenerate service key in BTP instance. Verify OAuth scopes are set.
Metrics show 0 but Cloud ALM has data Some measures legitimately report 0. Check filter and attribute values match actual data.
Alarms not triggering Row is Active. Alarm is enabled. Metric and Service name match incoming data. Threshold syntax is correct.
No metrics stored when data exists Enable Metric on the relevant row.
User names appear anonymized Add $XSMASTERAPPNAME.calm-api.rum.personal.read scope to the service instance.

Limitations

  • Metric field does not support partial glob patterns. *Status does NOT match criticalStatus. Use exact values or *.
  • Service ID is auto-populated. Manual entry not supported.
  • Malformed Attributes Filter clauses are silently ignored. Validate format before saving.
  • Exclusive = true means first matching row wins. Order rows from most specific to most general.
  • Thresholds apply to the raw numeric value of the selected metric.
products/promonitor/latest/monitorsguide/sap_cloud_alm/real_user_monitoring_monitor.txt · Last modified: by luis