cancel
Showing results for 
Search instead for 
Did you mean: 
Create Post

ENTERPRISE OPERATIONS CONSOLE 2019.4 IS NOW AVAILABLE!

In this release we are very pleased to present a new workflow designed to simplify the process of adding and managing user accounts within the product.  We understand that EOC can play a critical role in a distributed deployment of Orion, and with the addition of proper pass-through authentication, can dramatically alleviate the administrative overhead of managing accounts, or prevent users from receiving inappropriate privileges when being directed to a remote instance.

Proper pass-through authentication has been a highly requested feature, and the problems this presented are clearly evident in some of the example threads:

EOC Pass through Authentication

Authentication - EOC 2.1

We feel confident this latest release can address those concerns while providing a better overall experience.

Manage Site Wizard

The major changes implemented in this release are really a part of the Manage Site workflow.  This wizard is available either through Discovery Central, the Orion Site Status Widget, or through Settings > All Settings > Manage SolarWinds Sites.

pastedImage_1.png
pastedImage_5.pngpastedImage_4.png

Select Add SolarWinds Site and walk through the wizard.  Noticeable differences will be minimal until you get to the final stage of the wizard, so we will skip to that part. The image below illustrates the final step in the add site wizard prior to the 2019.4 release which limited you to adding a Default Site Account for authentication purposes. This part of the process was typically the catalyst for a number of issues mentioned in the aforementioned Thwack Posts as well as added confusion.

pastedImage_1.png

Hopefully providing a bit of clarity around the intentions of this final step, we have made some changes. Rather than specifying a default SolarWinds Account, you are now presented with options to choose your preferred method of authenticating from EOC to the remote sites. What this means is that when a user interacts or drills down to a certain entity within EOC, they are automatically redirected to the remote instance responsible for monitoring that node. This step specifies the authentication mechanism for your users from EOC to each site.  


pastedImage_6.png

If we quickly review your options from bottom to top, the option to use custom credentials for each individual user means that when adding a user to EOC you are specifying credentials for each and every site a user has access to through the Manage Accounts menu under settings.  This may be a preferred option for those of you wanting the ultimate control over how this EOC user would access multiple separate sites.  Remember, that permissions and limitations are applied to each EOC user based on the account settings at each remote instance. Many of you have password expirations in your organization and this could lead to an administrative nightmare if that occurs at a regular cadence, forcing the Admin of EOC to either grant access to manage accounts or know everyone's password.

pastedImage_2.png

Let's say the majority of your users accessing remote sites from EOC would have similar privileges. Use a default EOC user Account would be a method in which to create one account for a large group of users.  This is again fairly limiting and could put you in a place where you may run into the issues mentioned above.

Pass-through Authentication, on the other hand, can simplify this process immensely.  The Enterprise Operations Console will now work as you would expect with any Orion, Active Directory, Active Directory Group, or even SAML account. As an EOC administrator, the most important step is to ensure that the corresponding Windows Group, SAML Group, or individual accounts are set up at the remote instance. Then, add that user or group account to EOC and you are off and running. It's that simple!

In prior versions of EOC, group based permissions really were not synced with the remote instance and forced administrators to add individual users. This can of course be time consuming for something you expect to be in an enterprise level product. Fortunately, this has been taken care of so no more having to work with individual users to grant them access to a settings page so that they can constantly setup or reset their passwords. For those of you leveraging 2FA through CAC this will function similar to how you currently access remote sites, and when a user selects an event or object in EOC, the appropriate username will follow along with the relevant permissions and limitations.

It is highly recommended that any remote sites connected to EOC are also running 2019.4 so this works as seamlessly as possible.

Status Summary Widget

As a small bonus, we have also made a few adjustments to the Custom Tile Widget.  As minor as they may seem, sometimes these small changes can make a world of difference.  The widget has now been properly renamed to the Status Summary Widget. This should clearly indicate the purpose of the widget and remove any confusion about why it was called Custom Tile from the days of EOC 2.0.  Within the Advanced Entity Filter, things have been properly alphabetized to ensure you are able to quickly and easily find the property you are looking for.  Finally, sometimes you want to be able to leverage as much screen real estate as possible, and in order to do so, we decided to provide an option where you could hide the Active Alerts section of the widget.  Some have found it quite beneficial to create a condensed scoreboard of status in their environments.

pastedImage_1.png

We hope you find these changes helpful and share your feedback. If there are any questions or thoughts on what you would like to see in a future release, please be sure to add in the comments below!

Comments

A few comments.

