2 Replies Latest reply on Apr 3, 2018 11:49 PM by mesverrum

    Testing SNMP on multiple Nodes




      I have to change polling engine for around 200 nodes, and for each node i have to manually test SNMP and then change the polling engine.

      Is there a way via which i could test that SNMP is enabled for all those nodes and that polling engine is able to receive the same in a go.

      Doing is manually for each and every device on-by-one is a time-consuming task and i am in a need to have a better approach for it.




        • Re: Testing SNMP on multiple Nodes

          In Orion you can go to Settings > Manage Nodes.


          From here you can select the nodes that need to be modified and go to edit Properties, from there you can change the Polling Engine


          Once that's done you can run the query on the link below to find what servers are not responding to SNMP and fix those with issues.


          Identify monitored nodes in Orion that are no longer responding to SNMP credentials - SolarWinds Worldwide, LLC. Help an…



            • Re: Testing SNMP on multiple Nodes

              You could also run a discovery against the nodes with all your possible snmp credentials.  The working communities show up in the discovered nodes tables in the database and you can take a report of that and know which credentials work against which nodes. 


              Might have to set up the same discovery from each polling engine if you don't have any clue which pollers can reach which nodes.


              If you get really fancy with it you could actually just script up the whole process of changing all the communities and switching the polling engines based on the discoveries, but it's somewhat complicated to do if you aren't familiar with using the API.  This is the posh script I use to sync up ICMP nodes with the engines that their discoveries used so I could import them, it would need some tweaks to do the engineid and the snmp community but it could get you about 85% of the way there.




              <#------------- CONNECT TO SWIS -------------#>

              # load the snappin if it's not already loaded (step 1)

              if (!(Get-PSSnapin | Where-Object { $_.Name -eq "SwisSnapin" })) {

                  Add-PSSnapin "SwisSnapin"




              #define target host and credentials


              $hostname = 'localhost'

              #$user = "admin"

              #$password = "password"

              # create a connection to the SolarWinds API

              #$swis = connect-swis -host $hostname -username $user -password $password -ignoresslerrors

              $swis = Connect-Swis -Hostname $hostname -Trusted



              <#------------- ACTUAL SCRIPT -------------#>


              $query = @"

              SELECT distinct

              n.uri, n.caption, dn.IPAddress, dp.Name, e.ServerName as [DiscoveryEngine], e.engineid, n.engine.ServerName as [CurrentPollingEngine]

              , dn.SnmpVersion, dn.SubType, c.Name as [DisoveryCredential], dn.Hostname, dn.DNS, dn.Vendor, dn.MachineType, dn.SysName


              FROM Orion.DiscoveryProfiles dp

              join Orion.DiscoveredNodes dn on dn.ProfileID=dp.ProfileID

              join Orion.Nodes n on n.IP=dn.IPAddress

              join Orion.Engines e on e.EngineID=dp.EngineID

              join orion.Credential c on c.ID=dn.CredentialID


              where n.ObjectSubType='icmp' and dn.vendor is not null


              $Nodes = Get-SwisData $swis $query


              # iterate through this list and update each group

              foreach($Node in $Nodes) 


                  # write out which group we're working with

                  "Changing $($Node.Caption) from $Node.CurrentPollingEngine to $Node.DiscoveryEngine ..."


                  Set-SwisObject -SwisConnection $swis -Uri $Node.uri -properties @{EngineID = $Node.engineid}