cancel
Showing results for 
Search instead for 
Did you mean: 
Create Post
Level 8

Hardware requirements for additional polling engine using several modules?

Hello everyone, we are considering adding another additional polling engine to our SolarWinds environment, and we are re-evaluating our hardware needs for additional pollers. I am having a difficult time locating hardware requirements for this for more than just 1 particular module. We are running the following modules:

NPM 12.0

IPAM 4.3.2

SAM 6.2.4

DPA 10.0.1

NCM 7.5

IVIM 2.1.2

QoE 2.1.0

NetPath 1.0

NTA 4.2.0

UDT 3.2.4

We currently have 2 licenses per server, and all of our servers used for our entire SolarWinds environment are virtual servers if that matters. I would also like to confirm if 12,000 total elements per additional poller is the maximum number of total elements we should be allowing, and if there is lesser number than 12,000 that we should consider moving nodes to an additional polling engine. We currently do not have any nodes that we no longer need to monitor, and the polling rate on one of our additional pollers has been hovering at 60% with just under 9,000 total elements, so we are trying to be a little proactive before we reach 85% of its polling rate and have to start scrambling a little faster to come up with a proper resolution.

I apologize if I'm leaving out any pertinent information in this-- I am a SolarWinds newbie and at the very beginning of the learning curve here. If there is anything I left out please let me know and I'll be happy to provide that information. Thanks in advance!!

Labels (1)
12 Replies

I feel your pain. The environment I stood up had a lot of the same modules you have. I ended up having my SE put me in contact with one of their Technical Engineers and they were very helpful.  As far as the 12K elements rule that is just the S/W best practice #. What does 2 licenses per server mean, is that 1 license for your primary Orion server and 1 license for an APE (Additional Polling Engine)?

FYI, we've had servers hit the 95% polling rate with no issues.

0 Kudos

So I work with the OP of this thread. The 2 license server means that we have 2 APE licenses on a single VM. You can install up to 3 licenses per a single Windows server to increase polling capacity (the 80% usage mark). So right now our server is at 60% polling usage which is under two licenses. So if it was a single license, we would technically be at 120%. what we have not been able to find and what the OP is tasked with finding is hardware requirements that match up to this APE multi-license capability. Memory usage is fine. CPU gets high on several cores, but isn't a consistent high. The primary issue we are running into is disk usage. We have a 100GB C partition and even though we installed all the Orion products to the application partition, the majority of all files are still on the C partition. I used WinDirStat to find out that there are almost 52GB of log files in the Orion log folder. Most of those are 52MB interface polling logs. Our C partition is at 98% usage right now. Deleting logs isn't going to solve the issue and I'm not sure if just adding space is the solution either. The polling engine data is below for reference.

Polling Completion

99.98
Elements  8951
Network Node Elements429
Volume Elements81
Interface Elements8441
Polling Rate59% of its maximum rate
UnDP Polling Rate0% of its maximum rate
Routing Polling Rate0% of its maximum rate
SAM Application Polling Rate2% of its maximum rate
Hardware Health Polling Rate0% of its maximum rate
SAM Windows Scheduled Tasks Polling Rate0% of its maximum rate
Wireless Polling Rate0% of its maximum rate
Total Job Weight3325
Number of HW Health Monitors7
Number of HW Health Sensors72
0 Kudos

I had some challenges with our polling because we are VERY heavy on SAM polling and light on NPM. The below query will provide better polling element info than what you are seeing on your admin page. This was provided by support and has been very useful

--SolarWinds query of polling data info

--UnDP

DECLARE @UnDP TABLE (EngineId INT, UnDP_ASsignedCustomPollers INT)

BEGIN

IF (SELECT COUNT(*) FROM MODULES WHERE Name='Network')>0

BEGIN

INSERT INTO @UnDP  (EngineId, UnDP_ASsignedCustomPollers)

  SELECT T2.Engineid AS Engineid, count(CustomPollerASsignmentID) AS UnDP_ASsignedCustomPollers FROM CustomPollerASsignment T1 WITH(NOLOCK)

  INNER JOIN Nodes T2 WITH(NOLOCK)

  ON T1.nodeid=T2.nodeid

  GROUP BY T2.Engineid

END

ELSE

INSERT INTO @UnDP  (EngineId, UnDP_ASsignedCustomPollers)

