Quantcast
Channel: THWACK: All Content - Orion SDK
Viewing all 2677 articles
Browse latest View live

Scripting language choice

$
0
0

Hi guys,

 

I'm about to start using the SDK to have an automated node import from a custom device manager we have.

For that purpose i'd like to get some feedback on the available scripting languages.

 

Would anyone recommend using one over another ?

 

Many thanks,

 

Luc Cousin


Create Users w/ Limited views / navigation

$
0
0

Anyone out in the REST API world create users via the API? I can see there is a Method "Create User" in Orion.Accounts. ANd I can find the URI for this method/verb but before I go down this rabbit hole wanted to see if anyone else is or has been doing this.

 

This will be NON-AD accounts and will need to restrict the accounts content based on Node level custom properties.

How can I add nodes from two separate NPM servers to one NCM server

$
0
0

...when I'm relitively certain that the NodeIDs WILL conflict / possibly be duplicated ?

 

Any thoughts / help on this appreciated!

Can't get device details to be polled immediately after adding node

$
0
0

Hello there!

 

This is my very first post in this community, so please be patient with me.

 

We have the NPM up and running and try to add nodes using the SDK. With curl in a shell script adding the node and interfaces just works fine.

 

What I can't get to work is the node details to be polled. I add the node with an empty caption and either it stays empty or sometimes the IP gets filled in as the displayed name.

 

I add a couple of pollers (not quite sure which ones I need for Cisco routers, an 1812 for example) and send a PollNow to the newly created node using this code:

 

#

# Add Pollers for the newly added device.

#

CREATE_POLLER_URL="https://$ORION_SERVER:$PORT/SolarWinds/InformationService/v3/Json/Create/Orion.Pollers"

for POLLER in "N.Uptime.SNMP.Generic" "N.Details.SNMP.Generic" "N.Topology.Snmp.Layer3" "N.Status.ICMP.Native" "N.ResponseTime.ICMP.Native"

do

 

        JSON_STRING="{\"NetObject\":\"N:$NODE_ID\", \"NetObjectType\":\"N\", \"NetObjectID\":\"$NODE_ID\", \"PollerType\":\"$POLLER\"}"

        CMD="curl -s -S -k -X POST -H 'Content-Type: application/json' $CREDENTIALS -d '$JSON_STRING' $CREATE_POLLER_URL"

        POLLER_RESULT=`eval $CMD`

        echo "Registered Poller $POLLER (Result: $POLLER_RESULT) for Node \"$NODE_ID\""

done

 

# Send PollNow to newly created node.

POLLNOW_URL="https://$ORION_SERVER:$PORT/SolarWinds/InformationService/v3/Json/Invoke/Orion.Nodes/PollNow"

CMD="curl -s -S -k -X POST -H 'Content-Type: application/json' -d '[\"N:$NODE_ID\"]' $CREDENTIALS $POLLNOW_URL"

OUTPUT=`eval $CMD`

 

The response I get from the PollNow invoke above is "null". Am I doing it wrong somehow? Can somebody give any hints why the PollNow does not work?

 

Thanks for any help!

Daniel.

Orion SWQL, Thwack! Now I got it

$
0
0

Orion SWQL or Solarwinds Query Language is a pseudo SQL type statements. If you know the basic structure of SQL, Select from join where order group by, you will easily pickup SWQL queries.

 

PURPOSE: This is an overly simplified guide for Keep the lights on SQL to Expert SQL users wanting to jump into Solarwinds Query Language as fast as possible.

 

Where is SWQL used?

  • Every Web Resource on the Web Console
  • Alerts
  • Reports
  • SDK/API scripting

 

Why should I use SWQL?

    Solarwinds has designed SWQL to be future proofed for users and development.

 

Note: A lot of this information exists in multiple places, I am just combining the different points to help provide a better picture to start creating queries easily.

 

Common SQL Constructs Supported

SWQL supports the following constructs from SQL:

  • SELECT … FROM …
  • WHERE clauses
  • GROUP BY clauses and HAVING clauses
  • ORDER BY clauses
  • INNER JOIN
  • LEFT OUTER JOIN
  • RIGHT OUTER JOIN
  • UNION and UNION ALL
  • SELECT TOP n
  • SELECT DISTINCT
  • Subqueries in the SELECT clause
  • Subqueries in the FROM/JOIN clauses
  SWQL supports the following aggregate functions:
  • SUM
  • MAX
  • MIN
  • AVG
  • COUNT
  SWQL supports the following regular functions:
  • ISNULL
  • ABS
  Wildcards -  The wildcard character in SWQL syntax is: %

Example: Node.Caption Like 'AX3%'

  Common SQL Constructs Not Supported

SWQL does not support the following common SQL constructs:

Note: You must use CRUD operations to create, read, update, or delete entities.

  • SELECT * FROM … (You must list the actual properties you want to select.)
  • UPDATE, INSERT, DELETE, etc. (You can only use SWQL to read data.)

   

SWIS Examples:

 

Function Type

Function Name

SWQL Example

SWQL Result

Value Information

Check Values

Min

SELECT min(SWISColumn) as ResultColumn FROM SWISTable

 

Minimum column value

Check Values

Max

SELECT max(SWISColumn) as ResultColumn FROM SWISTable

 

Max value of column

Check Values

Avg

SELECT avg(SWISColumn) as ResultColumn FROM SWISTable

 

Average of all values

Check Values

Sum

SELECT sum(SWISColumn) as ResultColumn FROM SWISTable

 

Sum of all column values

Check Values

Count

SELECT count(SWISColumn) as ResultColumn FROM SWISTable

 

