This template lists Top 10 Citrix Sessions for Latency and RTT values. It needs to be assigned to Citrix XenApp Session Servers.
Requirements:
- WMI credentials are required to access Citrix XenApp Session servers.
- WMI access should be allowed from SolarWinds polling engine server to Citrix XenApp Session servers.
- Script runs locally on SolarWinds server and executes WMI query remotely. "root\citrix\EUEM" WMI namespace must exist on your servers.
Output:
- Script has two components: "Top 10 Latency" and "Top 10 RTT"
- Each component returns 10 message and statistic pairs sorted by the monitored metric in descending order.
- Statistic shows the current metric value in milliseconds
- Message shows the Session ID and Username detail
- Template does not have threshold values configured, this can be configured for each component based on monitoring requirements
- If WMI query does not return any value or access is not allowed, then the component returns "No Data" in the message field
This image shows sample output:
Summary View Display:
If the template is assigned to all Citrix XenApp Session servers, then a "Citrix" application summary can be defined.
This figure shows sample widgets configured using "Custom Query" widgets:
These are the custom SWQL queries used in these widgets:
Session Latency - SWQL query:
SELECT S.NODE as [Server Name], M.MSG as [Session Information], S.STAT as [Latency (ms)] , case when S.STAT>=500 then '/Orion/images/StatusIcons/Small-Critical.gif' when S.STAT>=200 then '/Orion/images/StatusIcons/Small-Warning.gif' else '/Orion/images/StatusIcons/Small-Up.gif' end as [_IconFor_Latency (ms)] FROM ( SELECT n.Caption AS NODE, a.Name AS APP, c.ComponentName AS CMPNT, de.AvgNumericData AS STAT, de.StringData AS MSG, de.ColumnLabel as LBL FROM Orion.APM.Component(nolock=true) c JOIN Orion.APM.CurrentComponentStatus(nolock=true) ccs ON c.ComponentID = ccs.ComponentID JOIN Orion.APM.DynamicEvidence(nolock=true) de ON de.ComponentStatusID = ccs.ComponentStatusID JOIN Orion.APM.Application(nolock=true) a ON c.ApplicationID = a.ApplicationID JOIN Orion.Nodes(nolock=true) n ON a.NodeID = n.NodeID WHERE de.AvgNumericData IS NOT NULL AND a.Name='Citrix XenApp Session Statistics' AND c.Name='Top 10 Latency' ) s INNER JOIN ( SELECT n.Caption AS NODE, a.Name AS APP, c.ComponentName AS CMPNT, de.AvgNumericData AS STAT, de.StringData AS MSG, de.ColumnLabel as LBL FROM Orion.APM.Component(nolock=true) c JOIN Orion.APM.CurrentComponentStatus(nolock=true) ccs ON c.ComponentID = ccs.ComponentID JOIN Orion.APM.DynamicEvidence(nolock=true) de ON de.ComponentStatusID = ccs.ComponentStatusID JOIN Orion.APM.Application(nolock=true) a ON c.ApplicationID = a.ApplicationID JOIN Orion.Nodes(nolock=true) n ON a.NodeID = n.NodeID WHERE de.AvgNumericData IS NULL AND a.Name='Citrix XenApp Session Statistics' AND c.Name='Top 10 Latency' ) m ON s.Node=m.Node and s.App=m.App and s.cmpnt=m.cmpnt and s.lbl=m.lbl order by S.STAT desc
Session RTT - SWQL query:
SELECT S.NODE as [Server Name], M.MSG as [Session Information], S.STAT as [RTT (ms)] , case when S.STAT>=500 then '/Orion/images/StatusIcons/Small-Critical.gif' when S.STAT>=200 then '/Orion/images/StatusIcons/Small-Warning.gif' else '/Orion/images/StatusIcons/Small-Up.gif' end as [_IconFor_RTT (ms)] FROM ( SELECT n.Caption AS NODE, a.Name AS APP, c.ComponentName AS CMPNT, de.AvgNumericData AS STAT, de.StringData AS MSG, de.ColumnLabel as LBL FROM Orion.APM.Component(nolock=true) c JOIN Orion.APM.CurrentComponentStatus(nolock=true) ccs ON c.ComponentID = ccs.ComponentID JOIN Orion.APM.DynamicEvidence(nolock=true) de ON de.ComponentStatusID = ccs.ComponentStatusID JOIN Orion.APM.Application(nolock=true) a ON c.ApplicationID = a.ApplicationID JOIN Orion.Nodes(nolock=true) n ON a.NodeID = n.NodeID WHERE de.AvgNumericData IS NOT NULL AND a.Name='Citrix XenApp Session Statistics' AND c.Name='Top 10 RTT' ) s INNER JOIN ( SELECT n.Caption AS NODE, a.Name AS APP, c.ComponentName AS CMPNT, de.AvgNumericData AS STAT, de.StringData AS MSG, de.ColumnLabel as LBL FROM Orion.APM.Component(nolock=true) c JOIN Orion.APM.CurrentComponentStatus(nolock=true) ccs ON c.ComponentID = ccs.ComponentID JOIN Orion.APM.DynamicEvidence(nolock=true) de ON de.ComponentStatusID = ccs.ComponentStatusID JOIN Orion.APM.Application(nolock=true) a ON c.ApplicationID = a.ApplicationID JOIN Orion.Nodes(nolock=true) n ON a.NodeID = n.NodeID WHERE de.AvgNumericData IS NULL AND a.Name='Citrix XenApp Session Statistics' AND c.Name='Top 10 RTT' ) m ON s.Node=m.Node and s.App=m.App and s.cmpnt=m.cmpnt and s.lbl=m.lbl order by S.STAT desc
Ecmel Ozdemir
Prosperon - UK SolarWinds Partners
Installation | Consultancy | Training | Licenses