05 Jun 2020 04:16 AM
Hello,
Can the env DT_CLUSTER_ID combine trwo processes in one. PG if they are in different HOSTGROUPS?
or
Can I split up a PG running on one host by giving the processes different DT_CLUSTER_ID’s?
and
is DT_NODE_ID not obsolete and can be replaced by any other metadata or is it here a extra function I am overlooking?
KR Henk
Solved! Go to Solution.
05 Jun 2020 10:57 AM
Hello Henk,
Can the env DT_CLUSTER_ID combine trwo processes in one. PG if they are in different HOSTGROUPS?
No. Host group works as a "splitter" with higher priority.
Can I split up a PG running on one host by giving the processes different DT_CLUSTER_ID’s?
Yes, you can. This is exactly what DT_CLUSTER_ID and DT_NODE_ID are for (besides process group detection rules). Depending on what you need to split. DT_CLUSTER_ID allows you to set the process group name and DT_NODE_ID is the node identifier within a process group. This is typically useful if you have more instances of a process on the same host
is DT_NODE_ID not obsolete and can be replaced by any other metadata or is it here a extra function I am overlooking?
It's not obsolete. It allows you to "split" process group instances within a process group on a single host and also identify them by a common name. For you have a process group APPX and 4 instances. Two are running on server1 two on server2. Without DT_NODE_ID you would see one process group and a single process group instance on each server as they would have been glued together. With DT_NODE_ID you can have on server1:
and on server2:
Depending on your case, you can also use process group detection rules to accomplish this.
Cheers
Julius
28 Feb 2022 10:11 AM
Ran into this most helpful topic, looking at a similar case. Multiple instances of an executable on multiple hosts.
Am I right assuming that with DT_CLUSTER_ID you set the process group id (e.g. "APPX" in your example), and with DT_NODE_ID you set somehow the specific unique occurrence of this process (group) (e.g, "instance4" in your example)?
Thus for DT_NODE_ID you have to come up with an unique way to define/fill this property.
So if I am right, this could be something you script, or anything you can pick up from the environment, a command line paramater, the user it's started with etc.
The PID of (EXE) process would be interesting, but since that probably has not started yet, it would be hard to capture.
Doc reference: Customize the structure of process groups | Dynatrace Docs
The doc reports the limitation "Process-group detection rules only affect processes that can be deep monitored by OneAgent"
28 Feb 2022 02:08 PM
Correct, this is only for deep monitored processes. For others there is is the declarative process grouping, available from 1.217.
DT_NODE_ID is typically an node identifier. PID is not a good idea to use for DT_NODE_ID. Use the identifier you have such as instance id within your cluster.
01 Mar 2022 09:28 AM
That is a pitty, because also with non-deep monitored processes it can be most useful to determine which instance is running.
28 Feb 2022 12:43 PM
Hi @henk_stobbe ,
you might have seen the rather new "declarative" processgrouping feature in Dynatrace now.
This might replace the use of these environment variables for some cases, especially for processes without deep injection.
kr,
Reinhard
28 Feb 2022 12:56 PM
I have tried this on an executable (.EXE) without deep monitoring, and have had no result yet. So I am open to good pointers and examples.
28 Feb 2022 01:05 PM
Hi @fstekelenburg ,
interesting. I didn't have any issues with that, though I have some additional feature request for placeholders.
In my case I used the declarative processgrouping to split up several .exe processes and their services that would have ended up all in one service and processgroup.
There were multiple instances of the same binary, with different purposes. The purpose is "identified" by a commandline argument (e.g. OrderExport).
Using the new settings API I can push e.g. such a definition for the declarative process grouping.
{
"schemaId": "builtin:declarativegrouping",
"objectId": "longid here",
"schemaVersion": "1.0.11",
"scope": "environment",
"summary": "bridgeserver",
"value": {
"detection": [
{
"id": "OrderExport",
"processGroupName": "bridgeserver",
"rules": [
{
"condition": "$contains(OrderExport)",
"property": "commandLine"
}
]
}
],
"enabled": true,
"name": "bridgeserver"
}
}
This then will "split out" the process with matching criteria into a separate processgroup and also it's services.
01 Mar 2022 10:25 AM
Thanks for the reply and insight. Extra examples are always helpful.
I actually managed to get it going, based on command line parameter part I have now a situation that separate types of startup are split up in PGs.
Additional question, are you able to see these process groups under Technologies and processes? In the Technology overview I can't see them. Even if I try to filter on the Technology (it sees my new entry as filterable type). Neither if I tagged the PG.
01 Mar 2022 10:41 AM
@fstekelenburg the Technologies and processes show only Deep monitored processes and custom technologies using extensions. I also don't see the processes added using declarative process grouping.
08 Mar 2022 01:07 PM
Hi Julius, I learned that this will be available probably in the next 6 months or so.
https://community.dynatrace.com/t5/Dynatrace-Open-Q-A/Declarative-process-grouping-should-they-show-...
01 Mar 2022 10:56 AM
A bit of inconsistent, but I can see the "Technology" under services, but not under Technologies and Processes:
01 Mar 2022 11:24 AM - edited 08 Mar 2022 07:32 PM
Yep, but you have (custom) services for this proces. The process groups can only be found by Search or on host level process details.
Oh, and I have to add, through Settings > Monitoring > Monitoring overview
where you also end when hitting the button Monitoring Settings above Applications (Web, Frontend) 🙂
08 Mar 2022 07:13 PM
Agreed. It's inconsistent - or more likely not finished yet.