18 Aug 2025
01:32 PM
- last edited on
19 Aug 2025
07:21 AM
by
MaciejNeumann
We are running a onprem solution and whant to show the following info in a dashboard.
How many machines currently run the process frmweb, and how many instances
- I can show a number, but that is identical for 5 different machines and that makes me suspicious.
How much memory are they using , i can show a % but i would like to show an amount.
And how long time has the oldest of the processes been running.
It would be great if my info show the related machine.
I have been playing with the :parents:splitBy("dt.entity.process_group_instance","dt.entity.host") and it works for the builtin:tech.generic.cpu.usage , but it looks as if the filter
:filter(and(or(in("dt.entity.process_group_instance",entitySelector("type(process_group_instance),entityName.equals(~"frmweb~")"))))) works for the "Group" maby because of: dt.entity.process_group_instance but i would like to see it for each process.
Tanx for any input.
Solved! Go to Solution.
18 Aug 2025 04:18 PM - edited 18 Aug 2025 04:19 PM
Hi @ArneV
Would you like something like this for the frmweb process?
Best regards,
János
19 Aug 2025 07:52 AM
That is certainly something close to what i would love to see.
Im not sure "AVG" is good enough since "apparently" our frmweb processes go bananas, and somehow consume all CPU (If i recall it correct) So realtime (as close as possible would be preferable).
ProcessCount by HOST certainly.
CPU for each process, since it's the individual process that is the important part.
MEM usage for each process as well, yes, since they are created when needed.
/Arne
19 Aug 2025 08:06 AM
Hi @ArneV
Instead of AVG you can use eg. MAX. In my dashnboard at AVG metric I use the :last transformation, it can be used at MAX also.
Best regards,
János
19 Aug 2025 08:10 AM
True... Now i polietly have to ask how did you create your dashboard 🙂
What metrics / filters are you using 🙂
Can i have it?
Regards
Arne
19 Aug 2025 08:41 AM
Hi @ArneV
It is not a question. I am going to share with you soon (I will have access to the env late evening). I created it yesterday as a template for you.
I have created two tags. With them I tagged the relevant hosts and process group instances dynamically.
Metrics:
Built-in metrics — Dynatrace Managed Docs
For cpu:
For mem :
Best regards,
János
19 Aug 2025 09:02 AM
Im also looking at the documentations, but sometimes it's difficult to finde the right one.
But tanx for the help and input.
Regards
Arne
19 Aug 2025 09:10 AM
You mentioned "tags"..
I was able to find the names of my servers
builtin:pgi.availability.state:filter(and(or(in("dt.entity.process_group",entitySelector("type(process_group),entityName.equals(~"frmweb~")"))))):splitBy("host.name"):names:sort(dimension("host.name",ascending)):limit(20)
However the numbers are apparently wrong, or most likely im asking to show something wrong.
19 Aug 2025 03:18 PM
@ArneV First of all, recommend adding :parents transformation to get the host.
Probably you want this for the process count:
builtin:tech.generic.processCount:filter(and(or(in("dt.entity.process_group_instance",entitySelector("type(process_group_instance),entityName.equals(~"frmweb~")"))))):parents:splitBy("dt.entity.host"):auto
Also depends, whether you want avg or max for a host. This approach assumes multiple frmweb processes on a host are still one single process group instance (likely yes in your case).
20 Aug 2025 06:50 AM - edited 20 Aug 2025 06:50 AM
Hi @ArneV,
This is my solution (little bit more complicated 😁).
First I created an automated tag with name: test.
First selector related with the PROCESS_GROUP, in this case I use a concrete PG name.
Then the second and thrid selector are dynamic becasue the relationships expression.
Result: host, pg, pgi are tagged the same tag.
type("PROCESS_GROUP"),entityName.equals("YOUR PROCESS GROUP NAME")
type("HOST"),toRelationShips.runsOn(type("PROCESS_GROUP"),tag("test"))
type(PROCESS_GROUP_INSTANCE),fromRelationship.isInstanceOf(type(PROCESS_GROUP),tag("test"))
This the result:
On the dashboard for the host I used the host view with the "test" tag:
The rest of the tiles are:
builtin:tech.generic.processCount:parents:filter(and(or(in("dt.entity.process_group_instance",entitySelector("type(process_group_instance),tag(~"test~")"))))):splitBy("dt.entity.host"):count:sort(value(avg,descending))
builtin:tech.generic.cpu.usage:parents:filter(and(or(in("dt.entity.process_group_instance",entitySelector("type(process_group_instance),tag(~"test~")"))))):splitBy("dt.entity.host","dt.entity.process_group_instance"):max:sort(value(max,descending)):last
builtin:tech.generic.mem.workingSetSize:parents:filter(and(or(in("dt.entity.process_group_instance",entitySelector("type(process_group_instance),tag(~"test~")"))))):splitBy("dt.entity.host","dt.entity.process_group_instance"):max:sort(value(max,descending)):last
But if you would like to use this dashboard for more process group with filtering. I would create more automated tags. Based on the tags I would create management zones. Then I rid of the tags from the above mentioned entity selectors and I would use the MZ filter.
I hope it helps.
Best regards,
János
20 Aug 2025 01:42 PM
Tanx @Mizső
Your examples certainly helped me to achieve what i wanted to do.
Even without using the TAG part i was able to show the dashboards. Now i just need to ensure that actual is what they wanted to see..
When people are asking for a stone, but cant really describe niter the type / color or properties of the stone. But you have to find the right stone 🙂
So yes it certainly helped!