This discussion has been locked. The information referenced herein may be inaccurate due to age, software updates, or external references.
You can no longer post new replies to this discussion. If you have a similar question you can start a new discussion in this forum.

APM Bandwidth

We are just rolling out an installation of APM across our WAN and it seems that collecting performance counters is very expensive in terms of bandwidth.  Running some tests it seems that adding the colelction of one performance counter costs 450bps (approx).  Given that we are monitoring 5 applications with 4 monitors each that turns into roughly 9000bps (for only 20 numbers).  Of course this only happens every 5 minutes so it is pretty taxing on the WAN during polling times (we have traffic shaping where the control system gets priority).  Can APM stagger this communication?  It does seem like our traffic shaping is killing some of it as we sometimes have polls time out.

Maybe there is a better way to do the monitoring we want.  I want to see if there is a memory leak or if there is a change in the PID of the application (it restarts on its own and we want to track that).  The only I've found to get access to the PID is to grab the performance counter of it.

Any ideas would be helpful.

Tim

  • If you want to monitor processes on remote boxes, then you could use SNMP Process Monitor.It is more bandwidth friendly and it will also give you information about memory, so you can use it in Alerts.

    PID of a process is also saved to the database, but you would need to write custom SQL alert to be able to detect application restart (PID change).

  • Any idea where in the database the PID value is stored?

     

    And how to make one of those fancy Custom SQL Alerts?

     

    Thanks,

     

    Tim

  • Hello,
    Digging PID is possible, you might take a look on following link where something similar is discussed.

    Link

     

    Regards,

  • From the previous post the following works for alarming on PID Change:

    PID has changed for any of instances in last 10 minutes:

    Trigger Condition:

     
     
    WHERE APM_AlertsAndReportsData.ComponentId IN
    (
     
    SELECT [C].[ID] FROM [dbo].[APM_Component] [C]
    INNER JOIN [dbo].[APM_CurrentComponentStatus] [CS] ON [C].[ID] = [CS].[ComponentID]
    INNER JOIN [dbo].[APM_ProcessEvidence_Detail] [PED] ON [CS].[ComponentStatusID] = [PED].[ComponentStatusID]
     
    WHERE
    [PED].[PID] IS NOT NULL
      AND (
      SELECT COUNT(*) FROM [dbo].[APM_ComponentStatus_Detail] [PRECS] 
    WHERE [C].[ID] = [PRECS].[ComponentID] AND [TimeStamp] > DATEADD(minute,-10, GETUTCDATE())
    )
    <>
    (
    SELECT COUNT(*) FROM [dbo].[APM_ComponentStatus_Detail] [PRECS] 
    JOIN [dbo].[APM_ProcessEvidence_Detail] [PE] ON [PRECS].[ID] = [PE].[ComponentStatusID]
        WHERE [C].[ID] = [PRECS].[ComponentID] AND [TimeStamp] > DATEADD(minute,-10, GETUTCDATE())

    AND ([PE].[PID] = [PED].[PID] OR [PE].[PID] IS NULL)

    )
    )

     

     

    Reset Condition:

     

    WHERE NOT APM_AlertsAndReportsData.ComponentId IN
    (

    SELECT [C].[ID] FROM [dbo].[APM_Component] [C]

    INNER JOIN [dbo].[APM_CurrentComponentStatus] [CS] ON [C].[ID] = [CS].[ComponentID]

    INNER JOIN [dbo].[APM_ProcessEvidence_Detail] [PED] ON [CS].[ComponentStatusID] = [PED].[ComponentStatusID]

     

    WHERE

    [PED].[PID] IS NOT NULL AND

    (

      SELECT COUNT(*) FROM [dbo].[APM_ComponentStatus_Detail] [PRECS] 

    WHERE [C].[ID] = [PRECS].[ComponentID] AND [TimeStamp] > DATEADD(minute,-10, GETUTCDATE())

    )

    <>

    (

    SELECT COUNT(*) FROM [dbo].[APM_ComponentStatus_Detail] [PRECS] 

    JOIN [dbo].[APM_ProcessEvidence_Detail] [PE] ON [PRECS].[ID] = [PE].[ComponentStatusID]

        WHERE [C].[ID] = [PRECS].[ComponentID] AND [TimeStamp] > DATEADD(minute,-10, GETUTCDATE())

    AND ([PE].[PID] = [PED].[PID] OR [PE].[PID] IS NULL)

    )

    )

     

    Thanks again Václav.

     

    Tim.