Count of number of results

Check Values

Abs

SELECT abs(-1) as ResultColumn FROM SWISTable

1

Absolute as in never negative

Check Values

IsNull

SELECT Restart, IsNull(restart, '9/25/2015  3:49:54') as ColumnResult FROM Orion.Engines

NULL, 9/25/2015 3:49:54 AM

 

Date Time

Get Date

SELECT getdate() as ResultCoumn FROM Orion.Engines

9/25/15 8:52 AM

Time derived from SQL Server time zone settings

Date Time

GetUtcDate

SELECT GetUtcDate() as ResultColumn FROM Orion.Engines

9/25/15 3:53 PM

Time derived from SQL Server time zone settings

Date Time

DateTime

SELECT KeepAlive FROM Orion.Engines where KeepAlive > DateTime('9/25/2015  3:49:54')

9/25/15 3:55 PM

Time derived from SQL Server time zone settings

Date Time

ToLocal

SELECT Tolocal(getutcdate()) as ResultColumn FROM Orion.Engines

9/25/2015  8:50:37 A M

Time derived from SQL Server time zone settings

Date Time

ToUtc

SELECT ToUtc(getdate()) as ResultColumn FROM Orion.Engines

9/25/15 3:49 PM

Time derived from SQL Server time zone settings

Date Time

DateTrunc

SELECT DateTrunc('month', KeepAlive) as ColumnResult FROM Orion.Engines

9/1/15 12:00 AM

Supported values for the DatePart argument: Minute, Hour, Week, Day, DayOfYear, Month, Quarter, Year. Not supported: Millisecond, Second.

Date Time

ChangeTimeZone

SELECT ChangeTimeZone(KeepAlive,'+05:00') as ColumnResult FROM Orion.Engines

9/25/15 9:21 PM

The second argument needs to follow the standard timezone offset +/-hh:mm . The date in the database will have its offset changed to the specified timezone offset. The + must be within the ' '

Check Date

Year

SELECT Year(KeepAlive) as ColumnResult from orion.engines

2015

Year Returned only

Check Date

QuarterOfyear

SELECT QuarterofYear(KeepAlive) as ColumnResult from orion.engines

3

Quarters 1-4

Check Date

DayOfYear

SELECT DayofYear(KeepAlive) as ColumnResult from orion.engines

268

julian date

Check Date

WeekDay

SELECT WeekDay(KeepAlive) as ColumnResult from orion.engines

2

2= Tuesday, 4=Thursday, 6=Saturday

Check Date

Month

SELECT Month(KeepAlive) as ColumnResult from orion.engines

9

Shows only Month

Check Date

Week

SELECT Week(KeepAlive) as ColumnResult from orion.engines

39

Shows only Week Number

Check Date

Day

SELECT Day(KeepAlive) as ColumnResult from orion.engines

25

Shows Day of month

Check Date

Hour

SELECT Hour(KeepAlive) as ColumnResult from orion.engines

16

Shows hour

Check Date

Minute

SELECT Minute(KeepAlive) as ColumnResult from orion.engines

15

shows minutes

Check Date

Second

SELECT Second(KeepAlive) as ColumnResult from orion.engines

45

shows seconds

Check Date

Millisecond

SELECT MilliSecond(KeepAlive) as ColumnResult from orion.engines

613

shows miliseconds

Add to Current DateTime

AddDate

SELECT AddDate('month', 2, KeepAlive) AS ColumnResult From Orion.Engines

11/25/15 4:38 PM

Add time to current Date  Supported values for DatePart Millisecond, Second, Minute, Hour, Week, Day, Month, Year

Add to Current DateTime

AddYear

SELECT AddYear(5, KeepAlive) AS ColumnResult From Orion.Engines

9/25/20 4:25 PM

5 is the number of Years

Add to Current DateTime

AddMonth

SELECT AddMonth(5, KeepAlive) AS ColumnResult From Orion.Engines

2/25/16 4:26 PM

5 is the number of Months

Add to Current DateTime

AddWeek

SELECT AddWeek(7, KeepAlive) AS ColumnResult From Orion.Engines

11/13/15 4:26 PM

7 is the number of Weeks

Add to Current DateTime

AddDay

SELECT AddDay(17, KeepAlive) AS ColumnResult From Orion.Engines

10/12/15 4:30 PM

17 is the number of Days

Add to Current DateTime

AddHour

SELECT Addhour(1, KeepAlive) AS ColumnResult From Orion.Engines

9/25/15 5:31 PM

1 is the number of hours

Add to Current DateTime

AddMinute

SELECT Addminute(30, KeepAlive) AS ColumnResult From Orion.Engines

9/25/15 5:02 PM

30 is the number of Minutes

Add to Current DateTime

AddSecond

SELECT AddSecond(13, KeepAlive) AS ColumnResult From Orion.Engines

9/25/15 4:33 PM

13 is the number of seconds

Add to Current DateTime

AddMillisecond

SELECT AddMillisecond(1, NextPoll) AS NextPoll From Orion.Nodes

 

1 is the number of Miliseconds

Difference from Current DateTime

YearDiff

SELECT YearDiff(KeepAlive,'1/01/2020 0:0:0 AM') as ColumnResult from orion.engines

5

Year Difference

Difference from Current DateTime

MonthDiff

SELECT MonthDiff(KeepAlive,KeepAlive+28) as ColumnResult from orion.engines

1

+28 is the number of days difference from the Keepalive Column

Difference from Current DateTime

WeekDiff

SELECT WeekDiff(KeepAlive,KeepAlive+28) as ColumnResult from orion.engines

