Configure convergence settings
Parameterized URLs such as /api/orders/12345 and /api/orders/67890 each become a separate metric dimension, increasing storage costs, slowing queries, and making dashboards unreadable. Convergence settings in Application Real-Time Monitoring Service (ARMS) consolidate high-cardinality endpoint names into unified patterns to keep monitoring data manageable.
Module overview
ARMS provides four convergence modules. Refer to the following table to find the module that applies to your scenario.
| Module | Applies to | Methods | Default threshold |
|---|---|---|---|
| Provider Interface Convergence | Endpoints your application exposes (inbound requests) | Custom Convergence, Smart Convergence | 1,000 samples per hour |
| Dependency Interface Convergence | Downstream endpoints your application calls (outbound requests) | Custom Convergence, Smart Convergence | 200 samples per hour |
| SQL Convergence | SQL database calls with varying parameters or sharded tables | SQL normalization, Cardinality space convergence | 100 samples per hour |
| NoSQL Convergence | NoSQL calls (Redis, MongoDB) with dynamic parameters | NoSQL normalization, Cardinality space convergence | 100 samples per hour |
Prerequisites
Make sure that your application is connected to ARMS Application Monitoring. For more information, see the application monitoring quick start guide.
Access convergence settings
-
Log on to the Cloud Monitor 2.0 console.
-
In the left-side navigation pane, choose Application Monitoring.
-
Click the name of the target application.
-
In the left-side navigation pane, choose Application Settings > Convergence Settings.
Configure Provider Interface Convergence
Provider Interface Convergence handles inbound endpoints that your application exposes. You can define rules manually (Custom Convergence) or let the system generate rules automatically (Smart Convergence).
Custom Convergence
Define regex-based rules to converge matching endpoint names into a single unified name.
| Parameter | Description |
|---|---|
| Toggle | Enables or disables Custom Convergence. |
| Convergence rule (regex) | A regular expression that matches endpoint names and converges them into the name you specify. You can add multiple rules. |
| Exclusion list (exact string) | Endpoint names excluded from convergence (exact match). These endpoints retain their original names regardless of convergence rules. |
Examples of how convergence rules transform endpoint names:
| Incoming endpoint | Rule (regex) | Result |
|---|---|---|
/api/orders/12345 |
/api/orders/.* |
/api/orders/{id} |
/api/orders/67890 |
/api/orders/.* |
/api/orders/{id} |
/ad-recommend-summer |
/ad-recommend-.* |
/ad-recommend |
/ad-recommend-winter |
/ad-recommend-.* |
/ad-recommend |
To prevent a specific endpoint from being converged, add it to the exclusion list. For example, adding /api/orders/health keeps that health-check endpoint visible under its original name.
Smart Convergence
Smart Convergence automatically detects high-cardinality endpoints based on traffic patterns and generates convergence rules without manual configuration.
| Parameter | Description |
|---|---|
| Toggle | Enables or disables Smart Convergence. |
| Convergence rule (regex) | System-generated convergence rules. Initially displays "Not generated". Rules are generated after the trigger threshold is reached. |
| Exclusion list (exact string) | System-generated exclusion list. Initially displays "Not generated". |
| Trigger threshold | The sample count that triggers automatic analysis. Default: more than 1,000 samples per hour. |
When the sample count for an endpoint exceeds the trigger threshold, the system analyzes traffic patterns and generates convergence rules. You can view the generated rules on the page but cannot edit them. To define custom rules, use Custom Convergence instead.
Configure Dependency Interface Convergence
Dependency Interface Convergence consolidates downstream endpoints that your application calls. It provides the same Custom Convergence and Smart Convergence sub-features as Provider Interface Convergence.
The key difference is the default trigger threshold: 200 samples per hour (compared to 1,000 for provider interfaces). This lower threshold reflects the higher likelihood of cardinality explosion in downstream dependencies.
Configure rules and exclusion lists the same way as Provider Interface Convergence.
Configure SQL Convergence
SQL Convergence addresses cardinality explosion caused by SQL statements with varying parameter values or sharded tables.
| Parameter | Description |
|---|---|
| SQL normalization | When enabled, replaces literal parameter values in SQL statements with the ? placeholder, grouping similar statements into a single template. Also handles sharding by replacing numeric table suffixes with {NUM}. |
| Cardinality space convergence | When the number of unique SQL patterns exceeds the specified threshold per hour, overflow statements are converged into {ARMS_OTHERS}. Default: more than 100 samples per hour. |
Example of how SQL normalization transforms a query on a sharded table:
-- Before normalization
SELECT * FROM orders_07 WHERE user_id='A123' AND status=1
-- After normalization
SELECT * FROM orders_{NUM} WHERE user_id=? AND status=?
SQL normalization replaces numeric suffixes in table names (such as orders_07) with {NUM}, handling common sharding patterns automatically.
Configure NoSQL Convergence
NoSQL Convergence consolidates endpoint names for NoSQL operations (such as Redis and MongoDB commands) that contain dynamic parameters.
| Parameter | Description |
|---|---|
| NoSQL normalization | When enabled, normalizes dynamic parameters in NoSQL commands to prevent cardinality explosion caused by varying key names or parameter values. |
| Cardinality space convergence | When the number of unique NoSQL patterns exceeds the specified threshold per hour, overflow commands are converged into {ARMS_OTHERS}. Default: more than 100 samples per hour. |
Save your configuration
After you modify settings, click Save at the bottom of the page.
New convergence rules take effect from the next collection interval (typically within minutes). Historical data is not re-converged.
FAQ
An endpoint was unexpectedly converged. How do I keep the original name?
Add the endpoint name (exact string) to the exclusion list in the Custom Convergence section of the corresponding module. The endpoint then retains its original name regardless of other rules.
What is the priority between custom and smart convergence rules?
Custom Convergence takes priority over Smart Convergence. When an endpoint matches both a custom rule and a smart rule, the custom rule applies.
How long does it take for configuration changes to take effect?
After you save the configuration, new rules take effect from the next collection interval (typically within minutes). Historical data is not affected.