SELECT EngineId, 0 AS UnDP_ASsignedCustomPollers FROM Engines

END

--Wireless

DECLARE @Wireless TABLE (EngineId INT, Wireless_AccessPoINTs INT)

BEGIN

IF (SELECT COUNT(*) FROM MODULES WHERE Name='Network')>0

BEGIN

INSERT INTO @Wireless (EngineId, Wireless_AccessPoINTs)

  SELECT T2.Engineid AS EngineID, count(T1.Nodeid) AS Wireless_AccessPoINTs FROM Wireless_AccessPoINTs T1 WITH(NOLOCK)

  INNER JOIN Nodes T2 WITH(NOLOCK)

  ON T1.nodeid=T2.nodeid

  GROUP BY T2.Engineid

END

ELSE

INSERT INTO @Wireless (EngineId, Wireless_AccessPoINTs)

SELECT EngineId, 0 AS Wireless_AccessPoINTs FROM Engines

END

--VIM

DECLARE @VIM TABLE (EngineId INT, VirtualMachines INT)

BEGIN

IF (SELECT COUNT(*) FROM MODULES WHERE Name='Network')>0

BEGIN

INSERT INTO @VIM (EngineId, VirtualMachines)

  SELECT T2.Engineid AS Engineid, count(T1.HostID) AS VirtualMachines FROM VIM_VirtualMachines T1 WITH(NOLOCK)

  INNER JOIN Nodes T2 WITH(NOLOCK)

  ON T1.nodeid=T2.nodeid

  GROUP BY T2.Engineid

END

ELSE

INSERT INTO @VIM (EngineId, VirtualMachines)

SELECT EngineId, 0 AS VirtualMachines FROM Engines

END

--HWH

DECLARE @HWH TABLE (EngineId INT, HWH_Sensors INT)

BEGIN

IF (SELECT COUNT(*) FROM MODULES WHERE Name='Network' OR Name='SAM')>0

BEGIN

INSERT INTO @HWH (EngineId, HWH_Sensors)

  SELECT Engineid, count(*) AS HWH_Sensors FROM Nodes T1 WITH(NOLOCK)

  INNER JOIN APM_HardwareItem T2 ON T1.NodeID=T2.NodeID

  GROUP BY EngineID

END

ELSE

INSERT INTO @HWH (EngineId, HWH_Sensors)

SELECT EngineId, 0 AS HWH_Sensors FROM Engines

END

--SAM

DECLARE @SAM TABLE (EngineId INT, SAM_CompONents INT)

BEGIN

IF (SELECT COUNT(*) FROM MODULES WHERE Name='APM')>0

BEGIN

INSERT INTO @SAM (EngineId, SAM_CompONents)

  SELECT EngineId, COUNT(*) AS SAM_CompONents FROM APM_AlertsAndReportsData T1 INNER JOIN Nodes T2 WITH(NOLOCK) ON T1.NodeId=T2.NodeId GROUP BY EngineID

END

ELSE

INSERT INTO @SAM (EngineId, SAM_CompONents)

  SELECT EngineId, 0 AS SAM_CompONents FROM Engines

END

--IPAM

DECLARE @IPAM TABLE (EngineId INT, IPAM_Subnets INT)

BEGIN

IF (SELECT COUNT(*) FROM MODULES WHERE Name='IPAM')>0

BEGIN

INSERT INTO @IPAM (EngineId, IPAM_Subnets)

SELECT (SELECT TOP 1 EngineID FROM Engines WHERE ServerType='Primary') AS EngineId, COUNT(*) AS IPAM_Subnets FROM IPAM_Group

END

ELSE

INSERT INTO @IPAM (EngineId, IPAM_Subnets)

SELECT EngineId, 0 AS IPAM_Subnets FROM Engines

END

--NTA

DECLARE @NTA TABLE (EngineId INT, NTA_FlowsPerSec INT)

BEGIN

IF (SELECT COUNT(*) FROM MODULES WHERE Name='NTA')>0

BEGIN

INSERT INTO @NTA (EngineId, NTA_FlowsPerSec)

SELECT EngineID, StatisticsValue AS NTA_FlowsPerSec FROM NetFlowEnginesStatistics WHERE StatisticsName='FlowsPerSecONdForLAST24Hours'

END

ELSE

INSERT INTO @NTA (EngineId, NTA_FlowsPerSec)