4

+28 is the number of days difference from the Keepalive Column

Difference from Current DateTime

DayDiff

SELECT DayDiff(KeepAlive,KeepAlive+28) as ColumnResult from orion.engines

28

+28 is the number of days difference from the Keepalive Column

Difference from Current DateTime

HourDiff

SELECT HourDiff(KeepAlive,KeepAlive+28) as ColumnResult from orion.engines

672

+28 is the number of days difference from the Keepalive Column

Difference from Current DateTime

MinuteDiff

SELECT MinuteDiff(KeepAlive,KeepAlive+28) as ColumnResult from orion.engines

40320

+28 is the number of days difference from the Keepalive Column

Difference from Current DateTime

SecondDiff

SELECT SecondDiff(KeepAlive, KeepAlive + 1) as a FROM Orion.Engines

2419200

+28 is the number of days difference from the Keepalive Column

Difference from Current DateTime

MillisecondDiff

SELECT MillisecondDiff(KeepAlive,KeepAlive+24) as ColumnResult from orion.engines

2073600000

24 is the number of days. 24 is also the max that can used for this query

Difference from Current DateTime

Floor

SELECT floor(ResponseTime) as ResultColumn FROM Orion.Nodes

 

The FLOOR() rounded up any positive or negative decimal value down to the next least integer value.

Difference from Current DateTime

Ceiling

SELECT ceiling(ResponseTime) as ResultColumn FROM Orion.Nodes

 

The Ceiling() will rounded up any positive or negative decimal value within the function upwards.

Difference from Current DateTime

Round

SELECT round(ResponseTime, PercentLoss) as ResultColumn FROM Orion.Nodes

 

The ROUND() function is used to round a numeric field to the number of decimals specified.

String

ToString

SELECT ToString(101) as ResultColumn FROM SWISTable

101

 

String

EscapeSWISUriValue

SELECT Uri, EscapeSWISUriValue(Uri) as c FROM Orion.Engines

swis://Srvname./Orion/Orion.Engines/EngineID=1, "swis://Srvname./Orion/Orion.Engines/EngineID=1"

 

String

SplitStringToArray

SELECT SplitStringToArray('Hello|§|§|world') as a FROM Orion.Engines

[Hello, world]

 

String

ToUpper

SELECT ToUpper ('TeStStRiNg') as CapString from Orion.Engines

TESTSTRING

 

String

ToLower

SELECT ToLower ('TeStStRiNg') as LowString from Orion.Engines

teststring

 

String

Concat

SELECT Concat ('The ', 'most ','awesome ', 'string') as ConString from Orion.Engines

The most awesome string

 

String

SubString

SELECT SubString ('123456789', 3, 6) as TestSubString from Orion.Engines

345678

 

String

Length

SELECT Length(ServerName) as NameLength FROM Orion.Engines

14, Works just for String properties

 

Array

ArrayLength

SELECT ArrayLength(MemberAncestorDetailsUrls) AS ColumnResult FROM Orion.ContainerMembers

1

in case array is NULL -> it returns NULL

Array

ArrayValueAt

SELECT ArrayValueAt(MemberAncestorDetailsUrls,0) AS ColumnResult FROM Orion.ContainerMembers

/Orion/NetPerfMon/ContainerDetails.aspx?NetObject=C:8

in case array is NULL -> it returns NULL,index starts with 0, in case index is out of range -> query fails

 

 

 

SWIS Table Reference.

     Some of this information came from Orion.NetObjectTypes. SWIS Parent and Column Details were added to see the relationship to the next table.

 

Module

SWIS Table

Name

NetObjectType Prefix

KeyProperty column

SWIS Parent Table

Column Details

NCM

Cirrus.Nodes

NCM Nodes

 

NodeID, CoreNodeID, EngineID

 

NodeCaption

IPAM

IPAM.DHCPScopeOverlapping

IPAM DHCPScopes Overlapping

IPAM-DSO

ScopeId

 

 

IPAM

IPAM.GroupReport

IPAM Networks

IPAMG

GroupId

 

 

IPAM

IPAM.IPConflict

IPAM IPAddress Conflict

IPAMN

IPNodeId

 

 

IPAM

IPAM.IPNodeReport

IPAM Nodes

IPAMN

IPNodeId

 

 

Agent

Orion.AgentManagement.Agent

Core Agents

 

AgentId, AgentGuid, NodeId, PollingEngineID

Orion.Nodes

Name

Core

Orion.AlertStatus

Core Alerts

 

AlertDefID, ActiveObject, AlertObjectID

 

AlertMessage

SAM

Orion.APM.Application

APM: Application

AA

ApplicationID

Orion.Nodes

ApplicationName

SAM

Orion.APM.Component

APM: Component

AM

ComponentID

Orion.APM.Application

ComponentName

SAM

Orion.APM.Exchange.Application

AppInsight for Exchange: Application

ABXA

ApplicationID

Orion.APM.Application

 

SAM

Orion.APM.Exchange.Database

AppInsight for Exchange: Database

ABXD

ID

 

 

SAM

Orion.APM.Exchange.DatabaseCopy

AppInsight for Exchange: Database Copy

ABXDC

ItemID

 

 

SAM

Orion.APM.Exchange.DatabaseFile

AppInsight for Exchange: Database File

ABXF

DatabaseFileID

 

 

SAM

Orion.APM.Exchange.Mailbox

AppInsight for Exchange: Mailboxes

ABXMB

ID

 

 

SAM

Orion.APM.Exchange.ReplicationStatus

AppInsight for Exchange: Replication Status

ABXR

ID

 

 

SAM

