Closed

Closed due to inactivity. Received 30 votes with last vote on 27 Nov 2019.

Dependencies EXTREMELY Inefficient

The current method of building dependencies is EXTREMELY inefficient and not at all user friendly.  We just migrated away from WhatsUp Gold to Solarwinds and this is one area that Solarwinds simply got wrong.  Solarwinds is much better that WhatsUp Gold in most aspects, but not this one.  Building dependencies in Solarwinds simply sucks!

I have 3 major issues here:

1. Auto dependencies simply don't work.

2. Using groups is the most efficient way to build dependencies, but I have organized all of my sites into groups, as I assume most users would that have to manage multiple sites.  You cannot use these groups for your dependencies because you would have to leave out the primary router at each site because the parent cannot be in the same group as the "child" group.  Users would have to create separate groups just for dependencies, but then these groups would show up in all your dashboards, making for more clutter and more confusion when viewing dashboards, especially for helpdesk level personnel.

3. Having to build manual dependencies per child is simply idiotic.  If we could build dependencies per parent and select multiple children, this would be WAY more efficient and actually makes WAY more sense in how dependencies actually work.  For example, most organizations would have one primary router at a site with a bunch of switches, servers, access points, firewalls, etc behind this router.  If this one router is offline then all other devices at the site would be unreachable.  Why can't we build a dependency selecting the one parent and then select all children under this parent?

  • This is a cumbersome feature.  Takes time to clean up and validate. 

  • Thank you very much for sharing your script.  I had to make a few adjustments to make it work for me, but I have already used it to import large lists of devices at multiple sites and it works great!

    I am using the NodeID and the Caption from the Nodes table since some of my devices did not pull an SNMP system name and I manually updated the names of these devices, which Orion added to the Caption column.  I pulled my list of Caption names and NodeIDs using the following query:

         SELECT NodeID,Caption FROM [dbo].[Nodes]

    I then exported this to csv and reformatted like the example below:

         pastedImage_0.png

    I tweaked your script to the following (where '{Orion_Server}' is the hostname of your Orion server) and the import is working perfectly:

    Add-PSSnapin SwisSnapin

    $Username = 'admin'

    $SecurePassword = Read-Host "Enter Admin Password"  -AsSecureString

    $BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($SecurePassword)

    $Password = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)

    $OrionServer = '{Orion_Server}'

    $Swis = Connect-Swis $OrionServer -UserName $Username -Password $Password

    $Csv = Import-Csv "C:\swscripts\Dependencies.csv"

    foreach ($Row In $Csv)

        {

            $Name = $Row.Name

            Write-host $Name

            $ParentURI = "swis://{Orion_Server}./Orion/Orion.Nodes/NodeID="+$Row.ParentID

            $ChildURI = "swis://{Orion_Server}./Orion/Orion.Nodes/NodeID="+$Row.ChildID

            New-SwisObject $swis Orion.Dependencies @{Name="$Name";ParentUri=$ParentURI;ParentEntityType='Orion.Nodes';ParentNetObjectID=$Row.ParentID;ChildUri=$ChildURI;ChildEntityType='Orion.Nodes';ChildNetObjectID=$Row.ChildID}

        }

    Write-host 'Complete'

  • Me too. But I haven't come up with a good way to suggest Orion should figure it out. I understand it, so I scripted it. I clean up the data the way I like it, and import. I typically only do this with new buildings for network gear or for new servers when they come in larger groups. If you use it, you can tweak what you need to get it done, but feel free to ask me questions.

    Make a csv with the heading like this, ParentName and Childname.
    pastedImage_0.png

    The PowerShell script below will import it for you  with however many row under the headings you have. You will need the SDK installed to use it.

    Add-PSSnapin SwisSnapin

    $Username = Read-Host "Enter Username"

    $SecurePassword = Read-Host "Enter Password"  -AsSecureString

    $BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($SecurePassword)

    $Password = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)

    $OrionServer = Read-Host "Enter Orion ServerName"

    $Swis = Connect-Swis $OrionServer -UserName $Username -Password $Password

    # Edit this to the path of your csv

    $Csv = Import-Csv "C:\scripts\CreateBulkDependencies\Dependencies.csv"

    foreach ($Row In $Csv)

        {

            $Name = $Row.ParentName+" to "+$Row.ChildName

            Write-host $Name

            $FindParentURIQuery = "SELECT URI FROM Orion.Nodes Where SysName like '%"+$Row.ParentName+"%'"

            $FindChildURIQuery = "SELECT URI FROM Orion.Nodes Where SysName like '%"+$Row.ChildName+"%'"

            #Expects that your name in the CSV will only match 1 node

            #If you are worried, use the NodeID not a name in the script

            $ParentURI = Get-SwisData -SwisConnection $swis -Query $FindParentURIQuery

            $ChildURI = Get-SwisData -SwisConnection $swis -Query $FindChildURIQuery

            #Based on a tdanner example

            New-SwisObject $swis Orion.Dependencies @{Name="$Name";ParentUri='$ParentURI';ChildUri='$ChildURI'}

        }

    Write-host 'Complete'

  • I have trouble with remote site dependencies on the other side of layer 3.  I have to do all of those manually.  We have tons of remote sites.  I have used groups for the children on remote sites in some cases, but not all yet.

    I was recently asked if we could make our BGP routes children of routers.  The idea was to not show routes down on the upstream router if the router on the other side was down. There doesn't appear to be a way to do that. 

    There are a ton of auto dependencies created, but it would be nice if it was more thorough across layer 3.  But that may always be a problem.

  • That sounds like an RTFM solution in the making.

    But instead of sending you that direction, what research have you done that might explain why this behavior was chosen by SW?

  • I absolutely would love easy group dependencies. I'm new to SolarWinds, so this may be a user problem, but I also can't figure out why interfaces can be parent but not child dependencies, or why you can't select multiple children for a parent in one go.

  • I have groups that are Dependant upon certain IP Addresses being alive (Read Routers) with the groups being the subnets provided by those Routers.

  • You've hit on one of my frustrations.

    Auto-dependencies DO work for me, but not 100% of the time.  Maybe only 80% of the time are they good.  In some cases they've made the router or switches Dependents of a UPS.  (Which, in a way, they ARE--but not in the way I'm interested in.)  Like others, I've requested information about how Auto-dependencies are created/discovered.  And not received it so far.

    Your item #2 doesn't seem to create the clutter for me that you describe.  I don't display by Group anywhere on NPM's main poller page, and I don't see the clutter.  Concerning removing the router from Child Groups, that seems easy and intuitive.  Yes, it's different than what you previously used, but different vendors accomplish things in different ways.  For me, it's not an issue as long as I can reduce alerts to Parents-only.

    Regarding number #3, I agree that your work flow is more intuitive than SW's.  I've learned to do it SW's way.  And once that's a habit, the difference between the two methods seems less important to me--more of "to-MAY-toe versus tah-MAH-toe"--and I can work with either.