Is there someone who has this or could guide me in determining which machines have SQL installed (including Express) and which version they are..ie 2005,2008, 2012
Anyone Have An Installed SQL Versions Report
Monitor APs on WLC 4400 & 5508
I would like to use ORION NPM to monitor and alert on our wireless access points that are managed by Cisco controllers.
Currently I am able to monitor the controller (4400) and its associated Thin Access Points and connected clients. I would like to be able to send an alert when one of the APs goes down.
I have set up as a test, the "Alert me when a Thin Wireless Access Point goes down" alert with a trigger action to send me an email.
The trigger condition is "status is equal to down". The problem I have...i think...is when an AP goes down in our organization the WLC drops it from control and monitoring and when ORION runs the next poll it see the AP as"non-existent" instead of status down. In other words...after the poll is completed the AP no longer shows in ORION to alert on.
Has anyone else come across this issue.
Thanks for your help.
Ryan
At a Lose
Ok sorry if this is a double post but I don't see my original one... So I am trying to use Network Atlas to show the link utilization between a set of port channels on a Fusion Router and the corresponding VLAN connections on a 6509 VSS chassis... it looks something like this:
So in NPM the devices show up just fine and the port channels / VLAN connections also show up just fine... the issue is if I drop these into a Network Atlas map and try "Connect Now" nothing connections. If I do "manual connections" I get something like the image where is says the hyperlink is automatically generated yet nothing shows up for link speed or utilization... thoughts?
Rogue APs Seen on LAN
Hello there. I have been searching for nearly a year to figure out how to do this and no one seems to have solved it yet. We have a Cisco AP controller that is feeding NPM "Rogue APs" This is great except that a "Rogue AP" just means any SSID within earshot of our APs. You might argue that it's important to know that. With 350 retail locations, it's too much for us to worry about. What I DO WANT TO KNOW is whether any of these APs within ear shot have a MAC address that appears on our network. I have UDT, so I know all of the MAC addresses on my network. How do easily feed the Rogue AP MACs into UDT to get a report of those seen on our LAN? Right now, I am manually manipulating the database and getting fairly limited results. I export the 5000 rogue AP MACs seen every 90 days, remove duplicates using excel, format the table to match the UDT WATCHLIST database table and have our SQL DBA import it so I can run a watchlist report. Now, I have to do this about 1000 MAC addresses at a time, because UDT doesn't seem to be able to handle any more than that. It's terribly time consuming to get to the 1 or 2 ACTUAL Rogue APs on my network.
Any Ideas?
Custom HTML Resource for a Group View to sort Group Custom Properties
I'm trying to use a Custom HTML Resource to sort my custom properties for my group views in an HTML table so that they will be in the desired order.
I used the format below:
B>Site Code:</B> ${Site_ID}<BR>
<B>Site Address:</B> ${Location}<BR>
<B>Site Phone:</B> ${Location_Phone}<BR>
<B>Primary Contact:</B> ${Primary_Contact}<BR>
<B>Primary Contact's Phone:</B> ${Primary_Contact_Phone}<BR>
<B>Primary Contact's Cell Phone:</B> ${Primary_Contact_Cell}<BR>
<B>Secondary Contact:</B> ${Secondary_Contact}<BR>
<B>Secondary Contact's Phone:</B> ${Secondary_Contact_Phone}<BR>
<B>Secondary Contact's Cell Phone:</B> ${Secondary_Contact_Cell}<BR>
<B>Site Business Hours:</B> ${Site_Hours}<BR>
<B>Afterhours/Weekend hours:</B> ${After_hours}<BR>
<B>WAN Provider:</B> ${WAN_Provider}<BR>
<B>Circuit ID(s):</B> ${Circuit_IDs}<BR>
<B>Internet Provider:</B> ${Internet_Provider}<BR>
The result is that it just show's the variables rather than populating them with their information.
I've successfully used a similar format to populate custom properties in a table on my node views.
Is this just not possible on group views? Is there a better or different way to do this?
new discovery snmp will not work
trying to do a discovery and cannot seem to get snmp to work
latest version of the nmc.
two nick one for switch management and one for local intranet .
i can discover all my nodes and icmp works but when i try and setup snmp it will not discover them
the devices are all switches cisco 2950 , 3560 and 3750 ,
snmp-communitry XXXX ro
snmp-communitry XXXx rw are set in the switches but cant seem to get them to work
If-Then-Else Alerting
I'm setting up alerts in NPM. Here are the scenarios:
If the LOCATION=ABC, and exactly 1 node is DOWN, then ALERTX
If the LOCATION=ABC, and 2-4 nodes are DOWN, then ALERTY (burt don't ALERTX)
If the LOCATION=ABC, and 5 or more nodes are DOWN, then ALERTZ (but don't ALERTX or ALERTY)
My goal is this: This company has several locations. All of their SNMP configurations have the LOCATION field populated with the location where the node resides. If at a given location, more than 5 nodes are down, then I only want alertZ. If at a given location, between 2 and 4 nodes are down, then I only want alertY. If at a given location only 1 node is down, then I only want alertX.
How can I accomplish this?
Sonar AIX SNMP Discovery
Currently I have a few strings used for discovering nodes through Sonar discovery setup. Currently, if it discovers a AIX box it's polling minimal information as the strings I'm using aren't pulling information and it's only polling with ICMP. Is there a community string I can use to poll the information on AIX nodes? If not, is there any way to obtain information on a AIX box other than through ICMP?
Monitoring BGP sessions
Hi all,
I looked for a solution to monitor BGP sessions in SW but I not found no a concrete solution. Someone has implemented this monitoring with alerts?
I need that when a session is down, send me an alert by e-mail.
Thanks!!
Discovering Cisco ASR 9006 Interfaces
Hi
I am trying to discover a Cisco ASR 9006 router via Network Sonar discoery but NPM only sees the CPU/ Memory and Layer 3 topology information, no interfaces.
Is this device type fully supported? Has anyone else experienced similar issues?
Running NPM version 10.5.
Cisco ASR IOS 4.2
Thanks in advance.
Adam
Error message after upgrade to 11.5.2
I upgrade NPM from 11.5.2 and SAM to 6.2. Upgrade went fine. I rebooted for good measure and now my web console give an error when I try to launch the Orion Console. I did a simple test to see if Solarwinds was working at all by turing off a server I have monitored and I did get alerted on the server being down. The googling has not been much help so far. I have opened a ticket and I am waiting for a response back. The web console shows this when I open it (remotely or locally on the server):
Server Error in '/' Application.
Resource Key 'LicenseElementDisplayName_Components' was not found in Resource File 'APM.Strings'
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: SolarWinds.Internationalization.Exceptions.TokenSubstException: Resource Key 'LicenseElementDisplayName_Components' was not found in Resource File 'APM.Strings'
Source Error:
The source code that generated this unhandled exception can only be shown when compiled in debug mode. To enable this, please follow one of the below steps, then request the URL: |
Stack Trace:
[TokenSubstException: Resource Key 'LicenseElementDisplayName_Components' was not found in Resource File 'APM.Strings'] SolarWinds.Internationalization.Tokens.TokenSubstitutionBase.WriteToken(Dictionary`2 values, IResourceStringRegistrar resMgr, TextWriter textOut) +955 SolarWinds.Internationalization.Tokens.TokenSubstitutionBase.Parse(IResourceStringRegistrar resMgr, TokenSubstitutionSequence sequence, TextReader textIn, TextWriter textOut) +437 SolarWinds.Internationalization.Tokens.TokenSubstitutionBase.Parse(IResourceStringRegistrar resMgr, TokenSubstitutionSequence sequence, String textIn) +88 SolarWinds.Orion.Core.Common.ModuleCollectionLoader.ParseModuleXml(ModuleInfo moduleInfo, Dictionary`2 collection, XmlReader xmlreader) +1612 SolarWinds.Orion.Core.Common.ModuleCollectionLoader.LoadModulesInfoFromXmlFiles(Dictionary`2 collection, IEnumerable`1 files) +146 SolarWinds.Orion.Core.Common.ModuleCollectionLoader.Load() +176 SolarWinds.Orion.Core.Common.ModulesCollector.ReloadModuleInfo() +86 SolarWinds.Orion.Core.Common.ModulesCollector..cctor() +172 [TypeInitializationException: The type initializer for 'SolarWinds.Orion.Core.Common.ModulesCollector' threw an exception.] SolarWinds.Orion.Core.Common.ModulesCollector.IsModuleInstalled(String moduleTag) +0 SolarWinds.Orion.Web.OrionModuleManager.InitModules() +2642 SolarWinds.Orion.Web.OrionModuleManager.Initialize(String orionDirectory, String appName) +115 SolarWinds.Orion.Web.OrionModuleManager.Initialize() +88 ASP.global_asax.Application_Start(Object sender, EventArgs e) +167 [HttpException (0x80004005): The type initializer for 'SolarWinds.Orion.Core.Common.ModulesCollector' threw an exception.] System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +481 System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +118 System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +176 System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +349 System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +305 [HttpException (0x80004005): The type initializer for 'SolarWinds.Orion.Core.Common.ModulesCollector' threw an exception.] System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +658 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +95 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +189 |
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.34249
Critical Value Reached (Percent Loss) Triggering Falsely
Since upgrading from 11.5.0 to 11.5.2, our alert on packet loss has started triggering (and recovering, and triggering, and recovering, ad nauseum). The alert is using the "Critical Value Reached (Percent Loss)" and "Warning Value Reached (Percent Loss)" (aka SWQL E0.[PercentLossThreshold].[IsLevel2State]).
The nodes are reporting 0% loss. There is nothing in the graph, and even in the trigger of the alert I send out ${Node.PercentLoss}, which is always showing 0%.
I've opened ticket 821972 on Tuesday, but I think with the all the releases, support is very backed up, so the case hasn't even been started.
Anybody using thresholds for alerting? Are you experiencing the same issues?
When does "Unlimited" not actual mean "Unlimited"?
I have the unlimited license for NPM and a number of other products. I'm finding out that the unlimited license doesn't actually mean unlimited, and I want to make sure my understanding is correct.
The poller that's included with the unlimited license to NPM is limited to 12,000 elements before it starts slowing down the polling interval. I'm not clear why it does that, as it doesn't seem to be reaching any hardware limit. My server has plenty of available CPU, RAM, and network I/O. Further, it seems that if I do buy an additional poller, I can install it on the same box as a "stackable" polling engine (at least for NPM). This is pretty solid evidence that it's a software coded limitation, is it not?
Is this "unlimited" the same as the cellular provider's "unlimited"?
The Ultimate CPU Alert...For Linux - Reloaded!
As promised in The Ultimate CPU Alert - Reloaded! this post details the steps required to modify As a recap, as our environment grew we started to notice database performance issues. We invested in new hardware to get us from RAID5 to RAID10 on SSDs and, while performance definitely increased, we still saw significant wait times. How much wait? We often saw 22 hours of wait during each 60 minute period. Database Performance Analyzer provided the insight into the queries that were the top blockers -- and and were consistently in the top 25 with the latter almost always number 1 or 2 on the list.
NOTE: The queries posted below use a couple of node custom properties. You should create a n_CPUCount but do not populate it and, if you want to use the queries as pasted below, a n_CPUCrit which is a whole number threshold between 1 and 100 for when you want the CPU alert to trigger. The logic below assumes a 95% threshold if n_CPUCrit isn't populated.
Let's stop for a moment to ask why. The
and both relied on a INNER JOIN query that was executed every time the alert logic was checked and, because we all use custom SQL reset queries (you do don't you?), when the alert status is checked. As a recap, this is this is the logic that is used. See that CPUMultiLoad table? Our table had 41 million entries! That's a pretty huge table scan for every execution.
INNER join (select c1.NodeID, COUNT(c1.CPUIndex) as CPUCount
from (select DISTINCT CPUMultiLoad.NodeID, CPUMultiLoad.CPUIndex
from CPUMultiLoad) c1
group by c1.NodeID) c2 on Nodes.NodeID = c2.NodeID
Just like with the Windows alert the foundation of the plan is pre-calculating the CPUCount for the query using a stored procedure in our DB. This is what ciulei came up with for us. It calculates the CPU count (note the +1 since CPUIndex starts with 0) and writes that value into the nodes table to a custom property called n_CPUCount. Create the custom property first then schedule the stored procedure to run at an interval that suits your environment. We run our procedure once per day and we only check for data in the last 24 hours.
SELECTDISTINCT NodeID
,MAX(CPUIndex)+1 AS CPUCount
INTO #CPUCount
FROM CPUMultiLoad
WHEREDATEDIFF(hh,TimeStampUTC,GETDATE())<= 24
GROUPBY NodeID;
UPDATE n
SET n.n_CPUCount = t.CPUCount
FROM Nodes n
JOIN #CPUCOUNT t ON n.NodeID = t.NodeID;
DROPTABLE #CPUCount;
To take advantage of the new nodes.n_CPUCount you will need to modify both the trigger and reset queries for the Linux CPU alert. Note that we forced a check for n_CPUCount IS NOT NULL. Why? We have some nodes (usually network hardware) that is accessible via SNMP but doesn't not provide CPU statistics. We're working on resolving those with custom pollers that we'll assign to specific hardware but without CPU data in the CPUMultiLoad table there is no way to gather the number of CPUs.
(Remember that both the 32-bit Alert Manager and the web-based Alert Manager both insert some mandatory text. I've posted the entire text below so that you can just copy and paste into SSMS for testing purposes. If you are pasting into Alert Manager start with the INNER JOIN APM_AlertsAndReportsData... query.)
One last heads up -- we use LoadAverage15Min in our query. Whatever custom poller you defined when you built the original
should be referenced in your query below. The names must match -- spelling counts folks!
EDIT: Notice the /*SplitMarker*/ The text before this marker is unalterable and is predefined by the objects that you are building your alert against, in this case a custom poller alert. Anything after that splitmarker is fair game and can be changed.
Trigger Query
SELECTCustomPollerAssignmentView.CustomPollerAssignmentIDASNetObjectID,CustomPollerAssignmentView.AssignmentNameASName
FROM ((CustomPollerStatusINNERJOINCustomPollerAssignmentViewON (CustomPollerStatus.CustomPollerAssignmentID=CustomPollerAssignmentView.CustomPollerAssignmentID))
LEFTOUTERJOINCustomPollersON (CustomPollerAssignmentView.CustomPollerID=CustomPollers.CustomPollerID)) INNERJOINNodesON (CustomPollerAssignmentView.NodeID=Nodes.NodeID)
/*SplitMarker*/
WHERE (
(Nodes.OwnerGroup='LINUX')AND
(Nodes.Prod_State='PROD')AND
(Nodes.n_mute= 0)AND
(Nodes.n_CPUCountISNOTNULL)AND
(CustomPollers.UniqueName='loadAverage15Min')AND
(
((CustomPollerStatus.Rate>=(n_CPUCount))
AND
(Nodes.CPU_CritISNULL)AND
(Nodes.CPULoad>= 95)
)
OR
(
(CustomPollerStatus.Rate>=(n_CPUCount))AND
(Nodes.CPU_CritISNOTNULL)AND
(Nodes.CPULoad>=Nodes.CPU_Crit))
)
)
Reset Query
SELECTCustomPollerAssignmentView.CustomPollerAssignmentIDASNetObjectID,CustomPollerAssignmentView.AssignmentNameASName
FROM ((CustomPollerStatusINNERJOINCustomPollerAssignmentViewON (CustomPollerStatus.CustomPollerAssignmentID=CustomPollerAssignmentView.CustomPollerAssignmentID))
LEFTOUTERJOINCustomPollersON (CustomPollerAssignmentView.CustomPollerID=CustomPollers.CustomPollerID))
INNERJOINNodesON (CustomPollerAssignmentView.NodeID=Nodes.NodeID)
/*SplitMarker*/
WHERE (
(Nodes.OwnerGroup='LINUX')AND
(Nodes.Prod_State='PROD')AND
(Nodes.n_mute= 0)AND
(CustomPollers.UniqueName='loadAverage15Min')AND
(
((CustomPollerStatus.Rate<(n_CPUCount))
OR
((Nodes.CPU_CritISNULL)AND(Nodes.CPULoad< 95))
)
OR
((CustomPollerStatus.Rate<(n_CPUCount))AND
((Nodes.CPU_CritISNOTNULL)AND
(Nodes.CPULoad<Nodes.CPU_Crit)))
)
)
That's it! If you roll out these changes your DB will be much happier. When we implemented the changes to the 40% What is the moral of the story? For peak application performance you *must* be watching your database and tuning for performance. If we can do it, so can you!
and we reduced waits 40% on our DB. Read that again -- we reduced waits by
EDIT: After our initial exuberance we realized that the actual improvements in wait times was not 150% but closer to 40%. Most notable, however, was the change in the types of waits and the sources of blocking that caused those waits. Our waits shift from about 40% LCK_M_IX waits to CPU waits. We also noticed an uptick in the amount of ASYNC_NETWORK_IO waits. This is to be expected as we do have a number of polling engines in another data center in another state. Most important was our change in blockers. Initially we had seen the Windows CPU alert as one of the top blockers in every hour.
EDIT2: zackm pointed out that my cut and paste skills need some work. (Thanks Zack!) I've updated both the trigger and reset queries for this Linux alert. Make sure you have all of the custom properties (Prod_State, n_mute, n_CPUCount, etc.) or else you'll need to start trimming. n_CPUCount and CPU_Crit are mandatory for the query to work as designed. The other custom properties can be removed without impact.
EDIT3:zackm noted that the INNER JOIN APM_AlertsAndReportsData on (Nodes.NodeID = APM_AlertsAndReportsData.NodeId) after the /*SplitMarker*/ was an artifact from our old style alert and is not required. Not only that but it makes the results much cleaner. Extra points for Zack!
95th percentile interface traffic M-F only during business hours
I've been searching all over THWACK for this and have found multiple posts but they all seem to have no responses or responses that are outdated. I would like to modify the built in web reporting version of the 90/95/99th pecentile traffic report to give me this information based on M-F, 7am-7pm time frames for only 95th percentile. I currently have the following:
DECLARE @StartDate DateTime
DECLARE @EndDate DateTime
SET @StartDate = ${FromTime}
SET @EndDate = ${ToTime}
SELECT Interfaces.InterfaceId,
Nodes.NodeID,
Nodes.Caption AS NodeName,
Interfaces.Caption AS Interface_Caption,
Maxbps_In95,
Maxbps_Out95
FROM Nodes
INNER JOIN Interfaces ON Nodes.NodeID = Interfaces.NodeID
INNER JOIN (
SELECT InterfaceID,
dbo.GetInBpsPercentile(InterfaceID, @StartDate, @EndDate,95) AS Maxbps_In95,
dbo.GetOutBpsPercentile(InterfaceID, @StartDate, @EndDate,95) AS Maxbps_Out95,
FROM InterfaceTraffic
WHERE InterfaceTraffic.DateTime >= @StartDate AND InterfaceTraffic.DateTime <= @EndDate
GROUP BY InterfaceID
)
TrafficStat ON Interfaces.InterfaceID = TrafficStat.InterfaceID
WHERE Nodes.Caption LIKE '%[rR][-_]%' AND (
(Interfaces.Caption LIKE '%DS1IT%') OR
(Interfaces.Caption LIKE '%ETH100%') OR
(Interfaces.Caption LIKE '%MPLS%') OR
(Interfaces.Caption LIKE '%CID%') OR
(Interfaces.Caption LIKE '%CTL%') OR
(Interfaces.Caption LIKE '%Century%') OR
(Interfaces.Caption LIKE '%Link%')
)
Basically all that is remaning is to put in the M-F 7am-7pm section. Can anyone assist with this?
Custom SQL...Graph?
Greetings Gentlemen,
This might take a minute to explain, so please bear with me.
So I've got Avaya phones. This obviously leads to some compatibility issues with SolarWinds, so I have to do some magical things to make polling worth it for this system. One of the things I've gone and done now is create UnDP's that return a table that contains the current status of each active channel on each individual trunk from our Avaya systems, with a separate UnDP per trunk.
What I wanted from this information is basically a poll to find the quantity of ACTIVE channels, per trunk, per poll period. So here's the query I built to achieve these results:
# NOTE: Line 6, '%AvayaTrunk#%', # is substituted on a trunk-by-trunk basis to specify desired results.
SELECT DATEADD(MINUTE, DATEDIFF(minute, 0, cpsd.DateTime),0) AS Time, count(CASE WHEN cpsd.Status LIKE '%active%' THEN 1 ElSE 0 END) AS Quantity FROM [dbo].[CustomPollerStatistics_Detail] AS cpsd JOIN CustomPollerAssignment AS cpa ON cpsd.CustomPollerAssignmentID = cpa.CustomPollerAssignmentID JOIN CustomPollers AS cp ON cpa.CustomPollerID = cp.CustomPollerID WHERE cp.UniqueName LIKE '%AvayaTrunk#%' AND cpsd.Status LIKE '%active%' GROUP BY cpsd.DateTime ORDER BY cpsd.DateTime DESC ;
I then threw this in the web based Report Writer and got some fancy graphs that give me exactly what I want.
BUT...
How can I display this data as a graph on the node's page? Or for that matter, even a summary page?
1. The web-based Report Writer is not an option at all for custom resources, thus I cannot apply this report as a resource on my Avaya node or on a summary page...I can only retrieve this data via the actual web report.
2. The application Report Writer can be used as a custom resource, but as far as I know, I cannot graph the results, and can only retrieve them as a table.
3. Creating a custom SWQL resource also nets me a simple table, and not a graph.
Thanks in advance for any input you can provide!
BGP Updates - Cisco
Applying views based on custom fields
IN our environment we have a big issue with the NPM vendor mapping capability in that quite a few of the devices come up as unknown or in a generic net-snmp grouping, also we have firewalls coming up as Linux etc. This creates a few issues with regard to reporting and especially where applying views to device types is concerned.
What we would like to be able to do is override the discovered device type or failing that we would like to be able to apply views based on a custom field value. Is this possible?
unmanaged node - still generating alerts?
Adding DetailsURL to web-based SQL report
I am having a bit of a hard time with the DetailsURL variable on web-based reports. When I add it to my SQL script, I got InvalidQuery error message. I already checked Thwack and the Orion online help and documents but I could not find the answer. Is there a video or a document that shows several examples of how to use DetailsURL on a web-based SQL report? Else, does anyone have any guidance? Thanks in advance.