Orion.APM.GenericApplication

Application

AA

ApplicationID

Orion.APM.Application

 

SAM

Orion.APM.IIS.Application

AppInsight for IIS: Application

ABIA

ApplicationID

Orion.APM.Application

 

SAM

Orion.APM.IIS.ApplicationPool

AppInsight for IIS: Application Pool

ABIP

ItemID

 

 

SAM

Orion.APM.IIS.Request

AppInsight for IIS: Request

ABIR

ID

 

 

SAM

Orion.APM.IIS.RequestDetails

AppInsight for IIS: Request Details

ABIRD

ID

 

 

SAM

Orion.APM.IIS.Site

AppInsight for IIS: Site

ABIS

ItemID

 

 

SAM

Orion.APM.IIS.SiteBinding

AppInsight for IIS: Site Binding

ABISB

ID

 

 

SAM

Orion.APM.SqlDatabase

AppInsight for SQL: Database

ABSD

ItemID

 

 

SAM

Orion.APM.SqlDatabaseFile

AppInsight for SQL: Database File

ABSF

DatabaseFileID

 

 

SAM

Orion.APM.SqlJobInfo

AppInsight for SQL: Job Info

ABSJ

JobInfoID

 

 

SAM

Orion.APM.SqlQuery

AppInsight for SQL: Expensive Queries Info

ABSQ

QueryID

 

 

SAM

Orion.APM.SqlServerApplication

AppInsight for SQL: Application

ABSA

ApplicationID

Orion.APM.Application

 

SAM

Orion.APM.Wstm.Task

APM: Windows Scheduled Tasks

ABTT

ID

 

 

Core

Orion.AssetInventory.NodeWarrantyAlert

Node Warranty

NWA

NodeID

Orion.Nodes

 

Core

Orion.AuditingEvents

Auditing Events

 

AuditEventID

 

 

Core

Orion.ContainerMembers

Group Member

GM

ContainerID

 

 

Core

Orion.ContainerMembers

Group Member

GM

MemberEntityType

 

 

Core

Orion.ContainerMembers

Group Member

GM

MemberPrimaryID

 

 

DPA

Orion.DPA.DatabaseInstance

Database Instance

DBI

DatabaseInstanceID

 

 

QoE

Orion.DPI.ApplicationAssignments

QoE Application (per node)

 

ApplicationID

Orion.APM.Application

 

QoE

Orion.DPI.ApplicationAssignments

QoE Application (per node)

 

NodeID

Orion.Nodes

 

QoE

Orion.DPI.Applications

QoE Application

 

ApplicationID

Orion.APM.Application

Name

QOE

Orion.DPI.Probes

QoE Probes

 

ProbeID, AgentID

Orion.AgentManagement.Agent (AgentID) Orion.DPI.ProbeAssignments (ProbeID)

DisplayName

QoE

Orion.Engines

Core Servers

 

EngineID

 

 

Core

Orion.Events

Core Events

 

EventID

 

NetObjectType

Core

Orion.EventTypes

Core Event Types

 

EventType

Orion.Events

Name

NPM

Orion.F5.Device

F5 Devices

F5

ID

 

 

NPM

Orion.F5.Nodes

F5 Nodes

FN

ID

 

 

NPM

Orion.F5.Pools

F5 Pools

FP

ID

 

 

NPM

Orion.F5.VirtualServers

F5 Virtual Servers

FVS

ID

 

 

Core

Orion.Groups

Group

C

ContainerID

 

 

NPM / SAM

Orion.HardwareHealth.HardwareCategoryStatus

Hardware Type

HWHT

ID

 

 

NPM / SAM

Orion.HardwareHealth.HardwareInfo

Hardware

HWH

ID

 

 

NPM / SAM

Orion.HardwareHealth.HardwareItem

Hardware Sensor

HWHS

ID

 

 

VNQM

Orion.IpSla.CCMGateways

VoIP Gateway

VG

GatewayID

 

 

VNQM

Orion.IpSla.CCMMonitoring

VoIP CallManager

VCCM

NodeID

Orion.Nodes

 

VNQM

Orion.IpSla.CCMPhones

VoIP Phone

VCCMP

ID

 

 

VNQM

Orion.IpSla.CCMRegions

VoIP Region

VR

RegionID

 

 

VNQM

Orion.IpSla.InfrastructureNodes

VoIP Infrastructure

P

InfrastructureNodeID

 

 

VNQM

Orion.IpSla.Operations

IP SLA QoS

ISOP

OperationInstanceID

 

 

VNQM

Orion.IpSla.VoipCallDetails

VoIP Call Details

VCDS

ID

 

 

VNQM

Orion.IpSla.VoipGatewayEndpoints

VoIP PRI Trunk

VVGT

VoipGatewayEndpointID

 

 

VNQM

Orion.IpSla.VoipGateways

VoIP PRI Gateway

VVG

VoipGatewayID

 

 

NTA

Orion.Netflow.CBQoSPolicyMetric

NTA: CBQoS Class Map

CCM

MetricID

 

 

Core

Orion.Nodes

Node

N

NodeID

Orion.Engines

 

Core

Orion.NodeVlans

VLAN

NVLAN

NodeID

Orion.Nodes

 

Core

Orion.NodeVlans

VLAN

NVLAN

VlanId

Orion.Nodes

 

NPM

Orion.NPM.CustomPollerAssignmentOnInterface

Custom Interface Poller

UNDPI

CustomPollerAssignmentID

 

 

NPM

Orion.NPM.CustomPollerAssignmentOnNode

Custom Node Poller

UNDPN

CustomPollerAssignmentID

 

 

