Applications Systems
Disabled components still trigger alerts for Other Statuses in older versions of SAM
This article describes the issue when using the older versions of SAM and component status alerts are being fired for components even though the status is set to disabled.
First published date
Last published date
Overview
This article describes how component status alerts may still be triggered for components even though the component status is set as disabled on the application level in earlier versions of SAM.
Components Disabled the Application Level
The following figure shows that alerts are still being triggered even though the component status is disabled at the application level:
Product section
Cause
The IsDisabled flag in APM_Component table is set to NULL
There is no record in APM_CurrentComponentStatus for disabled components so the Status field returns a default value 0 (Unknown) or Last polled value instead of Disabled (27).
The value from the APM_CurrentComponentStatus is used in alerting and reporting, resulting in false alerts.
This issue also occurred in the Advanced Alert Manager, which was deprecated in Orion Platform 2011.4. Alert functionality is now handled in the Alert Manager. For more information, see Alerting resources for Orion Platform products
Resolution
This issue was fixed in SAM 6.5, released in 2017. Upgrade to the latest version of SolarWinds SAM.
As a workaround, to fix without upgrading, use the following script in SQL Server Management Studio to mark all disabled components on the template level as Disabled at the application level.
SolarWinds recommends backing up your database before running this script. Follow instructions in How to Backup the Orion SQL database.
-- Scripts are not supported under any SolarWinds support program or service. -- Scripts are provided AS IS without warranty of any kind. SolarWinds further -- disclaims all warranties including, without limitation, any implied warranties -- of merchantability or of fitness for a particular purpose. The risk arising -- out of the use or performance of the scripts and documentation stays with you. -- In no event shall SolarWinds or anyone else involved in the creation, -- production, or delivery of the scripts be liable for any damages whatsoever -- (including, without limitation, damages for loss of business profits, business -- interruption, loss of business information, or other pecuniary loss) arising -- out of the use of or inability to use the scripts or documentation. DECLARE @ComponentID int DECLARE @ApplicationID int DECLARE db_cursor CURSOR FOR SELECT c.ID, c.ApplicationID FROM APM_ComponentTemplate ct INNER JOIN APM_Component c ON c.TemplateID = ct.ID WHERE ct.IsDisabled = 1 AND ISNULL(c.IsDisabled, 0) = 0 OPEN db_cursor FETCH NEXT FROM db_cursor INTO @ComponentID, @ApplicationID WHILE @@FETCH_STATUS = 0 BEGIN UPDATE APM_Component SET IsDisabled = 1 WHERE ID = @ComponentID UPDATE APM_ComponentSetting SET Value = 'True' WHERE ComponentID = @ComponentID AND [Key] = '__Disabled' IF @@ROWCOUNT = 0 INSERT INTO APM_ComponentSetting(ComponentID, [Key], [Value], [ValueType], [Required]) VALUES (@ComponentID, '__Disabled', 'True', 3, 0) UPDATE APM_CurrentComponentStatus SET Availability = 7, [TimeStamp] = GETUTCDATE(), ComponentStatusID = 0, ErrorCode = 0 WHERE ComponentID = @ComponentID IF @@ROWCOUNT = 0 INSERT INTO APM_CurrentComponentStatus (ComponentID, ApplicationID, Availability, [TimeStamp], ComponentStatusID, ErrorCode) VALUES (@ComponentID, @ApplicationID, 7, GETUTCDATE(), 0, 0) FETCH NEXT FROM db_cursor INTO @ComponentID, @ApplicationID END CLOSE db_cursor DEALLOCATE db_cursor