SELECT EngineId, 0 AS NTA_FlowsPerSec FROM Engines

END

--UDT

DECLARE @UDT TABLE (EngineId INT, UDT_Ports INT)

BEGIN

IF (SELECT COUNT(*) FROM MODULES WHERE Name='DeviceTracker')>0

BEGIN

INSERT INTO @UDT (EngineId, UDT_Ports)

SELECT EngineID, Count(*) AS UDT_Ports FROM Nodes T1 WITH(NOLOCK)

INNER JOIN UDT_Port T2 ON T1.NodeID=T2.NodeID

GROUP BY Engineid

END

ELSE

INSERT INTO @UDT (EngineId, UDT_Ports)

SELECT EngineId, 0 AS UDT_Ports FROM Engines

END

--VNQM

DECLARE @VNQM TABLE (EngineId INT, VNQM_OperatiONs INT)

BEGIN

IF (SELECT COUNT(*) FROM MODULES WHERE Name='VNQM')>0

BEGIN

INSERT INTO @VNQM (EngineId, VNQM_OperatiONs)

SELECT EngineID, Count(*) AS VNQM_OperatiONs FROM Nodes T1 WITH(NOLOCK)

INNER JOIN VOIPOperatiONInstances T2 ON T1.NodeID=T2.SourceNodeID or T1.NodeID=T2.TargetNodeID

GROUP BY Engineid

END

ELSE

INSERT INTO @VNQM (EngineId, VNQM_OperatiONs)

SELECT EngineId, 0 AS VNQM_OperatiONs FROM Engines

END

--NCM

DECLARE @NCM TABLE (EngineId INT, NCM_CONfigDownloadsPerDay INT)

BEGIN

IF (SELECT COUNT(*) FROM MODULES WHERE Name='NCM')>0

BEGIN

INSERT INTO @NCM (EngineId, NCM_CONfigDownloadsPerDay)

SELECT EngineID, Count(*) AS NCM_CONfigDownloadsPerDay FROM Nodes T1 WITH(NOLOCK)

INNER JOIN NCM_NodeProperties T2 ON T1.NodeID=T2.CoreNodeID

INNER JOIN NCM_TransferQueue T3 ON T2.NodeID=T3.NodeID

WHERE datetime>DATEADD(Day, -1, GETDATE())

GROUP BY Engineid

END

ELSE

INSERT INTO @NCM (EngineId, NCM_CONfigDownloadsPerDay)

SELECT EngineId, 0 AS NCM_CONfigDownloadsPerDay FROM Engines

END

--WPM

DECLARE @WPM TABLE (EngineId INT, WPM_TransactiONs INT)

BEGIN

IF (SELECT COUNT(*) FROM MODULES WHERE Name='TransactiONs')>0

BEGIN

INSERT INTO @WPM (EngineId, WPM_TransactiONs)

SELECT PollingEngineId as EngineID, Count(*) AS WPM_TransactiONs FROM SEUM_Agents T2

INNER JOIN SEUM_TransactiONs T3 ON T2.Agentid=T3.agentid

GROUP BY PollingEngineId

END

ELSE

INSERT INTO @WPM (EngineId, WPM_TransactiONs)

SELECT EngineId, 0 AS WPM_TransactiONs FROM Engines

END

--Traps

DECLARE @Traps TABLE (EngineId INT, TrapsPerDay INT)

BEGIN

IF (SELECT COUNT(*) FROM MODULES WHERE Name='Network')>0

BEGIN

INSERT INTO @Traps (EngineId, TrapsPerDay)

SELECT EngineID, Count(*) AS TrapsPerDay FROM Traps

WHERE DateTime>DATEADD(Day, -1, GETDATE())

GROUP BY Engineid

END

ELSE

INSERT INTO @Traps (EngineId, TrapsPerDay)

SELECT EngineId, 0 AS TrapsPerDay FROM Engines

END

--Syslog

DECLARE @Syslog TABLE (EngineId INT, SyslogPerDay INT)

BEGIN

IF (SELECT COUNT(*) FROM MODULES WHERE Name='Network')>0

BEGIN

INSERT INTO @Syslog (EngineId, SyslogPerDay)

SELECT EngineID, Count(*) AS SyslogPerDay FROM Syslog

WHERE DateTime>DATEADD(Day, -1, GETDATE())

GROUP BY Engineid