1) I didn't see a Custom Query widget.  There is a Custom Table where we are limited to SWQL - but no Custom Query.

2) I haven't used EOC in a while and the last time I used it - I remember the ability to change the polling intervals for Orion instances.   I don't see that option.

3) The views seem pretty limited and I thought I was missing something.   I went into the Manage Views and there are only 4 views.   Is that correct?

Thank you,

Amit

cscoengineer - We are working on enabling the Custom Query Widget for a future release, but you still would not be able to use SQL if that is what you are attempting to do. You would need to leverage SWQL regardless. 

In order to pull back data into EOC we now leverage SWIS Federation.  See - WHAT IS THE ENTERPRISE OPERATIONS CONSOLE (EOC) & HOW DOES IT WORK? 2.0!!  for a detailed description.  This is an on-demand function.

There are no polling intervals for this information, so you are correct that option does not exist. 

Is there something specific you are trying to pull into EOC that you could not do via SWQL and the Custom Table Widget?  I would be interested in understanding what you are looking to accomplish.

What makes the views limited for you?   Here are some posts that share the changes from 2.0 to the latest version 2019.4:

Understanding Changes In EOC 2.0 - The Enterprise Summary View

Understanding Changes In EOC 2.0 - The Enterprise Maps View

Understanding Changes in EOC 2.0 - Creating Global Top XX Resources

Enterprise Operations Console 2.1 Now Available!

If you have additional thoughts on what would make EOC work better for your organization please let me know specifics.  I look forward to hearing more from you. 

Hi Hi.  I'm still figuring out what I can do and can't in terms of swql.  

I have worked for it for just a day and these are the things I have observed.

1) Custom Query

     a. Without the Custom Query – I can’t get the 5 row pagination which makes the NOC screen more manageable.

     b. It makes linking more troublesome, because there is no [_IconFor_] or {_LinkFor_]

2) Would be nice for some more information about the environments.

    a. One thing I want to do is to have a summary page (Global top 10) then sub-pages with the NPM instances without pushing to the instance.   Just makes it a bit cleaner.

3) Example

     a. I have replicated the Global Top 10 Nodes with High Response Time with Custom Table and swql.  This gives me better control over what is being displayed.   For example, to strip off the domain information and to make all captions uppercase.  I’m sure once the custom query is done this will be easier.

pastedImage_1.png

b.  c. Some quirky behavior with the SWQL.  In the example below, the column should have displayed  [XXX] not the name of the field.   In the final custom table – it does display [XXX]. 

pastedImage_2.png

Thank you,

Amit

Thank you cscoengineer​ - just to make sure I am following - I have a couple questions. 

a. Without the Custom Query – I can’t get the 5 row pagination which makes the NOC screen more manageable. - JB - you can control the top XX number of rows to share, but could you expand why the paginated list is important?

pastedImage_0.png

b. It makes linking more troublesome, because there is no [_IconFor_] or {_LinkFor_] - JB in tables you can perform these tasks too if I understand correctly - example below

pastedImage_1.png

Would be nice for some more information about the environments. JB - We are hoping to input more information from remote instance health into EOC in future releases.  I am a bit confused what you are looking for in the example below... Can you expand or add some example screenshots?

    a. One thing I want to do is to have a summary page (Global top 10) then sub-pages with the NPM instances without pushing to the instance.   Just makes it a bit cleaner.  JB - EOC has a global Top 10.  You could also create customized views or sub-views that contain data restricted to a certain site only. 

1) You had mentioned a "Custom Tile" widget...but I'm not seeing it.  

pastedImage_0.png

I'm on the most recent verion of NOC.

pastedImage_5.png

2) Also in the "Network Devices"...is it really just network devices (Cisco, Juniper, etc) or all devices.

pastedImage_1.png

I created a "Site Node Summary" for all nodes and the "Network Devices" widgets seems to be all "Devices".

pastedImage_4.png

3) Can I write custom SWQL for each instance of NPM?

THank you,

Amit

cscoengineer  wrote:

1) You had mentioned a "Custom Tile" widget...but I'm not seeing it.  JB - As mentioned above - this is now called the Summary Status Widget.

pastedImage_0.png

I'm on the most recent verion of NOC.

pastedImage_5.png

2) Also in the "Network Devices"...is it really just network devices (Cisco, Juniper, etc) or all devices.  JB - Select edit on the widget and there are 3 different ways to filter.  Either by selecting a basic property such as "Nodes" which I believe this is, The Advanced Entity Filter, or Advanced SWQL Filter.  You certainly have the option to filter on multiple different machine types if desired. 

