Skip to main content

Data Privacy and Exclusions

Masking and suppressing fields

Optional Features

Enabling optional capabilities

Thumbnail rule criteria

Matching rules for thumbnails

Full example

Sample configuration file
GermainUX-Agent Monitoring Configuration Reference

Overview

A monitoring rule tells GermainUX-Agent: Monitoring rules are JSON documents. They are normally created and managed centrally in GermainUX Enterprise. This reference is primarily intended for advanced configuration, diagnostics, and locally managed deployments.

How the Agent Receives a Rule

The Agent resolves monitoring configuration in the following order:
1

It retrieves the list of monitored applications and rule names from GermainUX Enterprise

2

It downloads the JSON configuration associated with each rule

3

If the server request fails, it looks for:

  1. If a local Registry rule exists for the executable, the Agent loads the JSON file specified by that rule.
A local rule takes precedence over a centrally provided rule for the same executable.
To inspect the configuration currently applied to an application, right-click the GermainUX-Agent system-tray icon and select Configurations.

Top-level fields

monitorConfig

queue — how facts are sent

proxy

Configures an outbound proxy used for HTTP monitoring interception. excludedPorts keeps
the proxy from intercepting traffic on ports you don’t want captured (commonly the
GermainUX ports themselves, to avoid the agent monitoring its own uploads).

debug

Verbose diagnostic logging switches for the UI Worker’s own troubleshooting (dumping
control trees, sibling walks, snapshot contents, etc. to the log). All should stay false
in normal production use — they add log volume and are only useful when working with
support to diagnose a UI-capture issue.

logging

Informational metadata carried with the rule. This does not control where the Worker or
Profiler actually write their log files — that’s governed entirely by the
LogPath/WorkerLogLevel/CLRLogLevel registry settings described in
Agent Settings. Leave this block as-is or omit it.

globalVariables — context attached to every fact

Each entry describes a value to read from the UI once and attach as context to every
fact emitted afterward (e.g. the logged-in username shown somewhere in the app’s chrome).
See Context variable fields below for the full field list —
userClicks selector variables use the exact same shape.

Data privacy: masking and exclusions

Two related, independent settings control what raw values are allowed to leave the
machine:
type values:

features — everything else is opt-in

All monitoring capability beyond basic identification lives under features, one block
per capability, each independently enabled. This section is required to be present in
the rule JSON (even if every sub-feature inside it is left off).

processMetrics

Periodic OS-level process metrics: CPU %, working-set memory, thread count/detail, and
(optionally) handle/GDI/USER object counts and disk I/O deltas — the classic native
resource-leak indicators for a long-running desktop app.

gcMetrics

.NET garbage-collection metrics: a fact per GC pause as it happens (with generation,
whether it was induced, and heap size before/after), plus periodic cumulative gen0/1/2
collection counts every interval seconds. Requires the CLR Profiler to be attached.

freezeDetection

Periodically pings each monitored window (pollIntervalMs) to see if it’s still
responding to messages, waiting up to hangTimeoutMs before considering it hung. A fact
is emitted when a previously-hung window recovers, reporting how long it was
unresponsive. This runs its own background thread independent of other UI monitoring, so
it has a real (small) always-on cost — weigh that against how important freeze detection
is for the target application.

profiler — CPU sampling

Stack-sampling CPU profiler (requires the CLR Profiler attached). interval is how often
(ms) a stack sample is taken. inclusions/exclusions are executable-name filters for
which modules’ code should appear in samples (both empty = everything).

http — outbound HTTP monitoring

Captures outbound HTTP(S) calls made by the target process, broken into connect/wait/
download timing phases.

exception

Reports managed (.NET) exceptions as they’re thrown, with a captured stack trace.
Requires the CLR Profiler.

monitor — core UI activity

The baseline UI Worker monitoring feature; everything below it in this section
(clickMaps, userClicks, userSearches, userFacingErrors) requires enabled: true
here as well.

clickMaps / mouseMaps — heatmap overlays

clickMaps reports one point per click (control + screen position) for click-heatmap
visualizations. mouseMaps buffers raw mouse movement and flushes it periodically (every
5 minutes, on view change, or at shutdown) for movement heatmaps. Both are tagged with
whichever “view” was most recently identified by a userClicks selector — see below.

userClicks — business-level click tracking

Unlike monitor.mouseEnabled (which reports every click), userClicks only reports a
click when it matches one of your named selectors — intended for tracking specific
business actions (“clicked Submit”, “opened a customer record”) rather than raw UI noise.

userSearches

When the trigger control is clicked, the current value of the separate valueControl
is captured as the search term. Use this for search boxes where the meaningful value
lives in a different control than the one that was clicked.

userFacingErrors

Reports when a newly created window’s title matches one of the given regular
expressions — a lightweight way to detect error/failure dialogs without needing to
identify their exact controls. label becomes the fact’s name field on a match.

replay — session replay

Captures enough of the UI tree over time to reconstruct a visual replay of the session,
independent of the plain monitoring facts above.

Filter fields

Used by userClicks/userSearches selectors, globalVariables, and context variables,
to identify a specific control:
Any combination of these can be set; all specified fields must match (AND).

Context variable fields

Used by both globalVariables and a userClicks selector’s variables:

Thumbnail rule criteria

Each replay.thumbnailRules[] entry has a method ("win32" or "screen" capture) and
a criteria object of AND’d match conditions, evaluated against each control the Worker
encounters:
Each rule also takes a top-level recaptureOn array listing which attribute changes
(label, visibility, bounds, value, selected) should trigger re-capturing the
thumbnail for a matched control after its first capture; omit it (or leave it empty) to
capture once and never recapture.

Full example

See Config/agent-config-sample.json in the agent source tree for a complete, valid
starting-point file combining every block above with realistic default values and a
"description" field explaining it’s meant to be copied and customized per application.

Get Help

Contact GermainUX Support

The GermainUX team helps you get up and running faster, empower your team, turn data into actionable insights, and optimize performance to deliver measurable business outcomes.

Can't find what you need?

Search all GermainUX docs with Ctrl + K, or use the feedback buttons at the bottom of this page to tell us what is missing.

The content of this document is proprietary to GERMAIN SOFTWARE.