NPM

Orion.NPM.CustomPollerStatusOnNodeTabular

Custom Node Table Poller

UNDPT

CompressedRowID

 

 

NPM

Orion.NPM.CustomPollerStatusOnNodeTabular

Custom Node Table Poller

UNDPT

CustomPollerAssignmentID

 

 

NPM

Orion.NPM.EW.Entity

EnergyWise Entity

EWE

ID

 

 

NPM

Orion.NPM.FCPorts

Fibre Channel Port

FCP

Index

 

 

NPM

Orion.NPM.FCPorts

Fibre Channel Port

FCP

UnitID

 

 

NPM

Orion.NPM.FCRevisions

Fibre Channel Revision

FCR

Index

 

 

NPM

Orion.NPM.FCRevisions

Fibre Channel Revision

FCR

UnitID

 

 

NPM

Orion.NPM.FCSensors

Fibre Channel Sensor

FCS

Index

 

 

NPM

Orion.NPM.FCSensors

Fibre Channel Sensor

FCS

UnitID

 

 

NPM

Orion.NPM.FCUnits

Fibre Channel Unit

FCU

ID

 

 

NPM

Orion.NPM.Interfaces

Interface

I

InterfaceID

 

 

NPM

Orion.NPM.MulticastRouting.GroupNodes

Multicast Routing

MCGN

MulticastGroupNodeID

 

 

NPM

Orion.NPM.MulticastRouting.Groups

Multicast Routing Group

MCG

MulticastGroupID

 

 

NPM

Orion.NPM.UCSBlades

UCS Blade

UCSB

ID

 

 

NPM

Orion.NPM.UCSChassis

UCS Chassis

NCH

ID

 

 

NPM

Orion.NPM.UCSFabrics

UCS Fabric

UCSF

ID

 

 

NPM

Orion.NPM.UCSFans

UCS Fan

UCSFAN

ID

 

 

NPM

Orion.NPM.UCSManagers

UCS Manager

UCSM

NodeID

Orion.Nodes

 

NPM

Orion.NPM.UCSPSUs

UCS Psu

UCSPSU

ID

 

 

NPM

Orion.NPM.VSANs

VSAN

NVS

ID

 

 

NPM

Orion.Packages.Wireless.AccessPoints

Wireless Access Point

WLAP

ID

 

 

NPM

Orion.Packages.Wireless.Controllers

Wireless Controller

WLC

NodeID

Orion.Nodes

 

NPM

Orion.Routing.Neighbors

Routing Neighbors

NBR

NeighborID

 

 

NPM

Orion.Routing.VRF

VRF

VRF

VrfIndex

 

 

WPM

Orion.SEUM.Agents

Location

L

AgentId

 

 

WPM

Orion.SEUM.Transactions

Transaction

T

TransactionId

 

 

WPM

Orion.SEUM.TransactionStepRequests

Step Request

TSR

TransactionStepRequestId

 

 

WPM

Orion.SEUM.TransactionSteps

Step

TS

TransactionStepId

 

 

SRM

Orion.SRM.Engines

Polling Engines

 

EngineID

 

 

SRM

Orion.SRM.FIleServerIdentification

SRM File Server ID

 

 

Orion.SRM.Volumes

 

SRM

Orion.SRM.FileServers

SRM File Server

 

 

Orion.SRM.Volumes

 

SRM

Orion.SRM.FileShares

FileShare

SMS

FileShareID

Orion.SRM.Volumes

 

SRM

Orion.SRM.LUNs

Lun

SML

LUNID

Orion.SRM.Pools

 

SRM

Orion.SRM.PhysicalDisks

SRM Physical Disks

 

 

Orion.SRM.StorageArrays

 

SRM

Orion.SRM.Pools

Pool

SMSP

PoolID

Orion.SRM.StorageArrays

 

SRM

Orion.SRM.Providers

Provider

SMP

ProviderID

 

 

SRM

Orion.SRM.StorageArrays

StorageArray

SMSA

StorageArrayID, ArrayID

 

ArrayName

SRM

Orion.SRM.Volumes

NAS Volume

SMV

VolumeID

Orion.SRM.Pools

 

SRM

Orion.SRM.VServers

VServer

SMVS

VServerID

 

 

UDT

Orion.UDT.AccessPortEndpointCount

AccessPort

UP

PortID

 

 

UDT

Orion.UDT.DNSNameCurrent

UDT: Hostname

UE-DNS

ID

 

 

UDT

Orion.UDT.MovedMACAlert

Moved MAC

UE-MAC

ID

 

 

UDT

Orion.UDT.NewMACAlert

New MACAddress

UE-MAC

ID

 

 

UDT

Orion.UDT.NewMACVendorAlert

New MAC Vendor

UE-MAC

ID

 

 

UDT

Orion.UDT.Port

UDT Port

 

NodeID, PortID, PortIndex

Orion.Nodes

Name

UDT

Orion.UDT.RogueDNSAlert

Rogue DNSName

UE-DNS

DNSNameID

 

 

UDT

Orion.UDT.RogueEmptyDNSAlert

Rogue EmptyDNSName

UE-IP

IPAddressID

 

 

UDT

Orion.UDT.RogueIPAlert

Rogue IPAddress

UE-IP

IPAddressID

 

 

UDT

Orion.UDT.RogueMACAlert

Rogue MACAddress

UE-MAC

EndpointID

 

 

UDT

Orion.UDT.WatchListPresent

Watch List

UW

WatchID

 

 

VIM

Orion.VIM.Clusters

Virtual Cluster

VMC

ClusterID

 

Name

VIM