pastedImage_1.png

I created a "Site Node Summary" for all nodes and the "Network Devices" widgets seems to be all "Devices".

pastedImage_4.png

3) Can I write custom SWQL for each instance of NPM?  JB - your SWQL could be based on site as well as a number of other properties if desired.  Using the advanced entity filter you could create a Summary Status Widget for CIsco and Juniper Devices at each site if you would like.  

THank you,

Amit

Another comment. 

When I run a SWQL on a normal NPM I get the correct result

pastedImage_1.png

When I run the same query on a EOC, it doesn't work

pastedImage_2.png

...any ideas?

Thank you,

Amit

If query is executed from EOC, you need to pass two dates as arguments to WEEKDIFF function. For example:

SELECT TOP 1 WEEKDIFF('01/01/1900', GETDATE()) as d

FROM Orion.Nodes n

ORDER BY 1

You can also pass other DateTime fields as an arguments. For example, the below query displays the number of weeks since the last boot.

SELECT TOP 1 WEEKDIFF(n.LastBoot, GETDATE()) as d

FROM Orion.Nodes n

ORDER BY 1

Hi Hi

I'm trying to use the Details Page Link but I'm not clear on how to use it.   Played around with it for 30 mins without success.   Is there a doc I can follow?

For example, for the "Node", I want it to use the "[_LinkFor_Node] for the Details Page Link.   Now sure how to do that?

The error message "NODE - Details Page Link ....".   Not sure what it means by 'db|DetailsUrl'    There are two different DetailsUrl (Node, Interface). 

pastedImage_0.png

select top 10

TOUPPER(SUBSTRING(i.node.caption,1,case when charindex('.',i.node.caption,1) <=4 then length(i.node.caption) else (charindex('.',i.node.caption,1)-1) end)) as [Node]

,i.node.DetailsUrl AS [_LinkFor_Node]

,'/Orion/images/StatusIcons/Small-' + i.node.StatusIcon AS [_IconFor_Node]

,i.caption as [Interface]

,i.DetailsUrl as [_LinkFor_Interface]

,'/Orion/images/StatusIcons/Small-' + i.StatusIcon AS [_IconFor_Interface]

--Receive

,concat(round(i.InPercentUtil,0),' %') as [Receive]

,concat('/ui/perfstack/?presetTime=last12Hours&charts=0_Orion.NPM.Interfaces_',i.InterfaceID,'-Orion.NPM.InterfaceTraffic.OutPercentUtil,0_Orion.NPM.Interfaces_',i.InterfaceID,'-Orion.NPM.InterfaceTraffic.InPercentUtil;') as [_LinkFor_Receive]

--,concat('/Orion/images/StatusIcons/mem-',tostring((floor((i.InPercentUtil/10))*10)+ ((floor(i.InPercentUtil/5)-(2*(floor(i.InPercentUtil/5)/2)))*5)),'.png') as  [_IconFor_Receive]

,case when i.InPercentUtil>= i.InPercentUtilizationThreshold.Level2Value then '/Orion/images/StatusIcons/Small-Critical.gif'

      when i.InPercentUtil>= i.InPercentUtilizationThreshold.Level1Value then '/Orion/images/StatusIcons/Small-Warning.gif'

      when i.InPercentUtil>=0 then '/Orion/images/StatusIcons/Small-up.gif'

      else '' end as  [_IconFor_Receive]

--Transmit

,concat(round(i.OutPercentUtil,0),' %') as [Transmit]

,concat('/ui/perfstack/?presetTime=last12Hours&charts=0_Orion.NPM.Interfaces_',i.InterfaceID,'-Orion.NPM.InterfaceTraffic.OutPercentUtil,0_Orion.NPM.Interfaces_',i.InterfaceID,'-Orion.NPM.InterfaceTraffic.InPercentUtil;') as [_LinkFor_Transmit]

--,concat('/Orion/images/StatusIcons/mem-',tostring((floor((i.InPercentUtil/10))*10)+ ((floor(i.InPercentUtil/5)-(2*(floor(i.InPercentUtil/5)/2)))*5)),'.png') as  [_IconFor_Transmit]

,case when i.OutPercentUtil>= i.OutPercentUtilizationThreshold.Level2Value then '/Orion/images/StatusIcons/Small-Critical.gif'

      when i.OutPercentUtil>= i.OutPercentUtilizationThreshold.Level1Value then '/Orion/images/StatusIcons/Small-Warning.gif'

      when i.OutPercentUtil>=0 then '/Orion/images/StatusIcons/Small-up.gif'

      else '' end as  [_IconFor_Transmit]

