Having Solarwinds gather data from third-party service

Hello all,

I am part of a company makes network timing hardware (used to synchronize the time across all devices in the network). We would like to create an integration with the Solarwinds Network Performance Monitor(NPM) service so that timing metrics within our products could be used to enrich the various visualizations (network visualization, device summary, etc..) on the Solarwinds app itself. I have a few questions about the feasibility of this integration:

  1. Is it possible to have the Solarwinds service query an external json REST API in order to grab metrics/data around specific IP Addresses/devices?
    1. I have looked around and I see that Solarwinds products expose API access via the Orion SDK  so potentially my company's products would have to push data into NPM via the SDK rather than Solarwinds pulling data from an external API?
  2. If #1 is possible then is it possible to enrich the different dashboards/visualizations (e.g., Netpathᵀᴹ) with this timing synchronization information?
    1. In the demos I have seen of Netpathᵀᴹ, it shows the latency between nodes so - if possible - I would like to also show the time synchronization information between nodes in a similar way. This would be useful to users so they could see how the time delay is across different paths along their network.
    2. Similarly, when viewing the network device summary, it would be nice if that could be enriched to show the data coming from our products.
  3. If #1 is possible then is it possible to have alerts made off of the data queried/stored from the third-party service(s)?
  • So the kind of stuff you are talking about would be pretty well impossible for someone to add to the system without getting SolarWinds devs on board to incorporate it natively in the platform.  Without their involvement whatever you cook up will be kind of a clunky add on that's going to be a fair bit of work for the customers to take advantage of.

    There's not a standard SNMP OID for current system time from a device, some vendors have a proprietary one but that means it would be more work to get it added to Orion since you'll need to hunt down the correct OIDs for each vendor.  So going beyond that Orion has API pollers, although I would probably run this as a SAM template with custom scripts so you can get more fancy with how you manipulate the outputs and statuses and such.  It's fairly easy for users to download a SAM template, so that is kind of a sane way for you to distribute whatever you come up with.

    For my own purposes I've built tons of integrations to all kinds of data that I displayed on various dashboards and details views so it's doable, but I'd wonder if there was actually a decent ROI for all that on your end, or if there was actually enough customer interest to justify the dev work. 

  • I'll take a more positive stand than   on this one. Seems fine, but you'd need to have a think about how to define the problem/s

    1) Yeah totally fine, either SAM or API pollers or an integration using the SDK, any of these is fine
       a) You can push but you'd normally pull. You tend to push properties and pull data. But you could alert/monitor/report/dashboard on properties just fine.

    2) Netpath would be hard, but otherwise yeah no problem, just get the data in the DB somewhere and query it
       a) I wouldnt use netpath for this, but you could use an orion map with API pollers for example

       b) yeah sure, you'd be adding tables mostly

    3) Yeah, just alert on whatever object the data is against. Only problem there is when it comes to custom SQL and you might need to establish some sort of quorum system to dictate drift. I imagine you guys have thoughts on this given it's your software though.

    Sync server A - 12:00:00
    Misc x - 12:00:00
    Misc y - 12:00:01
    Sync server B - 12:00:01
    Misc z: 12:00:01

    Given that setup you've got a second of drift, but you could define who's "bad" in a few different ways

  • Thanks for the reply, I see that the Solarwinds products support Prometheus integration (which is the database my company's service uses to store its metrics) via an Observability agent. I assume that the Network performance Monitor is able to grab the metrics through this Observability Agent? If not then I will probably go for the SAM template with an API poller.

  • An observability agent would be to push data to SWO not NPM, but yeah you could get data out of a Prometheus instance.

    (though consider - if you've already got the metrics in prometheus you could just send those upstream, or copy prometheus's datasource)

  • Hmm I am not sure how the connection between SWO & NPM is formed as I am still trying to get ahold of a trial version. Is SWO a separate service altogether that is needed in conjunction with NPM to have the third party metrics be accessible to NPM?

    Also when you say "you could just send those upstream" are you saying I can have Prometheus forward the metrics to some location that is accessible to NPM?

  • SWO is a separate product (think: Solarwinds Platform for cloud-native stuff) (and is not required to access 3rd party apis)
    You can pass data through first party or 3rd party integrations between SWO and Solarwinds Platform stuff (NPM)
    The 1st party stuff I've not setup personally, but the keyword to search for is Platform Connect. I dont think it's too relevant to what you're needing

    By upstream I meant to whoever-requested-timesync-data primarily, but yeah it's probably possible to pass it to NPM too

    I'd imagine it as one of two main types of solution:

    1) Push data into solarwinds, onto a node custom property, display custom property on map/ui element/report
    2) Pull data via an API poller assigned to each node you care about on map/ui element/report

    Either probably works, and in both cases you'd want to set up some "is my integration working properly" healthchecks

  • One other option would be to consider SWO NICO (Network, Infrastructure, & Cloud Observability).  This is our SaaS offering that provides Prometheus integrations and NPM functionality.   

  • I ran to the end of my SWO product knowledge there haha

  • Is this SWO NICO something that I can test out in a free trial? I ask as the ultimate goal would be to make an integration guide to customers of my company's products on how to make our product's metrics available to their existing Solarwinds infrastructure (We assume the metrics would be most useful in the context of the NPM service which is why I focused on it). So to test this integration - If my understanding of the SWO services is correct - I would (If I am not going with NICO):

    1. Download the NPM free trial
      1. Generate an API key to use with SWO Agent (unsure if this can be done with a free trial)
    2. Download the SWO Agent & run it using the API key (unsure if this can be done with a free trial as well)
    3. Enable the Prometheus integration on SWO
    4. Given NPM can reach the SWO Agent, I should have access to the metrics in Prometheus?
  • My ears perked up with Prometheus. So with Prom pulling in the data, I too would have thought would want  solarwinds to query the prom DB.

    Otherwise the "why?" question seems to be pretty apparent here.