We want to know if there is anyone have implemented REST API integration for OKTA in SolarWinds for Reporting OKTA health and metrics.
Thanks, BK
We want to know if there is anyone have implemented REST API integration for OKTA in SolarWinds for Reporting OKTA health and metrics.
Thanks, BK
We're building custom alert actions that will send properties and values to our ServiceNow Event Management instance to create/close Events automatically for us. I have a PowerShell script that we will run as Trigger/Reset Actions for each alert. The script accepts a bunch of properties and values and sends them on. To do this though we have to build a list of Alert Variables (Macros) for each Object Type alerted on in SolarWinds. So we need a list of alert variables for Node alerts, SAM Component Alerts, SAM Application Alerts, Interface Alerts, etc...
One unfortunate feature of the new Alert Macro syntax is that based on the object type being alerted on, the alert macro syntax is different. For example, if the alert is for SAM Components and we want to include a few Node properties , we have to format the Node property macros like this: ${N=SwisEntity;M=Application.Node.Caption}. One nice thing about the old Macros is that we could just do ${Node.Caption} and that Macro would work for any object type that had some kind of relationship with Nodes. We could use that same variable in Volume, Interface, SAM, and VIM alerts. Heck, I think you could even use that variable in a Node alert... There really needs to be a more universal way to format alert variables. The new syntax is just wayyyy too specific.
It is rather tedious to have to go into an alert for each object type, go to the Trigger Action section, choose Insert Variable in the Message box, and tediously go through the Object picker to find all of the variables we want. Then we have to copy/paste those into our Notepad++ file and format the variables for our arguments. I was hoping to build some kind of variable builder script using the Metadata.Entity and Metadata.Relationship "tables". Unfortunately they don't seem to have all Relationships matched for each Entity type. For example, the Orion.APM.Component entity has 19 different relationships when you expand it in the SWQL Studio Entity tree. However, in the Metadata.Relationship table it only has 14 relationships. One of the 5 it is missing is its most important one which is the Orion.APM.Application relationship which allows me to navigate through to the Orion.Nodes entity.
Am I missing something or can someone let me know if there is a better way to go about this? I'd just like to be able to create a script where we can put in the object type we are building an alert for and the properties we want to have alert macros built of. So we could put in something like Orion.APM.Application.Name, Orion.Nodes.Caption, Orion.Nodes.CustomProperties.SiteCode, etc... Then, it would go lookup the relationships that Orion.APM.Component has with the entity tables those properties live in and, if they are found, spit out the properly formatted Alert Macros ready to go.
I can add the nodes and interfaces using the Python script. I used the DiscoverInterfaceOnNode to add the new interfaces and specify the specific interfaces as well. Up to this point everything is good.
The issue is it will add that type of interfaces(E.G Gig,eth etc) either that is UP or Down. My goal is to add only UP interfaces. Can someone please put me in a right direction or share any example to help me fix this.
Hello everyone,
I'm not so familiar with SQL, so I have a problem with writing SWQL query with following conditions:
There are three types of nodes:
1. Have an interface with name e0/0.1
2. Have an interface with name e0/0.2
3. Have an interface with name e0/1.1
Depend on presence of any of those interfaces I have to create bandwidth utilization query, that will contain:
1. If node has an interface e0/0.1 - query bandwidth utilization for interfaces e0/0.1, e0/2, e0/3
2. If node has an interface e0/0.2 - query bandwidth utilization for interfaces e0/0.2, e0/3, e0/4
3. If node has an interface e0/1.1 - query bandwidth utilization for interfaces e0/1.1, e0/0, e0/5
Could anybody help me to write such query?
The new EOC makes heavy use of SWQL to report on multiple Orion instances at once, but I've stumbled over what appears to be a major difference (of which I'm sure the issue is on the EOC side and have posted in their forum:
Using just a simple SWQL query, even against a single Orion from the EOC, it appears that there is an error where two values with the same column name cannot be selected, even if they are renamed:
select NodeID, v.Node.Caption, VolumeID, v.Caption, VolumeType, VolumeSize from Orion.Volumes v
Any thoughts on what could cause this difference in behavior?
Hello,
Can you help me with this question, please?
I have several swql queries that were using the ImageHandler.ashx, it appears this no longer exists. Is there a new "thing" we can use to show icons dynamically in SWQL? As an example the below SWQL query
CONCAT('/Orion/ImageHandler.ashx?Server=1&Image=%2FNetPerfMon%2Fimages%2FEvent-',EventTypes.EventType,'.gif') as [_IconFor_Icon],
I am trying to create dashboards filled with groups built out of custom properties. The problem I am running into is I have this custom property lets call it "DeviceFunction" and it starts with either AAA, AAB, AAC or AAD. I want to exclude the nodes with custom properties beginning with AAA. However when I try to use the "is not" feature it does not work. Regex is not supported. So how do I exclude those with custom properties that all represent the same application but at different locals so I want them on different dashboards hence the difference in the beginning of the custom property.
Example:
"DeviceFunction" DO NOT MATCH "AAA"
"Device Function" Contains "Lync"
In another group I want ONLY those that begin with AAA, which is supported and contain Lync. I hope this makes sense.
can we run Sonar network discovery at a time in two different tabs?is it going to cause any problem on performance of operation?
I have used PowerOrion in the past, I have created a GUI to add a node to SolarWinds and add Custom Properties and it runs great.
I am adding the PowerShell GUI to a shared server for others on my team to use.
I have downloaded PowerOrion from PowerOrion A Module for PowerShell · solarwinds/OrionSDK Wiki · GitHub
and have added to my PS Module Path and ran Import-Module PowerOrion.
But, when I run Get-Command -Module PowerOrion, I do not see the Connect-Swis command, and when I run Connect-Swis I get this message below.
On my Admin server where I am able to successfully run the GUI, running the Get-Command, I do see the Connect-SWIS command.
Am I missing something?
Chris.
Is there a way to modify the network sonar discovery scope (add ip addresses for instance) leveraging the api? directly via sql?
Hello Community,
Does anyone know how to add a node to a container without using a dynamic query in Python? I got the dynamic query to work, but wanted to see if there is a way to add the nodes to the groups directly without a dynamic query.
Thank you,
JAF
We've created custom MIB pollers and I'd like to know how to assign them (add them) to a new node via any API/SDK.
Possible? I only see how to add general cpu/memory pollers to a node, but not MIB/UnDP pollers.
Thanks
Before upgrade, the Python Orion SDK swis.update was working fine. After upgrade, the Python Orion SDK swis.update broke with the error HTTP error 400: "The given key was not present in the dictionary”
Full technical details
Before upgrade: IPAM 4.5.2, SAM 6.4.0, VMAN 8.0.0, NPM 12.1,
After upgrade: IPAM 4.6.0, SAM 6.5.0, VMAN 8.1.0, NPM 12.2
The Python code
swis = orionsdk.SwisClient(solarwinds_url, solarwinds_user, solarwinds_pass)
ipFree = swis.query(
"SELECT TOP 1 I.uri, I.DisplayName FROM IPAM.IPNode I WHERE Status=2 " +
" AND I.DNSBackward is NULL " +
" AND I.Subnet.DisplayName = '" + solarwinds_network + "'")
ipAddr=ipFree['results'][0]['DisplayName']
ipUri=ipFree['results'][0]['uri']
swis.update(ipUri , Status=1, DNSBackward=customer_hostname)
Did a HTTP request and reponse capture
POST /SolarWinds/InformationService/v3/Json/swis://HE1-SWAPP-01.headquarters.healthedge.com/Orion/IPAM.IPNode/IpNodeId=9316
Request: {"Status": 1, "DNSBackward": "mynewdomain.url.com"}
Response: 'HTTP/1.1 400 Bad Request "The given key was not present in the dictionary”
There is an open Solarwinds ticket for this issue 35188
Message was edited by: Jirawat Uttayaya
We have a Python script that does a full discovery, including Interface filters, with AutoImport=True and it works like a champ. However, we're trying to figure out how to have a two part approach:
1 - Discovery with AutoImport=False
2 - Import devices that have been discovered
There aren't a lot of references out there that provide detailed examples of using 'ImportDiscoveryResults'. Here are some that I've been looking at:
SolarWinds Information Service v3.0 Schema Documentation
orionsdk-python/swisclient.py at master · solarwinds/orionsdk-python · GitHub
From that one:
definvoke(self, entity, verb, *args): | |
returnself._req( | |
"POST", | |
"Invoke/{}/{}".format(entity, verb), args).json() |
So it seems like I should have something like this:
swis.invoke('Orion.Discovery', 'ImportDiscoveryResults', ??)
Can I provide just the ProfileID that I already have from the previous Discovery? I've seen references about specifying Nodes, but I would like to only have to provide the ProfileID if possible.
Any help would be greatly appreciated!
In Swql, the object Orion.NodesCustomProperties appears to be tied to managed nodes. We added 3 custom properties in IPAM. Where do I find the object that contains these custom fields?
i know how to use curl to do a query to retrieve records but how do i then update said records using curl?
i've searched the forums and havent found any posts on this.
Hello,
I was directed here by support claiming "we do not provide support for any issue related to the API/SDK. The forum for this is the thwack community." .
We have been using the API for a number of years for simple tasks like adding and removing nodes, interfaces, volumes etc.
The key thing we do is sync information from our asset management system into the Nodes Custom Properties, and recently this stopped working.
Essentially the asset management system makes an API call to send some data.
This comes back with a success - or at least no error message.
Orion receives this and even updates the log on the node page saying the field and value were set.
However the custom property remains blank.
This makes me think there is an issue either with the API, or the NPM/Core whilst processing it.
I can't share the screenshot here without blacking out most of the private details - but our case number is #00034856 which does contain a full screenshot.
Our versions are "Orion Platform 2017.3.3 SP3, NPM 12.2"
Any help would be much appreciated!
Oli.
Hello everyone!
I am trying to add a specific file system to monitoring with SWIS API. So far I've been using the discovery method successfully, but there are situations where I need to add additional volumes after the node has been already discovered and added to SolarWinds.
I have tried to achieve this with "swis.create", but I'm not sure if it is supposed to work this way, since I would have to generate VolumeID & Volume Index and to set IDENTITY INSERT to ON for the table. I couldn't find any specific "verb" defined for Orion.Volumes for such an action. Does anyone know if this is the way to do it, or is there another way that I'm missing?
Example below:
def create_volumes(self,volume,voldesc,volidx,voltype,volid,nodeid):
""" provided a list of volumes and the nodeid from Orion.Nodes it adds them to monitoring """
props = {
'VolumeIndex': volidx,
'VolumeDescription': voldesc,
'VolumeID': volid,
'NodeID': nodeid,
'VolumeTypeID': voltype,
'Caption': volume
}
results = self.swis.create('Orion.Volumes', **props)
try:
return results
except IndexError:
return False
Returns:
Traceback (most recent call last):
File "./add_missing_hosts_new.py", line 366, in <module>
result = c.create_volumes(volume,voldesc,volidx,voltype,volid,nodeid)
File "/home/apop-sa/automations/monitoring/swtools/swtools/client.py", line 158, in create_volumes
results = self.swis.create('Orion.Volumes', **props)
File "/usr/local/lib/python2.7/dist-packages/orionsdk/swisclient.py", line 34, in create
"Create/" + entity, properties).json()
File "/usr/local/lib/python2.7/dist-packages/orionsdk/swisclient.py", line 59, in _req
resp.raise_for_status()
File "/usr/local/lib/python2.7/dist-packages/requests/models.py", line 935, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 400 Client Error: Cannot insert explicit value for identity column in table 'Volumes' when IDENTITY_INSERT is set to OFF. for url:
Thank you!!!
Stupid question, how do I install the python-sdk on an offline solarwinds server?
I may be missing something simple but I don't see the libraries in github...
P.S. you may have guessed it already, I'm new to python...