Orion.VIM.DataCenters

Virtual DataCenter

VMD

DataCenterID

 

 

VIM

Orion.VIM.Datastores

Virtual Datastore

VMS

DataStoreID

Orion.VIM.LUNs

Name

VIM

Orion.VIM.Hosts

Virtual Host

VH

HostID, NodeID, CluserID, DatacenterID

 

 

VIM

Orion.VIM.LUNs

Virtual LUN

 

LunID, DatastoreID,

 

Name

VIM

Orion.VIM.VCenters

Virtual Center

VVC

VCenterID

 

 

VIM

Orion.VIM.VirtualMachines

Virtual Machine

VVM

VirtualMachineID, HostID, NodeID

 

Name

Core

Orion.Volumes

Volume

V

VolumeID

 

 

NPM

Orion.WirelessHeatMap.Map

Wireless Heatmap

WLHM

MapID

 

 

 

 

 

Filtering by Status

To filter by the status property, you must know the valid status levels. This can be referenced in Orion.StatusInfo

StatusId

StatusName

0

Unknown

1

Up

2

Down

3

Warning

4

Shutdown

5

Testing

6

Dormant

7

NotPresent

8

LowerLayerDown

9

Unmanaged

10

Unplugged

11

External

12

Unreachable

14

Critical

15

PartlyAvailable

16

Misconfigured

17

Undefined

19

Unconfirmed

22

Active

24

Inactive

25

Expired

26

MonitoringDisabled

27

Disabled

28

NotLicensed

29

OtherCategory

30

NotRunning

 

Happy Scripting

 

Web Console Views menu missing from Settings page

$
0
0

Question..  Why is the Views Menu missing from my Webconsole, but if I remote to server and launch the Webconsole it is there?

Any advise is greatly appreciated

Enable QoE Management w/ REST Client

$
0
0

I was wondering if someone can point me in the right direction on how to enable QoE management of a node via the SDK REST.

 

Basically I have a list of nodes that I want to enable it for. I am familiar with listing interfaces, adding interfaces, update/adding pollers but I haven't figured this part out.

 

 

Thanks,

Will Lipford

Volumes not being polled

$
0
0

I am trying to use PowerShell to automate adding nodes.  I can't not get the volumes to be monitored.  I can add them to the database and they show up under the node's summary page, but the volumes have no data.  Searching I did find and readhttps://thwack.solarwinds.com/thread/79088?q=Not%20mo, even though I made suer that VolumeType is set to "Fixed Disk" the VolumeTypeID is still showing up as 0.

 

Here is the part of the code that gets the drive information from WMI, and then adds them to the database:

 

