Quantcast
Channel: THWACK: All Content - Network Performance Monitor
Viewing all 21870 articles
Browse latest View live

Some Things Solarwinds Admins Can't Live Without

$
0
0

Here are some SQL queries as doing weekly Solarwinds Maintenance and creating custom alerts that we as an MSP can't live without. I will most likely update this often but here are some I store in my evernote for now but I will update this frequently when i start looking through everything I use.

 

This first one isn't a SQL query but good for everyone use FoE to know:

 

 

From a command prompt :

cd C:\Program Files\SolarWinds\FoE\r2\bin\


nfpktfltr getstate

 

The failover should be set to Filter and the active should be PassThru


The nfpktfltr has a lot of good options to play with including forcing a set for filter or passthru in emergencies

 

Checking Ghost or Unknown Interfaces


selectInterfaceName,Nodes.CaptionfromInterfaces

 

innerjoinNodesonNodes.NodeID=Interfaces.NodeID

whereInterfaces.Status=0

 

Checking Nodes Not in Groups

 

 

selectCaption fromNodes

 

where

  not Caption in(

   SELECTdistinctFullName

   FROM ContainerMemberSnapshots

   where EntityDisplayName ='Node'

)


Checking Total Number of Elements for Custom Value


 

selectCOUNT(*)fromNodes

 

LEFTjoinVolumesonVolumes.NodeID=Nodes.NodeID

LEFTjoinInterfacesonInterfaces.NodeID=Nodes.NodeID

LEFTJOINAPM_ApplicationonAPM_Application.NodeID=Nodes.NodeID

whereCustom= 'somethinghere'

 

Getting IP list for Weekly Sonar Discovery by polling engine

 

selectIP_Address,Caption from Nodes

 

where

ObjectSubType ='SNMP'

andEngineID =_Engine ID Here_

andStatus<>'9

 

To get a list of your current engines with their ID number just simply run

selectEngineID,ServerName,IP fromEngines

Cleaning up bad hardware alerts manually

 

DECLARE@NodeID int

 

SET@NodeID =_NODE ID HERE_

DELETEFROMAPM_HardwareInfo WHERE NodeID =@NodeID

DELETEFROMAPM_HardwareCategoryStatus WHERE NodeID =@NodeID

DELETEFROMAPM_HardwareItem WHERE NodeID =@NodeID



Alerting Variables for Statistical Data


 

${SQL:selectc.Name from APM_DynamicEvidenceColumnSchema c

 

innerjoinAPM_DynamicEvidence_DetailData d on c.ID =d.ColumnSchemaID andc.ComponentID = ${ComponentID}

wherec.ThresholdWarning < d.NumericData groupby c.ID,c.Name} isinWARNING at

${SQL:selectMAX(d.NumericData)from APM_DynamicEvidenceColumnSchema c

innerjoinAPM_DynamicEvidence_DetailData d onc.ID =d.ColumnSchemaID andc.ComponentID = ${ComponentID}

where c.ThresholdWarning <d.NumericData groupbyc.ID,c.Name }



Alerting URL on HTTP Components that is being pulled

This can be used to get any of the values simply changing the [Key] condition to whatever your looking for. Also make sure you set your component type in your trigger condition to 6 to avoid non-http applications sending this alert off.


${SQL:selectValue fromAPM_ComponentSetting

  where [Key] ='Url'and ComponentID ='${ComponentID}'}




*****NEW****** Nice Heads up Display Board

 

The below strictly work under the condition that you have your alerts writing to NetPerfMon and you DO NOT SET the title of the alert action for Write to NetPerfMon and let solarwinds default it to the message you typed in when you save it with a blank title.


Given all the new upgrades and movements of tables and db schema changes recently with NPM and the introduction of SRM I've come up with new Critical and Action item scripts.

I've also moved them to a Stored Procedure as well instead of a view or report this is much faster, more accurate and easily executed.


To add these to a view or resource in your web console you just need set the resource as an Advanced Database Query select SQL for the Query Type and put in the execute for the stored procedure as the screen shot below


ss.PNG


This is the script for Critical Items (This also gives a status of how long its been critical)


CREATEprocedure [dbo].[sp_GetDownItems]

as