END

ELSE

INSERT INTO @Syslog (EngineId, SyslogPerDay)

SELECT EngineId, 0 AS SyslogPerDay FROM Engines

END

--Final SELECT Statement

SELECT Servername,  Nodes,  Interfaces, Volumes,  T2.SAM_Components, T14.HWH_Sensors, T6.IPAM_Subnets, T8.UDT_Ports, T7.NTA_FlowsPerSec, T9.VNQM_Operations, T10.NCM_ConfigDownloadsPerDay, T11.WPM_Transactions, T3.UnDP_ASsignedCustomPollers, T4.Wireless_AccessPoints, T5.VirtualMachines, T12.TrapsPerDay, T13.SyslogPerDay FROM Engines T1 WITH(NOLOCK)

LEFT JOIN @SAM T2

ON T1.EngineID=T2.EngineId

LEFT JOIN @UnDP T3

ON T1.EngineID=T3.EngineId

LEFT JOIN @Wireless T4

ON T1.EngineID=T4.EngineId

LEFT JOIN @VIM T5

ON T1.Engineid=T5.EngineId

LEFT JOIN @IPAM T6

ON T1.EngineID=T6.EngineId

LEFT JOIN @NTA T7

ON T1.EngineId=T7.EngineId

LEFT JOIN @UDT T8

ON T1.EngineId=T8.EngineId

LEFT JOIN @VNQM T9

ON T1.EngineId=T9.EngineId

LEFT JOIN @NCM T10

ON T1.EngineId=T10.EngineId

LEFT JOIN @WPM T11

ON T1.EngineId=T11.EngineId

LEFT JOIN @Traps T12

ON T1.Engineid=T12.Engineid

LEFT JOIN @Syslog T13

ON T1.EngineId=T13.EngineId

LEFT JOIN @HWH T14

ON T1.EngineID=T14.EngineId

This is super-cool script, thank you so much for sharing

---
Thwack Home Page | Personal Blog
0 Kudos

So I managed to figure it out. Had to remove queries for modules I'm not using.

               

ServernameNodesInterfacesVolumesSAM_ComponentsHWH_SensorsIPAM_SubnetsUDT_PortsNTA_FlowsPerSecNCM_ConfigDownloadsPerDayUnDP_ASsignedCustomPollersWireless_AccessPointsVirtualMachinesTrapsPerDaySyslogPerDay
AppServer9866927511591586500402746190442
APE-MainSite429844181534721345217479145
APE-E721446717381788101449024
APE-SEC4158441732849580
APE-SEJ3057891718629145
0 Kudos

Additionally, I'm not sure how these numbers correlate against an APE server vs APE licensing. The idea is that multiple APE licenses can allow a more robust server to do more (which we clearly are) but I do not know what those limits are. Theoretically, it would be double, but more realistically its probably maybe 50% more and not 100% more.

0 Kudos

Clearly I need to clean up UDT some. But if anyone here has used UDT, it is one of least user friendly interfaces of all the modules I've used so far as far as bulk management. In reality the Interfaces and UDT_Ports numbers should be relatively close and as you can see they are almost doubled. There are some possible, and correct, explanations for that as we are undergoing a massive network upgrade and UDT was installed far along after everything else and not all the switches have been fully selected for NPM polling as they aren't operational yet; connected, but waiting for deployment.

0 Kudos

Wow that's one heck of a query. I haven't messed with queries all that much so do I just copy the entire thing verbatim into the database tool? Not sure if I need to break it up or not.

0 Kudos

Just cheaping in... I generally aim at 100% polling rate, with 99.9% being acceptable and anything below requires furher investigation into why we are not at 100%. 95% rate is way below my (personal) acceptable criteria

---
Thwack Home Page | Personal Blog

Polling rate not polling completion.Polling rate is the weight of ur polling while polling completion how successful ur polls are. Ur right about the polling completion, anything 100% for us was bad.

0 Kudos

good spot.. yes, of course, polling completion I meant. Polling rate would depend on performance and completion. If performance is good and completion is 100%, then rate is ok even at 95% - totally agree

---
Thwack Home Page | Personal Blog
0 Kudos
Level 16

hi

We have 3 VM poller 2 CPU 2.8 16GB RAM working just fine.

NPM 11.5.3

NCM 7.4.2

what are your polling settings?

/SJA

0 Kudos