$drives = Get-WmiObject -Credential ($creds) -ComputerName $Hostname -Class win32_Volume -Filter DriveType=3

 

    foreach ($drive in $drives){

   

        #Getting information from the driver and using it to build requirments in SolarWinds

        $DriveCaption = "$($drive.Caption) Label:$($drive.Label)  $([Convert]::ToString($drive.SerialNumber, 16))";

        $DriveDescrption = "$($drive.Caption) Label:$($drive.Label)  Serial Number $([Convert]::ToString($drive.SerialNumber, 16))";

               

        #Adding everything to a hash

        $AddDrive = @{

        <#

            NodeID=$NodeID; # NodeID on which the interface is working on

            VolumeIndex= "4";

            VolumeTypeID = "4";

            Status=1;

            #Type ="Fixed Disk";

            VolumeType = "Fixed Disk";

            Icon ="FixedDisk.gif";

            Caption=$DriveCaption;

            VolumeDescription=$DriveDescrption;

            FullName = "$hostname-$DriveCaption"

            PollInterval=120;

            StatCollection=15;

            RediscoveryInterval=30;

            NextRediscovery=[DateTime]::UtcNow;

        #>

            NodeID=$NodeID;

            VolumeType="Fixed Disk";

            VolumeTypeID="4";

            Icon="FixedDisk.gif";

            VolumeIndex="4";

            Caption=$DriveCaption;

            VolumeDescription=$DriveDescrption;

            #status=1

            FullName = "$hostname-$DriveCaption"

            PollInterval="120";

            StatCollection="15";

            RediscoveryInterval="30";

            #NextRediscovery=[DateTime]::UtcNow;

           

        }

       

        #Inserting drives to be monitored into the database       

        $driveURI = New-swisobject $swis -EntityType "Orion.volumes" -properties $AddDrive

 

Here is the code that is adding the pollers and the pollers that I am adding:

 

    function AddPoller($PollerType){

       

       Write-Verbose "Adding $pollertype to database"

 

 

        #Getting the first part of the WMI string before the period (.), which Solarwinds needs for it's database.

        $NetobjectPrefix = $Pollertype.split("{.}")

       

        #setting params for the database fields

        $poller["PollerType"]=$PollerType;

        $poller["NetObject"]=  $NetObjectprefix[0] +":"+$nodeid;

        $poller["NetobjectType"] = $NetobjectPrefix[0];

        $poller["NetObjectID"] = $nodeid;

       

        #Adding to the database

        $pollerUri = New-SwisObject $swis -EntityType "Orion.Pollers" -Properties $poller

    }

 

    Addpoller("I.StatisticesErrors32.SNMP.IfTable")

    Addpoller("I.StatisticsTraffic.SNMP.Universal");

    Addpoller("I.Status.SNMP.IfTable");

    Addpoller("I.Rediscovery.SNMP.IfTable");

    Addpoller("N.Status.ICMP.Native");

    Addpoller("N.ResponseTime.ICMP.Native");

    Addpoller("N.Details.WMI.Vista");

    Addpoller("N.CPU.WMI.Windows");

    Addpoller("N.Uptime.WMI.XP");

    Addpoller("N.CPU.WMI.Windows");

    Addpoller("N.Memory.WMI.Windows");

    Addpoller("N.AssetInventory.Wmi.Generic");

    Addpoller("V.Details.SNMP.Generic");

    Addpoller("V.Statistics.SNMP.Generic");

    Addpoller("V.Status.SNMP.Generic");

 

If I add the node via the web portal, everything is monitored.  I pulled the pollers from this test. If I added them to the database myself, it doesn't seem to work properly.


groups not nesting

$
0
0

I have a Powershell script that runs nightly, and has been doing so successfully for a while until recently.

 

When the script runs it creates groups, and then also does nesting of subgroups and nodes.

 

When it run now, it won't nest the groups properly under the one 'master group' I have created.

 

Looking at the database tables and comparing it to a second instance of NPM that was a clean install, I see there are indexes on the new instance database that aren't in the one I'm working.

 

I've opened a support ticket to cover my bases, but want to ask here if any one else has had experience with this.

How to list all known hosts with CLI

$
0
0

Hello,

 

I have a customer that is using SolarWinds to monitor their environment. I need to export a list of all known hosts on their network.

 

I would prefer to have the following details for each host: ip, hostname, vendor, os, device type

 

They are using the follow products and versions:

  • Orion Platform 2015.1.0,
  • SAM 6.2.0,
  • QoE 2.0,
  • IPAM 4.3,
  • NPM 11.5,
  • NTA 4.1.0,
  • IVIM 2.0.0,
  • VNQM 4.2

 

I guess my biggest hurdle has been that I am not familiar with the product enough to know where to look. I need to work with the data programmatically so having this data as a PDF will not be very useful.

 

Any guidance on where to look for or how to access this information will be great.

 

I apologize if I am posting this in the wrong place.

Is it possible to add subnets to Discovery automatically, when we use the subnet from IPAM?

$
0
0

Hello,

I have an issue with Discovery. I really want to add devices automatically in Discovery process, when we use a device for the first time. For instance, there is a subnet in IPAM, and I use it for the first time. I assign an IP address to my device, but there is no such subnet in Discovery. Then I just forget about this device and I don't discover it. As a result, I lost my device.

SO, my question is: Is it possible to add subnets from IPAM to Discovery process?

PIVOT function with SWQL?

$
0
0

Can anyone comment on PIVOT functionality with SWQL?  Perhaps an example of where it's been used previously?

 

I have a web resource for the dashboard view using SWQL perfectly, but I would love to see the row data flipped around into column for easier consumption.

 

I did exactly what I wanted to do on a web report with a custom SQL query --- and of course I can do a custom SQL query report through report writer and display the report on the view.  Works great for me as the admin, but there are known issues with custom SQL reporting and account limitations (it gets broken).

 

The answer seems simple, to write the view Custom Query resource in SWQL with a pivot table, but I can't for the life of me seem to get it functional.

 

Anyone run into the same issues previously?

 

- Matt

Orion WSQL Short-Comings

$
0
0

Where I see a major problem with WSQL is returning properties for a node, where you don't know what is available. You can use a query like:

 

 

SELECT Name FROM Metadata.Property where EntityName = 'Orion.Nodes'

 

to return all possible properties for nodes, but the problem is that the list that is returned appears to contain properties for all nodes type, where any given property may be valid for some nodes and invalid for others. Is there a way to return property names for a specific type like a Windows server node?

 

If I want to return all valid properties for a node, is there a way to do it concisely instead of:

 

 

SELECT NodeID,ObjectSubType,IPAddress,IPAddressType,DynamicIP,Caption,NodeDescription,Description,DNS,SysName,Vendor,SysObjectID,

Location,Contact,VendorIcon,Icon,IOSImage,IOSVersion,GroupStatus,StatusIcon,LastBoot,SystemUpTime,ResponseTime,PercentLoss,AvgResponseTime,

MinResponseTime,MaxResponseTime,CPULoad,MemoryUsed,MemoryAvailable,PercentMemoryUsed,PercentMemoryAvailable,LastSync,LastSystemUpTimePollUtc,

MachineType,Severity,ChildStatus,Allow64BitCounters,AgentPort,TotalMemory,CMTS,CustomPollerLastStatisticsPoll,CustomPollerLastStatisticsPollSuccess,SNMPVersion,

PollInterval,EngineID,RediscoveryInterval,NextPoll,NextRediscovery,StatCollection,External,Community,RWCommunity,IP,IP_Address,IPAddressGUID,NodeName,

BlockUntil,BufferNoMemThisHour,BufferNoMemToday,BufferSmMissThisHour,BufferSmMissToday,BufferMdMissThisHour,BufferMdMissToday,BufferBgMissThisHour,

BufferBgMissToday,BufferLgMissThisHour,BufferLgMissToday,BufferHgMissThisHour,BufferHgMissToday,OrionIdPrefix,OrionIdColumn,MinutesSinceLastSync,

EntityType,DetailsUrl FROM Orion.Nodes order by nodeid"

 

By the way I did not type that in manually, LOL. I'm trying to use this in Powershell and what I'm trying to get at are things like the assigned application monitors, event list, and/or active alerts for a given node, in addition to current configuration information.

 

 

Datetime precision is lost in SWQL Studio query

$
0
0

HI!

 

I have tried to build a simple query to fetch all EventTime from Event - table using the SWQL Studio (SDK 1.5).

 

The query is as simple as this:

SELECT EventTime FROM Orion.Events;

 

The result is returned as yyyy-MM-DD HH:mm:ss.

 

I have also tried to query the database directly using:

SELECT EventTime FROM dbo.Events

 

which gives me: yyyy-MM-DD HH:mm:ss.SSS

 

As shown above the milliseconds are not returned using the SWQL Studio. Also, for some reason, it seems that 2 hours are added to the time in SWQL Studio which would indicate that it uses some kind of timeezone formatting which is not visbile in the returned result

 

Ideas?

 

Thanks

 

/Alex

SDK example for CreateNode needs fixing for NPM 11.5.2

$
0
0

Adding a Node for Monitoring
To add a new node to Orion and enable monitoring of the node, create a new Orion.Nodes entity and
register it for polling the relevant set of information.
First, review the PowerShell script example for adding a node.
# initialize SWIS connection
$swis = Connect-Swis
# add a node
$newNodeProps = @{
EntityType="Orion.Nodes";
IPAddress="10.0.0.1";
IPAddressGUID="0100000a-0000-0000-0000-000000000000";
Caption="";
DynamicIP=$False;
EngineID=1;
Status=1;
UnManaged=$False;
Allow64BitCounters=$False;
SysObjectID="";
MachineType="";
VendorIcon="";
ObjectSubType="SNMP";
SNMPVersion=2;
Community="public";
}


This is insufficient for NPM 11.5.2 -- it leaves the SNMPv3 credentials as NULL, and the Trap manager will not be able to handle traps from the node.

the error report in the logfile looks like this:

 

2015-10-13 12:32:00,730 [34] ERROR SolarWinds.Orion.Common.ManagedNodeState - Error occured during the getting node with IP [xxx.xxx.xxx.xxx] from Nodes table!

System.Data.SqlTypes.SqlNullValueException: Data is Null. This method or property cannot be called on Null values.

at System.Data.SqlClient.SqlBuffer.get_String()

at System.Data.SqlClient.SqlDataReader.GetString(Int32 i)

at SolarWinds.Orion.Common.ManagedNodeState.AddNewNode(String ip, Boolean getSnmpCred)


'editing' a node properties and submitting without changing them updates the NULL values in the SNMPv3 credentials.


How can I add nodes from two separate NPM servers to one NCM server

$
0
0

...when I'm relitively certain that the NodeIDs WILL conflict / possibly be duplicated ?

 

Any thoughts / help on this appreciated!

How do you set the hostname via http POST in IPAM?

$
0
0

My question is pretty much the same as in this thread:

 

https://thwack.solarwinds.com/thread/68357

 

I'm trying to set the hostname with a POST in curl (specifically pyCurl) but I'm coming up with nothing.  I can successfully mark an IP as used or available by submitting:

 

objectId=3923&ids=128&entity=IPAM.IPNode&verb=UpdateManyStatus&ipstatus=1

 

What are the variables I need to set so I can set things like hostname, alias and comment?

 

It is surprisingly difficult to find adequate documentation for this product.  Where are ids, objectid, entity, verb and ipstatus documented?  I suspect if I can find that I can find other things to set.

 

Thanks!

Is there a data dictionary for the Orion database

$
0
0

Looking for information beyond the basic barebones type of field schema, something that describes the utility for anything beyond the obvious fields.

 

Thanks

Differences between Orion.Netflow.Flows and Orion.Netflow.FlowsBy*

$
0
0

In Orion database there are seven tables that contain Netflow information.  They have 36 fields in common, such as the SourceIP address, Number of bytes, SourceHostname etc.  The difference is extra fields, for example ByHostname adds the fields ASID, CountryCode, Domain, Hostname, IP, IPGroupSegmentID, and PartnerIP.  Some of the extra fields appear to be duplicates of the common fields.  For example the extra field Hostname always (in my case and my limited sample) matches either the common fields SourceHostname or DestinationHostname.  This also applies to the extra field IP and PartnerIP.  Are the extra fields there as a programming convenience (for easier flow search) or for some other purpose that I haven't come across?  I would like to use either Orion.Netflow.Flows.ByHostname or Orion.Netflow.Flows.ByIP as they capture more information, but they appear to report the same flow multiple times, just with different "key" values.  I need to make sure I don't drop flows by accident.

 

Thanks

Report that shows flows that no longer exist. Need help using NOT EXISTS

$
0
0

Hello,

I am trying to create a report that shows me flows that have stopped from yesterday.  I have some netflow sources configured that show streams from my security cameras.  I would like a report (and eventually an alert, but that is another thwack post) that will tell me when these flows no longer exist.  I think my where statement is correct but I keep getting the error "no viable input at EXISTS in where clause".  Can anyone look this over and point me in the right direction?  Thanks

 

 

SELECT Top 10 F.NodeID, NC.City, A.Name, F.SourceIP, SUM(F.TotalBytes) AS TotalBytes

 

From Orion.NetFlow.Flows AS F

 

LEFT JOIN Orion.Nodes N ON F.NodeID = N.NodeID

 

LEFT Join Orion.NodesCustomProperties NC ON N.NodeID = NC.NodeID

 

LEFT JOIN Orion.NetFlow.Applications A on A.ApplicationID = F.ApplicationID

 

WHERE 

NOT EXISTS

(Select FL.SourceIP FROM Orion.NetFlow.Flows FL WHERE FL.TimeStamp BETWEEN (F.TimeStamp>=(GetUTCDate()-0.04167)) AND (FL.TimeStamp>=(GetUTCDate())))

 

ORDER BY TotalBytes DESC

Viewing all 2677 articles
Browse latest View live