,concat(case when i.inbps/1000000000 > 1 then concat(round(i.Inbps/1000000000,2),' Gbps')

             when i.inbps/1000000 > 1 then concat(round(i.Inbps/1000000,2),' Mbps')

             when i.inbps/1000 > 1 then concat(round(i.Inbps/1000,2),' Kbps')

                  else concat(i.Inbps,' bps') end,'') as [Rx]

,concat('/Orion/Charts/CustomChart.aspx?ChartName=MMAvgBps&NetObject=I:',i.InterfaceID,'&Period=Today&CalculateTrendLine=False') as [_LinkFor_Rx]

,concat(case when i.Outbps/1000000000 > 1 then concat(round(i.Outbps/1000000000,2),' Gbps') 

                   when i.Outbps/1000000 > 1 then concat(round(i.Outbps/1000000,2),' Mbps') 

                   when i.Outbps/1000 > 1 then concat(round(i.Outbps/1000,2),' Kbps')

                   else concat(i.Outbps,' bps') end,'') as [Tx]

,concat('/Orion/Charts/CustomChart.aspx?ChartName=MMAvgBps&NetObject=I:',i.InterfaceID,'&Period=Today&CalculateTrendLine=False') as [_LinkFor_Tx]

from orion.npm.interfaces i

where i.Status = 1

--order by i.Inbps+i.Outbps DESC

order by i.InPercentUtil+i.outpercentutil desc

Thank you,

Amit

Let me see if I'm understanding this.    The SWQL on EOC has a different syntax than the SWQL on NPM.    Is that correct?

Another issue I have come across is that the Duration calculation works fine in NPM but not in EOC.   Seems like EOC is doing something different in calculating the HOURDIFF

Here is EOC:

pastedImage_1.png

Here is NPM:

pastedImage_2.png

Any ideas?

Thank you,

Amit

You can certainly use the Details Page Link in the manner in which you hope - however, to do that you would need to have two columns in your data source.  DetailsURL and InstanceSiteID.  Here is an example of what that could look like:

pastedImage_0.png

select top 10

i.caption as [Interface]

,i.Node.Caption as [Node/Caption1],

TOUPPER(SUBSTRING(i.node.caption,1,case when charindex('.',i.node.caption,1) <=4 then length(i.node.caption) else (charindex('.',i.node.caption,1)-1) end)) as [Node/Caption]

, i.DetailsUrl

, i.Node.DetailsUrl AS [Node/DetailsUrl]

, i.InstanceSiteId

,'/Orion/images/StatusIcons/Small-' + i.node.StatusIcon AS [_IconFor_Node]

,i.DetailsUrl as [_LinkFor_Interface]

,'/Orion/images/StatusIcons/Small-' + i.StatusIcon AS [_IconFor_Interface]

--Receive

,concat(round(i.InPercentUtil,0),' %') as [Receive]

,concat('/ui/perfstack/?presetTime=last12Hours&charts=0_Orion.NPM.Interfaces_',i.InterfaceID,'-Orion.NPM.InterfaceTraffic.OutPercentUtil,0_Orion.NPM.Interfaces_',i.InterfaceID,'-Orion.NPM.InterfaceTraffic.InPercentUtil;') as [_LinkFor_Receive]

--,concat('/Orion/images/StatusIcons/mem-',tostring((floor((i.InPercentUtil/10))*10)+ ((floor(i.InPercentUtil/5)-(2*(floor(i.InPercentUtil/5)/2)))*5)),'.png') as  [_IconFor_Receive]

,case when i.InPercentUtil>= i.InPercentUtilizationThreshold.Level2Value then '/Orion/images/StatusIcons/Small-Critical.gif'

      when i.InPercentUtil>= i.InPercentUtilizationThreshold.Level1Value then '/Orion/images/StatusIcons/Small-Warning.gif'

      when i.InPercentUtil>=0 then '/Orion/images/StatusIcons/Small-up.gif'

      else '' end as  [_IconFor_Receive]

--Transmit

,concat(round(i.OutPercentUtil,0),' %') as [Transmit]

,concat('/ui/perfstack/?presetTime=last12Hours&charts=0_Orion.NPM.Interfaces_',i.InterfaceID,'-Orion.NPM.InterfaceTraffic.OutPercentUtil,0_Orion.NPM.Interfaces_',i.InterfaceID,'-Orion.NPM.InterfaceTraffic.InPercentUtil;') as [_LinkFor_Transmit]