begin

      SETNOCOUNTON;

      declare @i int;

      declare @numrows int;

      declare @curNode int;

      declare @curAlert nvarchar(255);

      declare @object nvarchar(max);

      declare @entity varchar(255);

      declare @objectId nvarchar(255);

      declare @srmtable varchar(255);

      declare @srmCol nvarchar(255);

      declare @colParam nvarchar(500);

      declare @colquery nvarchar(max);

      declare @tblParam nvarchar(500);

      declare @tblQuery nvarchar(max);

      declare @customerdowns table (

            vimg nvarchar(255)null,

            simg nvarchar(255)null,

            NodeName nvarchar(255)null,

            Issue nvarchar(max)null,

            IP_Address nvarchar(255)null,

            TotalDownTime nvarchar(255)null,

            AlertTime datetimenull

      );

      declare @tempTable table (

            id intPrimaryKeyidentity(1,1),

            alertId bigint,

            nodeid bigint,

            entity nvarchar(255),

            objectid nvarchar(255)

      );

     

      insert @tempTable select aa.AlertActiveID,ao.RelatedNodeId,ao.EntityType,ao.EntityNetObjectId from AlertActive as aa innerjoin AlertObjects as ao on aa.AlertObjectID = ao.AlertObjectID where aa.Acknowledged ISNULL

      set @numrows =(selectCOUNT(*)from @tempTable)

      set @i = 1

      if @numrows > 0

            while(@i <= @numrows)

            begin

                  set @curNode =(select nodeid from @tempTable where id = @i)

                  set @curAlert =(select alertId from @tempTable where id = @i)

                  if (@curNode ISNOTNULL)

                    begin

                        insert @customerdowns

                              select'<img src=/NetPerfMon/images/Vendors/'+ VendorIcon +'/>'as vimg

                                    ,'<img src=/NetPerfMon/images/small-'+ GroupStatus +'/>'as simg

                                    ,'<a href=/Orion/NetPerfMon/NodeDetails.aspx?NetObject=N%3a'+cast(n.NodeID asvarchar(255))+'>'+ n.Caption +'</a>'as NodeName

                                    ,SUBSTRING(ahv.Message,charindex(':', ahv.Message)+2,LEN(ahv.Message))as Issue

                                    ,IP_Address,

                                    convert(varchar(10),(DATEDIFF(d,0,GETDATE()-DateAdd(HH,-4,asv.TriggeredDateTime))))+' Days '+

                                          convert(varchar(10),(DATEDIFF(HH,0,GETDATE()-DateAdd(HH,-4,asv.TriggeredDateTime))% 24 ))+' Hours '+

                                          convert(varchar(10),(DATEDIFF(mi,0,GETDATE()-DateAdd(HH,-4,asv.TriggeredDateTime))% 60))+' Mins 'as'Total_Down_Time'

                                    ,asv.TriggeredDateTime

                              from AlertActive as asv WITH(NOLOCK)

                              innerjoin(selectMAX(CAST(AlertRefID asvarchar(255)))AlertRefID,MAX(ObjectType)ObjectType,MAX(AlertHistoryID)AlertHistoryID,MAX(RelatedNodeId)RelatedNodeId,MAX(ActionTypeID)ActionTypeID,MAX(EventTypeWord)EventTypeWord,MAX(Message)Message,MAX(EntityCaption)EntityCaption,AlertActiveID from AlertHistoryView where ActionTypeID ='WriteToNPMEventLog'

                                    and EventTypeWord ='ActionSucceeded'Groupby AlertActiveID)as ahv on (asv.AlertActiveID = ahv.AlertActiveID)

                              innerjoin Nodes as n WITH(NOLOCK)on n.NodeID = ahv.RelatedNodeId

                              Leftouterjoin APM_HardwareInfo as hw WITH(NOLOCK)on hw.NodeID = n.NodeID

                              WHERE asv.AlertActiveID = @curAlert

                                   AND (n.Status= 2 AND ahv.MessageLIKE'%down%'))

                    end

                  if (@curNode ISNULL)

                   begin

                        declare @newCol nvarchar(255)

                        createtable #tmp (

                              colName nvarchar(255)null

                        )

 

                        set @object =(select objectid from @tempTable where id = @i);

                        set @entity =(select entity from @tempTable where id = @i);

                        set @objectId =SUBSTRING(@object,CHARINDEX(':',@object)+1,len(@object));

                        set @srmtable ='SRM_'+REVERSE(SUBSTRING(REVERSE(@entity),0,CHARINDEX('.',REVERSE(@entity))));

                       

                        select @colquery =N'select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = '''+ @srmtable +''' and ORDINAL_POSITION = 1';

                        SET @colParam =N'@retvalOUT nvarchar(255) OUTPUT';

                        insertinto #tmp (colName)execsp_executesql @colquery, @colParam, @retvalOUT=@srmCol OUTPUT;

                       

                        set @newCol =(select colName from #tmp);

                        select @tblQuery =N'select n.Vendor as vimg

                                                            ,''<img src=/Orion/StatusIcon.ashx?entity=Orion.SRM.StorageArrays&status='' + cast(n.Status as varchar(255)) + ''&size=small />'' as simg

                                                            ,''<a href=/Orion/SRM/ArrayDetailsView.aspx?NetObject=SMSA%3a'' + cast(n.StorageArrayID as varchar(255)) + ''>'' + n.UserCaption + ''</a>'' as NodeName

                                                            ,SUBSTRING(ahv.Message,charindex('':'', ahv.Message)+2,LEN(ahv.Message)) as Issue

                                                            ,IPAddresses,

                                                            convert(varchar(10), (DATEDIFF(d,0,GETDATE() - DateAdd(HH,-4,asv.TriggeredDateTime)))) + '' Days '' +

                                                                  convert(varchar(10), (DATEDIFF(HH,0,GETDATE() - DateAdd(HH,-4,asv.TriggeredDateTime)) % 24 )) + '' Hours ''+

                                                                  convert(varchar(10), (DATEDIFF(mi,0,GETDATE()- DateAdd(HH,-4,asv.TriggeredDateTime)) % 60)) + '' Mins '' as ''Total_Down_Time''

                                                            ,asv.TriggeredDateTime

                                                            from AlertActive as asv WITH(NOLOCK)

                                                            inner join (select MAX(CAST(AlertRefID as varchar(255)))AlertRefID,MAX(ObjectType)ObjectType,MAX(AlertHistoryID)AlertHistoryID,MAX(RelatedNodeId)RelatedNodeId,MAX(ActionTypeID)ActionTypeID,MAX(EventTypeWord)EventTypeWord,MAX(Message)Message,MAX(EntityCaption)EntityCaption,AlertActiveID from AlertHistoryView where ActionTypeID = ''WriteToNPMEventLog''

                                                                  and EventTypeWord = ''ActionSucceeded'' Group by AlertActiveID) as ahv on (asv.AlertActiveID = ahv.AlertActiveID)

                                                            inner join '+ @srmtable +' srmt on srmt.'+ @newCol +' = '''+ @objectId +'''

                                                            inner join SRM_StorageArrays n on n.StorageArrayID = srmt.StorageArrayID

                                                            inner join SRM_StorageArrayCustomProperties srmsac on srmsac.StorageArrayID = n.StorageArrayID

                                                            WHERE asv.AlertActiveID = '+ @curAlert +'

                                                                  AND ((ahv.AlertRefID = ''69157a99-c259-4353-87f6-8a44b7f08cc9'')

                                                                  OR (n.Status = 2 AND ahv.Message LIKE ''%down%''))';

                        set @tblParam =N'@retvalOUT nvarchar(255) OUTPUT';

                        insertinto @customerdowns execsp_executesql @tblQuery, @tblParam, @retvalOUT=@srmCol OUTPUT;

           

                       

                        droptable #tmp;

                  end

                       

                  set @i = @i + 1

            end

           

      select*from @customerdowns orderby AlertTime desc

end




This is the script for Action Items

 

CREATEprocedure [dbo].[sp_GetActionItems]

as

begin

      SETNOCOUNTON;

      declare @i int;

      declare @numrows int;

      declare @curNode int;

      declare @curAlert nvarchar(255);

      declare @object nvarchar(max);

      declare @entity varchar(255);

      declare @objectId nvarchar(255);

      declare @srmtable varchar(255);

      declare @srmCol nvarchar(255);

      declare @colParam nvarchar(500);

      declare @colquery nvarchar(max);

      declare @tblParam nvarchar(500);

      declare @tblQuery nvarchar(max);

      declare @internalaction table (

            vimg nvarchar(255)null,

            simg nvarchar(255)null,

            NodeName nvarchar(255)null,

            Issue nvarchar(max)null,

            IP_Address nvarchar(255)null,

            AlertTime datetimenull

      );

      declare @tempTable table (

            id intPrimaryKeyidentity(1,1),

            alertId bigint,

            nodeid bigint,

            entity nvarchar(255),

            objectid nvarchar(255),

            fixedId bigint

      );

     

      insert @tempTable select aa.AlertActiveID,ao.RelatedNodeId,ao.EntityType,ao.EntityNetObjectId,REVERSE(SUBSTRING(REVERSE(ao.RealEntityUri),0,CHARINDEX('=',REVERSE(ao.RealEntityUri))))as FixID from AlertActive as aa innerjoin AlertObjects as ao on aa.AlertObjectID = ao.AlertObjectID where aa.Acknowledged ISNULL

      set @numrows =(selectCOUNT(*)from @tempTable)

      set @i = 1

      if @numrows > 0

            while(@i <= @numrows)

            begin

                  set @curNode =(select nodeid from @tempTable where id = @i)

                  set @curAlert =(select alertId from @tempTable where id = @i)

                  if (@curNode ISNOTNULL)

                    begin

                        insert @internalaction

                              select'<img src=/NetPerfMon/images/Vendors/'+ VendorIcon +'/>'as vimg

                                          ,'<img src=/NetPerfMon/images/small-'+ GroupStatus +'/>'as simg

                                          ,'<a href=/Orion/NetPerfMon/NodeDetails.aspx?NetObject=N%3a'+cast(n.NodeID asvarchar(255))+'>'+ n.Caption +'</a>'as NodeName

                                          ,SUBSTRING(ahv.Message,charindex(':', ahv.Message)+2,LEN(ahv.Message))as Issue

                                          ,IP_Address

                                          ,DATEADD(HH,-4,TriggeredDateTime)as AlertTime

                              from AlertActive as asv WITH(NOLOCK)

                              innerjoin(selectMAX(CAST(AlertRefID asvarchar(255)))AlertRefID,MAX(ObjectType)ObjectType,MAX(AlertHistoryID)AlertHistoryID,MAX(RelatedNodeId)RelatedNodeId,MAX(ActionTypeID)ActionTypeID,MAX(EventTypeWord)EventTypeWord,MAX(Message)Message,MAX(EntityCaption)EntityCaption,AlertActiveID from AlertHistoryView where ActionTypeID ='WriteToNPMEventLog'

                                    and EventTypeWord ='ActionSucceeded'Groupby AlertActiveID)as ahv on (asv.AlertActiveID = ahv.AlertActiveID)

                              innerjoin Nodes as n WITH(NOLOCK)on n.NodeID = ahv.RelatedNodeId

                              Leftouterjoin APM_HardwareInfo as hw WITH(NOLOCK)on hw.NodeID = n.NodeID

                              WHERE asv.AlertActiveID = @curAlert

                                    AND n.StatusNOTIN(2,9)

                    end

                  if (@curNode ISNULL)

                   begin

                        declare @newCol nvarchar(255)

                        createtable #tmp (

                              colName nvarchar(255)null

                        )

 

                        set @object =(select objectid from @tempTable where id = @i);

                        set @entity =(select entity from @tempTable where id = @i);

                        set @objectId =SUBSTRING(@object,CHARINDEX(':',@object)+1,len(@object));

                        if (LEN(@objectId)<= 0)

                              begin

                                    set @objectId =(select fixedId from @tempTable where id = @i);

                              end

                        set @srmtable ='SRM_'+REVERSE(SUBSTRING(REVERSE(@entity),0,CHARINDEX('.',REVERSE(@entity))));

                       

                        select @colquery =N'select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = '''+ @srmtable +''' and ORDINAL_POSITION = 1';

                        SET @colParam =N'@retvalOUT nvarchar(255) OUTPUT';

                        insertinto #tmp (colName)execsp_executesql @colquery, @colParam, @retvalOUT=@srmCol OUTPUT;

                       

                        set @newCol =(select colName from #tmp);

                        select @tblQuery =N'select n.Vendor as vimg

                                                            ,''<img src=/Orion/StatusIcon.ashx?entity=Orion.SRM.StorageArrays&status='' + cast(n.Status as varchar(255)) + ''&size=small />'' as simg

                                                            ,''<a href=/Orion/SRM/ArrayDetailsView.aspx?NetObject=SMSA%3a'' + cast(n.StorageArrayID as varchar(255)) + ''>'' + n.UserCaption + ''</a>'' as NodeName

                                                            ,SUBSTRING(ahv.Message,charindex('':'', ahv.Message)+2,LEN(ahv.Message)) as Issue

                                                            ,IPAddresses

                                                            ,DATEADD(HH,-4,TriggeredDateTime) as AlertTime

                                                      from AlertActive as asv WITH(NOLOCK)

                                                      inner join (select MAX(CAST(AlertRefID as varchar(255)))AlertRefID,MAX(ObjectType)ObjectType,MAX(AlertHistoryID)AlertHistoryID,MAX(RelatedNodeId)RelatedNodeId,MAX(ActionTypeID)ActionTypeID,MAX(EventTypeWord)EventTypeWord,MAX(Message)Message,MAX(EntityCaption)EntityCaption,AlertActiveID from AlertHistoryView where ActionTypeID = ''WriteToNPMEventLog''

                                                            and EventTypeWord = ''ActionSucceeded'' Group by AlertActiveID) as ahv on (asv.AlertActiveID = ahv.AlertActiveID)

                                                      inner join '+ @srmtable +' srmt on srmt.'+ @newCol +' = '''+ @objectId +'''

                                                      inner join SRM_StorageArrays n on n.StorageArrayID = srmt.StorageArrayID

                                                      inner join SRM_StorageArrayCustomProperties srmsac on srmsac.StorageArrayID = n.StorageArrayID

                                                      WHERE asv.AlertActiveID = '''+ @curAlert +'''

                                                            AND n.Status NOT IN (2,9)';

                        set @tblParam =N'@retvalOUT nvarchar(255) OUTPUT';

                        insertinto @internalaction execsp_executesql @tblQuery, @tblParam, @retvalOUT=@srmCol OUTPUT;

           

                       

                        droptable #tmp;

                  end

                       

                  set @i = @i + 1

            end

           

      select*from @internalaction orderby AlertTime desc

end







Good View to display all assets on monitoring including whats in SRM


This we use for our integration to our CRM System, this is can have many applications though. You might not need all the casting we did this for the CRM sync side.


First this view relays on a quick function we created to translate the real bytes to mb to read it better i couldn't find a built in function in solarwinds to do it so here is that function first.

createfunction [dbo].[convertBtoMb] (@BSize asbigint)

returnsbigint

as

begin

      declare @MBSize bigint

      set @MBSize = @BSize/1024/1024

      return @MBSize

end

 

 

 

Now this is our view that uses the above function to translate the real bytes as well.



CREATEview [dbo].[SWAssetSyncView] as (

 

select

      cast(CRM_Account asnvarchar(20))as AccountNumber,

      cast('NPM'asnvarchar(3))as SourceType,

      n.NodeID as MachineID,

      cast(n.AssetType asvarchar(11))as AssetType,

      cast(SUBSTRING(Caption,CHARINDEX('-',Caption)+1,LEN(Caption))asnvarchar(80))as ComputerName,

      cast(CASEWHEN si.HardwareSerialNumber ISNOTNULLTHEN si.HardwareSerialNumber ELSE hi.ServiceTag ENDasnvarchar(201))as SystemSerialNumber,

      cast(LEFT(ni.MACAddress,2)+'-'+SUBSTRING(ni.MACAddress,3,2)+'-'+SUBSTRING(ni.MACAddress,5,2)+'-'+SUBSTRING(ni.MACAddress,7,2)+'-'+SUBSTRING(ni.MACAddress,9,2)+'-'+SUBSTRING(ni.MACAddress,11,2)asnvarchar(40))as MACAddress,

      cast(SysNameasnvarchar(255))as dnsComputerName,

      cast(si.Domain asnvarchar(64))as Domain,

      cast(IP_Address asnvarchar(20))as IpAddress,

      cast(PublicIP asnvarchar(20))as PublicIP,

      cast(ni.Gateway asnvarchar(20))as DefaultGateway,

      cast(CASEWHEN si.Manufacturer ISNOTNULLTHEN si.Manufacturer ELSECASEWHEN hi.Manufacturer ISNOTNULLTHEN hi.Manufacturer ELSE n.Vendor ENDENDasnvarchar(256))as Manufacturer,

      cast(CASEWHEN si.Model ISNOTNULLTHEN si.Model ELSE hi.Model ENDasnvarchar(256))as ProductName,

      dbo.convertBtoMb(si.TotalMemoryB)as MemorySize,

      cast(si.MemorySlotsCount asvarchar(100))as MemorySlots,

      cast(p.Processor asnvarchar(max))as Processor,

      cast(p.ProcessorType asnvarchar(max))as ProcessorType,

      cast(p.ProcessorVersion asnvarchar(max))as ProcessorVersion,

      cast(p.ProcessorSpeed asvarchar(24))as ProcessorSpeed,

      cast(n.Vendor asnvarchar(64))as OSType,

      cast(CASEWHEN si.OperatingSystem ISNOTNULLTHEN si.OperatingSystem ELSE n.IOSImage ENDasnvarchar(150))as OSInfo,

      cast(CASEWHEN si.OSVersion ISNOTNULLTHEN si.OSVersion ELSE n.IOSVersion ENDasnvarchar(132))as ServicePack,

      n.LastSync as LastCheckIn,

      cast(si.LastLoggedInUser asnvarchar(100))as LastLoginName,

      dbo.convertBtoMb(h.TotalSize)as TotalSize,

      h.HardDriveCount as NumberOfDrives,

      cast(si.Manufacturer asnvarchar(200))as WarrantyProvider,

      si.WarrantyDate as WarrantyEndDate

from Nodes n

leftjoin AssetInventory_ServerInformationView si WITH(NOLOCK)on n.NodeID = si.NodeID

leftjoin APM_HardwareInfo hi on hi.NodeID = n.NodeID

leftjoin(select Gateway,UPPER(REPLACE(MACAddress,':',''))as MACAddress,IPAddress from AssetInventory_NetworkInterface WITH(NOLOCK)) ni on ni.IPAddress = n.IP_Address

leftjoin(

      selectMAX(NodeID)as NodeID,MAX(Caption)as Processor,MAX(Model)as ProcessorType,MAX(Stepping)as ProcessorVersion,CAST(MAX(CAST(SpeedMhz asvarchar))+' MHz'asvarchar)as ProcessorSpeed from AssetInventory_ProcessorView WITH(NOLOCK)groupby NodeID

      ) p on n.NodeID = p.NodeID

leftjoin(

      selectMAX(NodeID)as NodeID,Count(NodeID)as HardDriveCount,SUM(CapacityB)as TotalSize from AssetInventory_HardDrive WITH(NOLOCK)GROUPBY NodeID

      ) h on h.NodeID = n.NodeID

where ObjectSubType <>'ICMP'

ANDStatus<> 11

 

UNION

 

select

      cast(CRM_Account asnvarchar(20))as AccountNumber,

      cast('SRM'asnvarchar(3))as SourceType,

      srmn.StorageArrayID as MachineID,

      cast(srmc.AssetType asvarchar(11))as AssetType,

      cast(SUBSTRING(UserCaption,CHARINDEX('-',UserCaption)+1,LEN(UserCaption))asnvarchar(80))as ComputerName,

      cast(SerialNumber asnvarchar(201))as SystemSerialNumber,

      cast(NULLasnvarchar(40))AS MACAddress,

      cast(Name asnvarchar(64))as dnsComputerName,

      cast(NULLasnvarchar(64))AS Domain,

      cast(IPAddresses asnvarchar(20))as IpAddress,

      cast(NULLasnvarchar(20))as PublicIP,

      cast(NULLasnvarchar(20))as Gateway,

      cast(Manufacturer asnvarchar(256))as Manufacturer,

      cast(Model asnvarchar(256))as ProductName,

      cast(NULLasbigint)as MemorySize,

      cast(NULLasvarchar(100))as MemorySlots,

      cast(NULLasnvarchar(max))AS Processor,

      cast(NULLasnvarchar(max))AS ProcessorType,

      cast(NULLasnvarchar(max))AS ProcessorVersion,

      cast(NULLasvarchar(24))AS ProcessorSpeed,

      cast(Vendor asnvarchar(64))AS OSType,

      cast(Firmware asnvarchar(150))as OSInfo,

      cast(NULLasnvarchar(132))AS ServicePack,

      LastSync as LastCheckIn,

      cast(NULLasnvarchar(100))AS LastLoginName,

      dbo.convertBtoMB(CapacityRawTotal)  as TotalSize,

      Disks as NumberOfDrives,

      cast(NULLasnvarchar(200))as WarrantyProvider,

      cast(NULLasdatetime)as WarrantyEndDate

from SRM_StorageArrays srmn

innerjoin SRM_StorageArrayCustomProperties srmc on srmn.StorageArrayID = srmc.StorageArrayID

)



That's all I can muster at the moment while trying to get some work done but I will try to update this as often as possible.


Flushing old polling servers

$
0
0

Hi guys,

 

Is there a way to flush old polling servers?

 

On a new install it states that another polling server is active and to make sure everything is up to date on that server before continuing but it no longer exists...

 

I think it's under the impression that i'm adding this new server to a current install, when in fact it's a fresh install.

 

Thanks.

VSS vs. standalone switches

$
0
0

What percentage of all your switch ports approximately comes from stacked and standalone switches?

Network Atlas - Custom Graphics Status LED

$
0
0

Evening All,

 

I have a few custom graphics I want to load in to Network Atlas. However, whenever I do, a green status LED pops up in the bottom right side of the gif. Is there a way to stop this coming up?

 

Thanks in advance

 

Chris

Addin IP Address to the Top 25 Wireless Clients by Traffic Rates over the Last 7 Days report

$
0
0

I would like to add IP address to the Top 25 Wireless Clients by Traffic Rates over the Last 7 Days report. I just have basic SQL knowledge. I believe I need to add a line  to the SELECT statement  but can't find the right syntax. Also can't find the  NPM_NV_WL_REPORT_CLIENTS_V  file in the Database Manager to look for the column name. Any help would be appreciated.

 

Thanks!

Access Points on Down Status

$
0
0

Hi,

I´m looking for any way to create a resource to show me all Access Points in Down status in a NPM page.

Hyperthreading and NPM

DCOM, Event 10028 in Windows System log

$
0
0

Hello, and thanks...

 

Is there a way to prevent log entries in the System log for "Microsoft-Windows-DistributedCom" ID 10028 entries when a windows system managed my NPM/Orion is no longer online?

 

thanks

chris


High Discard Suppression

$
0
0

Hi,

 

I have a number of switches that are showing high level of discards on an interface. This is due to the interface being an AP in STP. so is supposed to be discarding packets.

 

My question is can I suppress the alert in the top 10 chart of Errors & Discards this hour?

 

The interfaces that are supposed to be discarding packets are always in the top 10 so I would miss any interfaces that do genuinely have an issue.

 

Any comments welcome

Maxed out CPU usage caused by high received data?

$
0
0

So we've just upgraded to the newest NPM and NTA and everything installed fine. The server however is being maxed out continuously (95-100%) and it seems like a lot of data is being received by the server every second (between 150-220Mbs). The old version was slow, but never consistently hit such a high CPU load. We don't have all our nodes polling SNMP either only a small percentage, so it doesn't make sense. Would anyone have any idea what could cause such high data and CPU load or what to check?

 

We upgraded from 10.7 so was wondering if anything new had been implemented that could cause these issues...

 

Thanks.

11.5.2 Upgrade Issues (SQL Connections\High CPU)

$
0
0

Hi,

 

I was wondering if anyone up on here could provide some direction with regards to a serious issue we have encountered after we upgraded to NPM 11.5.2.

 

Here are the symptoms in general that we are experiencing:

 

When the associated services are started via the Orion Service Manager CPU on our Orion Server immediately spikes and the web interface becomes unreachable.  I opened a Case with Orion support to document the issue (Case # - 816366).  When checking the associated Application Event Log I find the following event showing up.

 

Exception Connection Timeout Expired.  The timeout period elapsed while attempting to consume the pre-login handshake acknowledgement.  This could be because the pre-login handshake failed or the server was unable to respond back in time.  The duration spent while attempting to connect to this server was - [Pre-Login] initialization=30038; handshake=0;

 

 

Service was unable to open new database connection when requested.

Exception Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.

Connection string - Data Source=BISGSQL118\BISGSQL118;Initial Catalog=XXXXXXX;User ID=XXXXXXXXX;Password=*******;Connect Timeout=20;Load Balance Timeout=120;Application Name=NetFlowService;Workstation ID=BISGAPP118

 

The support folks insist that it is a database issue as there are several Services that cannot connect to the database such as NetFlow and BusinessLayer.  I have worked with both my DBA and Network Engineer to ensure that connectivity has been established.

 

  1. The Network Engineer and I ran a Netstat -an and we definitely see connections coming from our Primary Solarwinds Server

 

  TCP    10.128.194.22:1433     10.128.194.23:58339    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:58906    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:58913    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:58954    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59004    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59030    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59058    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59062    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59075    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59083    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59084    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59099    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59154    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59156    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59164    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59171    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59180    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59188    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59189    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59449    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59601    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59603    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59605    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59607    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59608    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59609    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59610    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59631    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59633    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59637    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59641    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59679    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59716    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59741    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59751    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59753    ESTABLISHED

  TCP    10.128.194.22:1433     10.128.194.23:59756    ESTABLISHED

  2.  Our DBA looked at the Activity Monitor and can see successful connections being made to the Database from the Orion server.

 

3. I am able to run queries on the Database Manager on the primary Solarwinds Server.

 

 

I am fairly convinced that the errors that we are seeing with Connections to the Database are coming from Solarwinds Server.  I am getting a number of dumps from Solarwinds in the Event Logs.  One of which is listed below.

 

Application: SolarWinds.DataProcessor.exe

Framework Version: v4.0.30319

Description: The process was terminated due to an unhandled exception.

Exception Info: System.Data.SqlClient.SqlException

Stack:

Server stack trace:

  at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)

  at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)

  at System.Data.SqlClient.TdsParser.ConsumePreLoginHandshake(Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean& marsCapable)

  at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean withFailover)

  at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover)

  at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout)

  at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance)

  at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData)

  at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)

  at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)

  at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)

  at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)

  at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)

  at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)

  at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)

  at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)

  at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)

  at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)

  at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)

  at System.Data.SqlClient.SqlConnection.Open()

  at SolarWinds.Collector.OrionCommon.DatabaseFunctions.OpenNewDatabaseConnection()

  at SolarWinds.Collector.OrionCommon.SqlHelper.ExecuteReader(SqlCommand command)

  at SolarWinds.Collector.DAL.PollingEngineDAL.<LoadEnginesFor>d__0.MoveNext()

  at System.Linq.Buffer`1..ctor(IEnumerable`1 source)

  at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)

  at SolarWinds.Collector.DAL.PollingEngineDAL.EnumeratePollingEngines()

  at SolarWinds.Collector.DAL.PollingEngineDAL.LoadCurrentEngine()

  at System.Lazy`1.CreateValue()

  at System.Lazy`1.LazyInitValue()

  at System.Lazy`1.get_Value()

  at SolarWinds.Collector.DAL.PollingEngineDAL.GetCurrentEngine()

  at SolarWinds.Collector.PollingPlanStore.ProcessFile(String file)

  at SolarWinds.Collector.PluginStore`1.Refresh()

  at SolarWinds.Collector.PluginStore`1.Initialize(String manifestRootPath)

  at SolarWinds.Collector.PollingPlanStore..ctor(String manifestRootPath, IPollingEngineDAL engineDAL)

  at SolarWinds.Collector.PollingPlanStore.Default(IPollingEngineDAL engineDAL)

  at SolarWinds.Collector.DataProcessor.DataProcessorHost.Start()

  at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)

  at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg)

  at SolarWinds.Collector.Services.CollectorService.InternalStart()

  at System.Threading.ThreadHelper.ThreadStart_Context(System.Object)

  at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)

  at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)

  at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)

  at System.Threading.ThreadHelper.ThreadStart()

 

 

At this point I am looking for any direction or assistance from Solarwinds with regards to what this could be.  I saw someone with a similar issue here:

 

Post orion upgrade getting DB intermittent connectivity(Slowness) issue

 

 

Thanks,

 

Ryan

Group Alerting

$
0
0

Is anyone aware if it is possible to crete alerting on a group of interfaces?

I have created a group for all my uplink interfaces.  I'm having trouble figuring out how to set up a high utilization alert on the group.

When I called support, their solution is to create a custom property, and set up interface alerting as opposed to group alerting.

That seems like a ton of work to go through thousands of interfaces and set a custom property, when I should just be able to set the alerting on a group?

Does anyone know if that's possible?

Does your organization use Mobile Device Management or MDM?

$
0
0

With the explosion of smart mobile devices, both tablets and phones and end users wanting to connect them for email, remote access (VPN), wireless etc. How are you handling this?  Does your organization even see this as a problem?  What level of control are you looking for?  Do you care if they have apps like DropBox are installed on them and uploading corporate files without your knowledge?

 

When I talk about Mobile Device Management I mean specifically things like:

  • Remotely manage and setup end users mobile devices (i.e. Google Android or Apple iOS) with the settings for service such as email access, wireless, VPN etc.
  • Enforce corporate security standards and best practices such as ensuring a pass-code is set or disabling certain feature or functions on the device like the camera
  • Ability to remotely wipe a device if lost or stolen
  • Report on types of devices, the hardware and software installed on them in your environment
  • Track users or stolen devices via GPS

VMware Performance statistics stop collecting (vSphere 6)

$
0
0

I am using NPM to gather VMware statistics from vSphere and from the ESXi hosts themselves.  I have noticed recently that after the upgrade to vSphere 6 CPU and Memory statistics for each host have stopped collecting (See Below)

The vSphere server and the ESXi hosts have the vmware statistics configured and they test properly.  They are also using SNMP and that works properly.

Capture.JPG

ISE Details


api.solarwinds.com [74.115.12.127]

$
0
0

Hi

 

Any one know why my Orion is trying to talk to api.solarwinds.com [74.115.12.127]?

Need help setting up SNMPv3 traps.

$
0
0

Hello True believers,

 

I am trying to set up SNMPv3 traps in the trap viewer and having a wonderful time coming up with a 1000 ways to not get it set correctly.  Where are you able to specify that it is SNMPv3?

 

Thank you in advance and as always a pleasure.

 

Aaron Sonberg

Create maintenance window?

$
0
0

Is there a way to create a regular maintenance window for devices so that they are unmanaged/alerts suppressed during a regular period?

 

I know that one option is the unmanage utility to create a job and schedule it, but I was wondering if there was a way to do it via the web-ui, perhaps based on a property.

 

The idea is to have a regular window for severs so I can schedule updates in SCCM.

Alert based on a table produced from a custom poller

$
0
0

I have been reading through the forums for a while now and can't really find what I am looking for. I am monitoring a Cisco ASA. The ASA supports two VPN tunnels . Both tunnels operate independently and may or may not be up at any given time. I have found a poller (1.3.6.1.4.1.9.9.171.1.2.3.1.7 cikeTunRemoteValue) which when set to return a table, will tell me the IP addresses associated with each tunnel when the tunnel is up. I get one address when one tunnel is up and another address if the other tunnel is up, or both addresses if both tunnels are up. Basically, the returned table could have 0, 1, or 2 values (IPs) returned. I would like to have an alert set up so that when one tunnel is down (one IP address isn't reported on the table), I would get an alert.

 

I thought I had it working at one point by check specifically for the IP address I wanted to monitor. For several days, only the tunnel I wanted alarmed was up, and thus, was the only value returned on the table. However, when both tunnels are up and I have two values returned on the table, my alert fires off as if the tunnel I want monitored isn't up at all.

 

Does anyone have any suggestions on how to set up an alert to parse through a table looking for a value?

Circuit Bandwidth reporting and capacity planning

$
0
0

Has anyone crafted a way to report on the Top 10 or Top 25 circuits (remote locations) with trending and capacity planning in view. I can print out Top XX reports for time periods but seeing trending over time doesn't seem to be available. I've considered number of alerts of a certain type per node, but can't seem to craft a report.

 

Anyone worked on a solution?

Viewing all 21870 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>