With process grouping rules, you can merge multiple process groups into one or split a process group into separate, more granular groups.
Dynatrace environment with process grouping rules enabled.
Permissions: Environment admin or process group configuration rights.
Optional Choose a Process group display name.
If you leave this field empty, Dynatrace generates a name for the group automatically.
Choose the reporting mode by selecting an option in Report process group.
Optional Choose a Type of captured processes.
Select Add detection rule.
Select a Property to detect.
Create a detection condition using one of the matching functions.
$contains(svc) — Matches if svc appears anywhere in the process property value.$eq(svc.exe) — Matches if svc.exe matches the process property value exactly.$prefix(svc) — Matches if svc matches the prefix of the process property value.$suffix(svc.py) — Matches if svc.py matches the suffix of the process property value.For example, $suffix(svc.py) would detect processes named loyaltysvc.py and paymentssvc.py.
Optional Select Case sensitive. When enabled, matching conditions are case sensitive. When disabled, matching conditions are case insensitive.
The grouping rule determines how matched processes are split or merged.
Choose if the rule should be a standalone rule.
Select an ID type to define which property identifies your process group.
Enter a Process group identifier. This identifier is used by Dynatrace to recognize this process group. All processes matched by the detection rule receive this same seed for ID calculation, which results in all matched processes being merged into a single process group.
Select a Property. Processes are dynamically split or merged based on the selected property value:
Optional Expand Advanced settings to set delimiters:
Optional Define a Process ID source property to identify individual processes.
Optional Add Advanced settings to set delimiters.
You have server.js processes that spawn worker.js workers, all managed by PM2 process manager:
NodeJS v18.20.6 PM2 Process Manager\_ node /my/path/server.js| \_ /bin/node /my/path/worker.js\_ node /my/path/server.js| \_ /bin/node /my/path/worker.js\_ node /my/path/server.js| \_ /bin/node /my/path/worker.js\_ node /my/path/server.js\_ /bin/node /my/path/worker.js
All these processes are automatically grouped together. The PM2 process manager starts processes in a special type of container, which causes command line swapping. Because of this, you cannot use the command line for splitting. To split them into groups of server processes and worker processes, use the Node.js script name property.
Node.js.Node.js script name and condition $eq(worker.js).Node.js script name and condition $eq(server.js).Node.js script name.This splits the matched processes into separate groups based on the script name — one group for server.js and one for worker.js.
You have two processes:
\_ node /my/path/server.js|\_ python /my/path/server.py
Dynatrace automatically groups these separately because the server processes use different technologies. To merge them into a single group, find a common property shared only by the desired processes. For example:
Process grouping rules provide the option to define process groups and process group instances through standalone rules. To define standalone rules, enable the feature while creating a new rule. This results in the following:
Standalone rules are valid only for deep monitored processes.
Two common properties used for defining detection rules are Command line and Command line - single argument. Despite the similar names, they are distinct properties with different matching behavior:
For a process such as:
myProgram.exe --instance=10 --port=9090 --arg=32
Command line matches the full string, so the following conditions apply:
$contains(--port=9090)$suffix(=32)$prefix(my)$eq(myProgramm.exe --instance=10 --port=9090 --arg=32)Command line — single argument matches each argument individually, so the following conditions apply:
$contains(--port=9090)$suffix(exe), $suffix(=10), $suffix(9090), $suffix(arg=32)$prefix(my), $prefix(--instance), $prefix(--p), $prefix(--arg=)$eq(myProgramm.exe), $eq(--instance=10), $eq(--port=9090), $eq(--arg=32)The following environment variables are legacy variables which should only be used as a last resort, as they can lead to errors. These variables are accessible as environment variables, as well as Dynatrace custom cluster ID variables and Dynatrace custom node ID variables.
Dynatrace custom cluster ID variables:
DT_NODE_IDRUXIT_NODE_IDDynatrace custom node ID variables:
DT_CLUSTER_IDRUXIT_CLUSTER_IDRestart deep-monitored processes after each configuration change.
To help you with this, Dynatrace displays a Restart required warning on each process group instance when it detects that the loaded configuration is outdated.
Note that changes to technology or group name in a rule don't trigger the warning, so the old technology or group name may still appear in the UI.
The following processes cannot be monitored with process grouping rules:
conhost.execmd.exeThis is because an ID can't be calculated for them. Other processes can spawn thousands of these processes, so the OS Agent skips certain data for them — such as working directory, command line, and container properties — which are crucial for the ID calculation.