--,concat('/Orion/images/StatusIcons/mem-',tostring((floor((i.InPercentUtil/10))*10)+ ((floor(i.InPercentUtil/5)-(2*(floor(i.InPercentUtil/5)/2)))*5)),'.png') as  [_IconFor_Transmit]

,case when i.OutPercentUtil>= i.OutPercentUtilizationThreshold.Level2Value then '/Orion/images/StatusIcons/Small-Critical.gif'

      when i.OutPercentUtil>= i.OutPercentUtilizationThreshold.Level1Value then '/Orion/images/StatusIcons/Small-Warning.gif'

      when i.OutPercentUtil>=0 then '/Orion/images/StatusIcons/Small-up.gif'

      else '' end as  [_IconFor_Transmit]

,concat(case when i.inbps/1000000000 > 1 then concat(round(i.Inbps/1000000000,2),' Gbps')

             when i.inbps/1000000 > 1 then concat(round(i.Inbps/1000000,2),' Mbps')

             when i.inbps/1000 > 1 then concat(round(i.Inbps/1000,2),' Kbps')

                  else concat(i.Inbps,' bps') end,'') as [Rx]

,concat('/Orion/Charts/CustomChart.aspx?ChartName=MMAvgBps&NetObject=I:',i.InterfaceID,'&Period=Today&CalculateTrendLine=False') as [_LinkFor_Rx]

,concat(case when i.Outbps/1000000000 > 1 then concat(round(i.Outbps/1000000000,2),' Gbps')

                   when i.Outbps/1000000 > 1 then concat(round(i.Outbps/1000000,2),' Mbps')

                   when i.Outbps/1000 > 1 then concat(round(i.Outbps/1000,2),' Kbps')

                   else concat(i.Outbps,' bps') end,'') as [Tx]

,concat('/Orion/Charts/CustomChart.aspx?ChartName=MMAvgBps&NetObject=I:',i.InterfaceID,'&Period=Today&CalculateTrendLine=False') as [_LinkFor_Tx]

from orion.npm.interfaces i

where i.Status = 1

--order by i.Inbps+i.Outbps DESC

order by i.InPercentUtil+i.outpercentutil desc

SWQL syntax is "almost" the same on EOC as any stand alone Orion Instance/Module with some exceptions.  The reason there is a discrepancy in the results is the difference for how DATEDIFF is calculated on SWIS and the SQL Server.  In SQL server DATEDIFF

(hour, datetime1, datetime2) returns the number of full hours that has passed, i.e. it truncates the fraction part of total hours passed. In contrast, SWIS rounds total hours passed. So if it has been passed 4 hours and 31 minute between two dates, SQL server would return 4 and SWIS  would return 5.

This is visible on a stand alone NPM. Running these queries would produce different results:

SELECT TOP 1

HOURDIFF('2019-11-04 13:00:22','2019-11-04 15:59:50') as [x]

FROM Metadata.Entity -- returns 3 because executed via SWIS

SELECT TOP 1

HOURDIFF('2019-11-04 13:00:22','2019-11-04 15:59:50') as [x]

FROM Orion.Nodes -- returns 2 because this query is executed with MS SQL Server

Now, there appears to be a bug which we have logged and will get prioritized accordingly.  This is being tracked internally through (OADP-2820)

In order to achieve the result you are expecting, the following query can be used as a workaround:

SELECT TOP 1

FLOOR (MINUTEDIFF('2019-11-04 23:0:22','2019-12-02 15:59:50')/60.0) as [x]

,FLOOR(MINUTEDIFF('2019-11-04 23:0:22','2019-12-02 15:59:50')/60.0/24) as [xl]

, FLOOR (MINUTEDIFF('2019-11-04 23:0:22','2019-12-02 15:59:50')/60.0/24) as [x2]

-- 665/24 = 27.70833333

-- floor(665/24) = 27

,CONCAT(FLOOR (HOURDIFF('2019-11-04 23:0:22','2019-12-02 15:59:50')/24.0),' Day(s) ',

FLOOR (MINUTEDIFF('2019-11-04 23:0:22', '2019-12-02 15:59:50')/60.0%24),'h',

FLOOR (MINUTEDIFF('2019-11-04 23:0:22','2019-12-02 15:59:50')%60),'m'

) as Duration

FROM Orion.Nodes n

Version history
Revision #:
1 of 1
Last update:
‎10-30-2019 05:07 PM
Updated by: