From 17ea8821490dfefb056520021a40285e954ab0c5 Mon Sep 17 00:00:00 2001 From: Emir Uner Date: Thu, 6 Nov 2025 15:02:47 +0100 Subject: [PATCH 1/3] Document mendix.tracing.filter setting --- .../en/docs/refguide/runtime/tracing-in-runtime.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/content/en/docs/refguide/runtime/tracing-in-runtime.md b/content/en/docs/refguide/runtime/tracing-in-runtime.md index eca257ff717..bbdac287686 100644 --- a/content/en/docs/refguide/runtime/tracing-in-runtime.md +++ b/content/en/docs/refguide/runtime/tracing-in-runtime.md @@ -30,6 +30,17 @@ Tracing can be enabled from the `App Settings` -> `Configuration` dialog. In the {{< figure src="/attachments/refguide/runtime/tracing-in-runtime/tracing-configuration.png" >}} +### Filtering + +For filtering out specific traces, `mendix.tracing.filter` system property can be used. The specified spans and their sub-spans will be filtered out. `matchType` specifies how the name of the span is matched. Currently only `partial` is supported for `matchType` which checks if the span name contains the provided value. +```json +[ + { + "type": "drop", "matchType": "partial", "spanName": "Loop" + } +] +``` + ### Testing To test the tracing you can use [Jaeger](https://www.jaegertracing.io/). For example, the all-in-one binary or Docker image. Jaeger will listen to the above endpoint by default. From 30f0cb8eb63cb75a899ba0154e0abb5ee8971b07 Mon Sep 17 00:00:00 2001 From: MarkvanMents Date: Wed, 19 Nov 2025 13:26:28 +0100 Subject: [PATCH 2/3] Proofread --- .../refguide/runtime/tracing-in-runtime.md | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/content/en/docs/refguide/runtime/tracing-in-runtime.md b/content/en/docs/refguide/runtime/tracing-in-runtime.md index bbdac287686..27e689e654b 100644 --- a/content/en/docs/refguide/runtime/tracing-in-runtime.md +++ b/content/en/docs/refguide/runtime/tracing-in-runtime.md @@ -6,7 +6,7 @@ description: "Describes how to setup and use tracing in the Mendix Runtime." ## Introduction -Mendix now supports tracing via OpenTelemetry. When tracing is enabled, the runtime generates traces that help you analyze errors and performance. +Mendix supports tracing via OpenTelemetry. When tracing is enabled, the runtime generates traces that help you analyze errors and performance. These traces can be sent to observability tools like [Jaeger](https://www.jaegertracing.io/) or [Datadog](https://www.datadoghq.com/). {{% alert color="warning" %}} @@ -15,7 +15,7 @@ Tracing is currently not supported on Mendix Cloud and Mendix Cloud Dedicated. ## Generated spans -The runtime generates spans for: +The runtime generates spans for the following: * Runtime operations coming from the front end, for example, microflow calls, retrieves, commits, and deletes * Microflow execution within the runtime, including sub-microflow calls @@ -26,13 +26,20 @@ The runtime generates spans for: ### Minimal Configuration {#min-configuration} -Tracing can be enabled from the `App Settings` -> `Configuration` dialog. In the `Tracing` tab, you can enable tracing and specify an **Endpoint** and **Service Name**. +You can enable tracing from the `App Settings` -> `Configuration` dialog. In the `Tracing` tab, you can enable tracing and specify an **Endpoint** and **Service Name**. {{< figure src="/attachments/refguide/runtime/tracing-in-runtime/tracing-configuration.png" >}} ### Filtering -For filtering out specific traces, `mendix.tracing.filter` system property can be used. The specified spans and their sub-spans will be filtered out. `matchType` specifies how the name of the span is matched. Currently only `partial` is supported for `matchType` which checks if the span name contains the provided value. +{{% alert color="info" %}} +Filtering was introduced in Mendix 11.5.0. +{{% /alert %}} + +You can filter out specific traces using the `mendix.tracing.filter` system property. The specified spans and their sub-spans will be filtered out. + +`matchType` specifies how the name of the span is matched. The `matchType` must be set to `partial`. This checks if the span name contains the provided value. + ```json [ { @@ -43,15 +50,15 @@ For filtering out specific traces, `mendix.tracing.filter` system property can b ### Testing -To test the tracing you can use [Jaeger](https://www.jaegertracing.io/). For example, the all-in-one binary or Docker image. Jaeger will listen to the above endpoint by default. +You can test the tracing you using [Jaeger](https://www.jaegertracing.io/). For example, you can use the all-in-one binary or Docker image. Jaeger will listen to endpoint `http://localhost:4318/v1/traces` by default. Alternatively, you can set up the [OpenTelemetry collector](https://opentelemetry.io/docs/collector/), which will also listen to the default endpoint and can be configured to send to backends which support OpenTelemetry. Check with your APM vendor to confirm that OpenTelemetry is supported. The free online collector configuration tool [OTelBin](https://github.com/dash0hq/otelbin) can help with collector configuration. ### All settings -Below we list the ones that are supported by the Mendix runtime. See [Configure the SDK](https://opentelemetry.io/docs/languages/java/configuration/#environment-variables-and-system-properties) for a reference on the settings that are prefixed with `otel.`. +The following settings are supported by the Mendix runtime. See [Configure the SDK](https://opentelemetry.io/docs/languages/java/configuration/#environment-variables-and-system-properties) for more information about the settings that are prefixed with `otel.`. -The Java Agent can be configured through system properties, which can be added to the **Extra JVM parameters** field (for example, `-Dotel.exporter.otlp.traces.endpoint`), or set through environment variables. +You can configure the Java Agent through system properties which can be added to the **Extra JVM parameters** field (for example, `-Dotel.exporter.otlp.traces.endpoint`), or set through environment variables. | Name | Description | Default | |------|-------------|---------| @@ -68,7 +75,7 @@ The Java Agent can be configured through system properties, which can be added t ## Enabling Tracing for Deployed Applications -To enable tracing for your deployed Mendix application, configure the following JVM parameters: +You enable tracing for your deployed Mendix application, by the following JVM parameters: ``` -javaagent:mxinstallation/runtime/agents/opentelemetry-javaagent.jar @@ -110,20 +117,20 @@ Replace `MyServiceName` with a meaningful identifier for your service, and `coll ## Sending Traces to Datadog -There are two options for exporting OpenTelemetry traces to Datadog: +You can export OpenTelemetry traces to Datadog using one of the following two ways: * Datadog Distribution of OpenTelemetry (DDOT) * OpenTelemetry Collector ### Datadog Distribution of OpenTelemetry (DDOT) -DDOT can be deployed to Kubernetes or Linux (Preview). The default setup provides minimal configuration, allowing it to receive OpenTelemetry traces or logs from your Mendix app and send them to Datadog. With this default configuration, the collector listens on the same ports as your Mendix application. +You can deploy DDOT to Kubernetes or Linux (Preview). The default setup provides minimal configuration, allowing it to receive OpenTelemetry traces or logs from your Mendix app and send them to Datadog. With this default configuration, the collector listens on the same ports as your Mendix application. For installation instructions, refer to the official [DDOT documentation](https://docs.datadoghq.com/opentelemetry/setup/ddot_collector/install). ### OpenTelemetry Collector -The OpenTelemetry Collector can be installed on various operating systems, including Windows, macOS, and Linux. +You can install the OpenTelemetry Collector on various operating systems, including Windows, macOS, and Linux. To use the OpenTelemetry Collector with Datadog, follow these steps: From 952a5840848556abc33a833ed11faef79a9d9c8b Mon Sep 17 00:00:00 2001 From: Mark van Ments <35492184+MarkvanMents@users.noreply.github.com> Date: Thu, 20 Nov 2025 15:20:27 +0100 Subject: [PATCH 3/3] Unnecessary word. --- content/en/docs/refguide/runtime/tracing-in-runtime.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/refguide/runtime/tracing-in-runtime.md b/content/en/docs/refguide/runtime/tracing-in-runtime.md index 27e689e654b..3d020ac1f3f 100644 --- a/content/en/docs/refguide/runtime/tracing-in-runtime.md +++ b/content/en/docs/refguide/runtime/tracing-in-runtime.md @@ -50,7 +50,7 @@ You can filter out specific traces using the `mendix.tracing.filter` system prop ### Testing -You can test the tracing you using [Jaeger](https://www.jaegertracing.io/). For example, you can use the all-in-one binary or Docker image. Jaeger will listen to endpoint `http://localhost:4318/v1/traces` by default. +You can test the tracing using [Jaeger](https://www.jaegertracing.io/). For example, you can use the all-in-one binary or Docker image. Jaeger will listen to endpoint `http://localhost:4318/v1/traces` by default. Alternatively, you can set up the [OpenTelemetry collector](https://opentelemetry.io/docs/collector/), which will also listen to the default endpoint and can be configured to send to backends which support OpenTelemetry. Check with your APM vendor to confirm that OpenTelemetry is supported. The free online collector configuration tool [OTelBin](https://github.com/dash0hq/otelbin) can help with collector configuration.