Enterprise RTView® 
User Guide


Alerts
Enterprise RTView features a real-time alert engine that enables management and operational personnel to monitor the health and status of business operations. The alert engine can monitor conditions and perform automated actions from any available Enterprise RTView data source.  Alert definitions can include thresholds, severity, notification policies and automated actions, such as email, system commands, performing a SQL statement or sending JMS messages.  The Enterprise RTView alert engine can load any number of alert definitions, and any number of customized dashboards can be created to view alert status, filter alerts, use alerts as drill down navigation for analysis and corrective action, or to interactively change alert status such as alert acknowledgement.

To use alerts, you first build an Alert Definition file, then configure the Alert data source to use this file.

Creating an Alert Definition File
An Alert Definition file is an Enterprise RTView display (.rtv) file that contains your alert definition objects. To create an Alert Definition file, add alert definition objects to a display in the Display Builder. The alert definition objects are in the Alert tab of the Object Palette. For each alert definition, you must assign a unique name in the alertName property, you must setup the input data and you must enable the appropriate alert levels. You may add multiple alert definitions to a single Alert Definition file. You may also define multiple Alert Definition files.

There are two types of alert definition objects, Limits alerts and Discrete alerts. Limits alerts allow you to compare your input value to a threshold and execute the alert if your value goes above or below an acceptable range. Discrete alerts allow you to compare the input value to up to three test values (one each for low, medium and high alerts), and execute an alert if your input data equals one of these values. The Discrete alert supports string, number and boolean comparisons.

For both types of alert definition objects, there are properties such as nonRepetitionTime and alertDelayTime that allow you finer control over when your alert is executed. All of the properties for each alert type can be modified by selecting the alert definition object and using the Object Property dialog.

When you have finished adding all of your alert definition objects and configuring their properties, Save the display (.rtv) file and add your Alert Definition file to the Alert data source configuration.

Creating a Reusable Alert Definition File
You can create a reusable Alert Definition file using the Enterprise RTView substitution feature. When you name the alert definition object (using the alertName property), include a substitution string as the suffix. Use that same substitution string for the input value in the data attachment. When you subsequently add the Alert Definition file to the Alert data source configuration, you then specify a substitution value.

To give an example, let us say that your sales data is broken down by sales regions, and you need an alert for each. Instead of manually creating an alert for each region, you can create one and reuse it as a template for the others. First create a display containing an alert definition object named salesAlert.$region, where salesAlert is the alert name and $region is the substitution string. The data attachment for the input value also uses the $region substitution string. Save the file as alert_config.rtv. This is your Alert Definition file. You then add this Alert Definition file to the Alert data source configuration multiple times (in our example, four times), with $region set to a different value for each region:

        alert_config.rtv        $region:North
        alert_config.rtv        $region:South
        alert_config.rtv        $region:West
        alert_config.rtv        $region:East

You will get four copies of salesAlert with the following names:

        salesAlert.North
        salesAlert.South
        salesAlert.West
        salesAlert.East

Alert Definition Objects
The properties for each alert definition object are described below. All of the properties for each alert type can be modified by selecting the alert definition object and using the Object Property dialog.

Limits Alerts
Limits alerts allow you to compare your input value to a threshold and execute the alert if your input data goes above or below an acceptable range. Attach the value property to your input data if the data is scalar. If the data is tabular, select the useTabularDataFlag and attach your input to valueTable. The data attached to the valueTable property must contain two columns, the first column must be an index column containing a unique value in each row. The second column must contain numeric values to compare to the thresholds. An alert will execute for each row in the table when the value goes above or below the acceptable range.

This alert type supports four thresholds: valueHighAlert, valueHighWarning, valueLowAlert and valueLowWarning. The value and valueTable properties are compared against the specified threshold values (scalar, tabular or list) and an alert is activated when threshold values are exceeded.

When specifying a scalar threshold value, value and each row in the valueTable will be compared against the scalar value.

When specifying a tabular threshold value, the input table can contain one or two columns:

If the specified threshold table has one column, the column must contain comparison values and should have the same number of rows as the input table attached to the valueTable. Each row in valueTable will be compared against values in the corresponding rows of the specified threshold table. If valueTable has more rows than the specified threshold table, these extra rows will be compared against the value of the first row of the specified threshold table. The value property will be compared to the first row of the specified threshold table.

If the specified threshold table has two columns, the first column must contain indexes and the second column must contain comparison values. The index value for each row in the input table attached to valueTable will be used to lookup the corresponding comparison value from the specified threshold table. If the index is not found in the specified threshold table, no alert is activated. The value property cannot be compared against a threshold table with two columns.

When specifying a list of threshold values, the list can contain either index/comparison value pairs or just comparison values:

If the list only contains comparison values, this should be a semicolon (;) delimited list of comparison values (e.g.: 80;90;100) with the same number of values as there are rows in the input table attached to valueTable. Each row in valueTable will be compared against corresponding items in the specified threshold list. If valueTable has more rows than items in the specified threshold list, these extra rows will be compared against the first item in the specified threshold list. The value property will be compared to the first item the specified threshold list.

If the list contains index/comparison value pairs, this should be a semicolon (;) delimited list of comma (,) separated index/comparison value pairs (e.g.: (Chicago,80;Dallas,90;Detroit,100). The index value for each row in the input table attached to valueTable will be used to lookup the corresponding comparison value from the specified threshold list. If the index is not found in the specified threshold list, no alert is activated. The value property cannot be compared against a threshold list of index/comparison value pairs.

Specify the properties of your Limits alert.
 
Property Name Description
alertCommand The action executed when an alert is activated. Any of the available Enterprise RTView commands can be used as well as the following substitutions.
Substitution Description
$alertID The unique ID for the alert.
$alertName The value from the alertName field for the alert.
$alertText The alert text. This is the same text that is displayed in the AlertTable.
$alertSeverity The severity of the alert.
$alertEmailSubject The alert email subject.
$alertEmailBody The alert email body text.
$alertIndex The alert index. This is the same as the value in the Alert Index column of the AlertTable.
alertDelayTime Specifies the amount of time (in seconds) that a value must remain within the alert range before the alert is executed.

For example, if valueHighAlert is 90 and alertDelayTime is 5, then the input value must stay over 90 for 5 seconds before a high alert is issued.

If the skipDuplicateAlertsFlag is selected it will apply to both threshold values. So, in the example above, if a high alert has been issued, the valueHighWarning is 80 and the input value drops to 85, it must stay below 90 for 5 seconds before the severity is changed to high warning.

alertName A unique name for the alert. An entry for this property is required. To create a reusable Alert Definition file, include the substitution string as the suffix.

For example: salesAlert.$region (where salesAlert is the alert name and $region is the substitution string.)

enabledFlag Enables or disables the entire alert. If this alert is active when it is disabled, it will be cleared. NOTE: It is not recommended that you attach data to this property if you are using the Enable Alert Definition command for this alert.
nonRepetitionTime Amount of time (in seconds) that must pass after a cleared alert is executed again. If the skipDuplicateAlertsFlag is selected, the alert will not be cleared until both thresholds (warning and alert) are cleared.
reNotificationTime Amount of time (in seconds) that must pass before the alertCommand for an unacknowledged or an uncleared alert is re-executed. The alertCommand will continue to re-execute on this interval until the alert is acknowledged or cleared.
rowEnabledTable Sets the enabled state for each row in the valueTable, so you can enable or disable each index in a tabular alert. This property only applies for tabular alerts, therefore the useTabularDataFlag must be selected to activate the rowEnabledTable property. If the enabledFlag for the alert is disabled, each row index is disabled regardless of the value of rowEnabledTable.

This property can be set to one of the following:

Scalar data:
If true, all rows (indexes) in the table will be enabled. If false all rows (indexes) will be disabled.

Tabular data (one or two columns):
If your tabular input data has one column, the column must contain boolean values and should have the same number of rows as the valueTable. Each row in the valueTable will be compared against values in the corresponding rows of the specified rowEnabledTable. If the valueTable has more rows than the rowEnabledTable, these extra rows will be compared against the value of the first row of the rowEnabledTable.

If your tabular input data has two columns, the first column must contain indexes and the second column must contain boolean values. The index value for each row in the valueTable will be used to lookup the corresponding enabled value from the rowEnabledTable. If the index is not found in the rowEnabledTable, the enabled state is set to false and the row (index) is disabled.

List of enabled (boolean) values:
This should be a semicolon (;) delimited list of boolean values (e.g.: true;false;true) with the same number of values as there are rows in the valueTable. Each row in valueTable will be set to corresponding enabled values in the specified list. If valueTable has more rows than enabled values in the list, then the first value in the list will be used.

List of index/enabled value pairs:
This should be a semicolon (;) delimited list of comma (,) separated index/enabled value pairs (e.g.: (Chicago,true;Dallas,false;Detroit,true). The index value for each row in the valueTable will be used to lookup the corresponding enabled value from the specified list. If the index is not found in the enabled value list, the enabled state is set to false and the row (index) is disabled.

skipDuplicateAlertsFlag If selected, the severity of an alert will update (e.g. valueHighWarning to valueHighAlert) without multiple alerts being activated. That is, only the highest (or lowest) alert will be activated when the input value exceeds both high (or low) thresholds. NOTE: Once an alert is acknowledged, the severity of that alert will no longer update.
useTabularDataFlag For tabular input data, select the useTabularDataFlag and attach your input to valueTable. The data attached to the valueTable property must contain two columns, the first column must be an index column containing a unique value in each row. The second column must contain numeric values to compare to the thresholds.
value Attach your input data to this property if your input data is scalar. For tabular input data, select the useTabularData property and attach your input data to the valueTable property.
valueDeadband Specifies a deadband value for the thresholds. If specified, the input value must go below the valueHighWarning/valueHighAlert minus the deadband value or above the valueLowWarning/valueLowAlert plus the deadband value for the alert to clear.

For example, if the valueHighAlert is 90 and the valueDeadband is 5, a high alert will be issued when the input value goes above 90, but will not clear until the input value goes below 85.

If the skipDuplicateAlertsFlag is selected it will apply to both threshold values. So, in the example above, if valueHighWarning is set to 80 then the input value must go below 85 before the severity is changed to high warning and below 75 for the alert to be cleared.

valueHighAlert Specifies the number that the input value must exceed to activate the high alert. Enter either a scalar or tabular value, or specify a list of values.
valueHighAlertEnabledFlag Enables the high alert threshold. When executed, severity is 2.
valueHighWarning Specifies the number that the input value must exceed to activate the high warning. Enter either a scalar or tabular value, or specify a list of values.
valueHighWarningEnabledFlag Enables the high warning threshold. When executed, severity is 1.
valueLowAlert Specifies the number the input value must go below to activate the low alert. Enter either a scalar or tabular value, or specify a list of values.
valueLowAlertEnabledFlag Enables the low alert threshold. When executed, severity is 2.
valueLowWarning Specifies the number the input value must go below to activate the low warning. Enter either a scalar or tabular value, or specify a list of values.
valueLowWarningEnabledFlag Enables the low warning threshold. When executed, severity is 1.
valueTable Attach your input data to this property if it is tabular. For scalar input data, deselect the useTabularData and attach your input data to the value property. The data attached to this property must contain two columns, the first column must be an index column containing a unique value in each row. The second column must contain numeric values to compare to the thresholds.

Discrete Alerts
Discrete alerts allow you to compare the input data to a test value and execute an alert if your input data equals this value. Attach the value property to your input data if the data is scalar. If the data is tabular, select the useTabularDataFlag and attach your input data to the valueTable property. The data attached to the valueTable property must contain two columns, the first column must be an index column containing a unique value in each row. The second column must contain values (string, number, boolean) to compare to the test values. An alert will execute for each row in the table when the value is equal to the specified test values.

This alert type supports three test values: valueHighAlert, valueMediumAlert, valueLowAlert. The value and valueTable properties are compared against the specified test values (scalar, tabular or list) and an alert is activated when test values are reached.

When specifying a scalar test value, value and each row in the valueTable will be compared against the scalar value.

When specifying a tabular test value, the input table can contain one or two columns:

If the specified test value table has one column, the column must contain comparison values and should have the same number of rows as the input table attached to the valueTable. Each row in valueTable will be compared against values in the corresponding rows of the specified test value table. If valueTable has more rows than the specified test value table, these extra rows will be compared against the value of the first row of the specified test value table. The value property will be compared to the first row of the specified test value table.

If the specified test value table has two columns, the first column must contain indexes and the second column must contain comparison values. The index value for each row in the input table attached to valueTable will be used to lookup the corresponding comparison value from the specified test value table. If the index is not found in the specified test value table, no alert is activated. The value property cannot be compared against a test value table with two columns.

When specifying a list of test values, the list can contain either index/comparison value pairs or just comparison values:

If the list only contains comparison values, this should be a semicolon (;) delimited list of comparison values (e.g.: 80;90;100) with the same number of values as there are rows in the input table attached to valueTable. Each row in valueTable will be compared against corresponding items in the specified test value list. If valueTable has more rows than items in the specified test value list, these extra rows will be compared against the first item in the specified test value list. The value property will be compared to the first item the specified test value list.

If the list contains index/comparison value pairs, this should be a semicolon (;) delimited list of comma (,) separated index/comparison value pairs (e.g.: (Chicago,80;Dallas,90;Detroit,100). The index value for each row in the input table attached to valueTable will be used to lookup the corresponding comparison value from the specified test value list. If the index is not found in the specified test value list, no alert is activated. The value property cannot be compared against a test value list of index/comparison value pairs.


 

Specify the properties of your Discrete alert.
 
Property Name Description
alertCommand The action executed when an alert is activated. Any of the available Enterprise RTView commands can be used as well as the following substitutions.
Substitution Description
$alertID The unique ID for the alert.
$alertName The value from the alertName field for the alert.
$alertText The alert text. This is the same text that is displayed in the AlertTable.
$alertSeverity The severity of the alert.
$alertEmailSubject The alert email subject.
$alertEmailBody The alert email body text.
$alertIndex The alert index. This is the same as the value in the Alert Index column of the AlertTable.
alertDelayTime Specifies the amount of time (in seconds) that a value must remain equal to the input value before the alert is executed.
alertName A unique name for the alert. An entry for this property is required. To create a reusable Alert Definition file, include the substitution string as the suffix.
For example:
salesAlert.$region
where salesAlert is the alert name and $region is the substitution string.
enabledFlag Enables or disables the entire alert. If this alert is active when it is disabled, it will be cleared. NOTE: It is not recommended that you attach data to this property if you are using the Enable Alert Definition command for this alert.
nonRepetitionTime Amount of time (in seconds) that must pass after a cleared alert is again executed.
reNotificationTime Amount of time (in seconds) that must pass before the alertCommand for an unacknowledged or an uncleared alert is re-executed. The alertCommand will continue to re-execute on this interval until the alert is acknowledged or cleared.
rowEnabledTable Sets the enabled state for each row in the valueTable, so you can enable or disable each index in a tabular alert. This property only applies for tabular alerts, therefore the useTabularDataFlag must be selected to activate the rowEnabledTable property. If the enabledFlag for the alert is disabled, each row index is disabled regardless of the value of rowEnabledTable.

This property can be set to one of the following:

Scalar data:
If true, all rows (indexes) in the table will be enabled. If false all rows (indexes) will be disabled.

Tabular data (one or two columns):
If your tabular input data has one column, the column must contain boolean values and should have the same number of rows as the valueTable. Each row in the valueTable will be compared against values in the corresponding rows of the specified rowEnabledTable. If the valueTable has more rows than the rowEnabledTable, these extra rows will be compared against the value of the first row of the rowEnabledTable.

If your tabular input data has two columns, the first column must contain indexes and the second column must contain boolean values. The index value for each row in the valueTable will be used to lookup the corresponding enabled value from the rowEnabledTable. If the index is not found in the rowEnabledTable, the enabled state is set to false and the row (index) is disabled.

List of enabled (boolean) values:
This should be a semicolon (;) delimited list of boolean values (e.g.: true;false;true) with the same number of values as there are rows in the valueTable. Each row in valueTable will be set to corresponding enabled values in the specified list. If valueTable has more rows than enabled values in the list, then the first value in the list will be used.

List of index/enabled value pairs:
This should be a semicolon (;) delimited list of comma (,) separated index/enabled value pairs (e.g.: (Chicago,true;Dallas,false;Detroit,true). The index value for each row in the valueTable will be used to lookup the corresponding enabled value from the specified list. If the index is not found in the enabled value list, the enabled state is set to false and the row (index) is disabled.

useTabularDataFlag For tabular input data, select the useTabularDataFlag and attach your input data to  the valueTable property. The data attached to the valueTable property must contain two columns, the first column must be an index column containing a unique value in each row. The second column must contain values to compare to the test values.
value Attach your input data to this property if your input data is scalar. For tabular input data, select the useTabularData property and attach your input data to the valueTable property.
valueHighAlert Specifies the value that the input value must be equal to for the high alert to execute. Enter either a scalar or tabular value, or specify a list of values.  
valueHighAlertEnabledFlag Enables the high alert. When executed, severity is 3.
valueLowAlert Specifies the value that the input value must be equal to for the low alert to execute. Enter either a scalar or tabular value, or specify a list of values.
valueLowAlertEnabledFlag Enables the low alert. When executed, severity is 1.
valueMediumAlert Specifies the value that the input value must be equal to for the medium alert to execute. Enter either a scalar or tabular value, or specify a list of values.
valueMediumAlertEnabledFlag Enables the medium alert. When executed, severity is 2.
valueTable Attach your input data to this property if it is tabular. For scalar input data, deselect the useTabularData and attach your input data to the value property. The data attached to this property must contain two columns, the first column must be an index column containing a unique value in each row. The second column must contain numeric values to compare to the thresholds.

Add an Alert Definition File
When the Alert data source reads in an Alert Definition file, it adds a line to the Alert Variables Table for each alert in the file and creates a variable using the alertName field for each alert in the file. Alerts without an entry for the alertName property, as well as alerts that have duplicate names, are not added. An error prints to the console.

See Application Options for details on how to add an Alert Definition file to the Alert data source configuration.

Running the Alert Engine
The alert engine resides within the Alert data source, so there is no additional process to run the alert engine. How Enterprise RTView is deployed determines where the alert engine specifically runs:

Thin Client Browser with Direct Data Connection - The alert engine runs on the Display Server. The alert engine is active as long as the Display Server is running, regardless of whether clients are connected.

Application or Rich Client Browser with Direct Data Connection - The alert engine runs on the client machine. The alert engine is active as long as the client application or applet is running.

All Deployments with Served Data - The alert engine runs on the Data Server. The alert engine is active as long as the Data Server is running, regardless of whether clients are connected.

Alert Behavior
Alert Execution
Alerts are evaluated once each update period. By default, this is every two seconds. You may set the update period in the Application Options dialog. If the current value of the input data meets an alert condition, the alert executes.

When an alert is executed, the variables in the Alert data source are updated and the alertCommand executes.

NOTE: Multiple asynchronous data updates between updates will be missed. For example, if your input data is a JMS message and you receive three messages between Enterprise RTView updates, only the data from the last message will be used when evaluating the alert condition.

Cleared Alerts
Alerts are evaluated once each update period. By default, this is every two seconds. You may set the update period in the Application Options dialog. If the current value of the input data for an alert that has been executed is no longer in an alert state, the alert will clear.

When an alert is cleared, the variables in the Alert data source are updated and if the reNotificationTime for the alert was specified, it will no longer re-execute the alertCommand.

NOTE: Multiple asynchronous data updates between updates will be missed. For example, if your input data is a JMS message and you receive three  messages between Enterprise RTView updates, only the data from the last message will be used when evaluating the alert condition.

Viewing Alerts
You can create a display using the Display Builder to view your real-time alert data. 

When the Alert data source reads in an Alert Definition file, it adds a line to the Alert Variables Table for each alert in the file and creates a variable using the alertName field for each alert in the file. Alerts without the alertName property filled in as well alerts that have duplicate names will not be added. An error will print to the console.

The following alert variables are available in the Alert data source. See Attach to Alert Data for more information on attaching to alert variables.

The Alert Variables Table contains one row for each alert definition with the following information.
 
Item Description
Alert Name Value of the alertName field of the alert definition object.
Alert State Highest current severity for the alert definition. If the data input for the alert definition object is tabular (i.e. the useTabularDataFlag is True), it will have one alert severity for each row in the input data table, this value will be the highest severity of all the rows. If an alert is disabled, the value of Alert State will become -1.
Enabled Enabled state of the alert: true if enabled, false if disabled.

The AlertTable lists all of your active and cleared alerts and contains the following information:
 
Item Description
Time Time the alert was activated.
Alert Name Value of the alertName field of the alert definition object.
Alert Index This is blank if the input data for the alert definition object is scalar (i.e. the useTabularDataFlag is False). Otherwise, it is the value from the first column in the input data table.
Severity Severity of the alert.
Alert Text Text about the alert.
Cleared Selected if the alert has cleared.
Acknowledged Selected if the alert has been acknowledged.
ID Unique ID for the alert.

An alert variable is added to the Alert data source for each alert definition object and is named using the alertName property of the alert definition object. For alert definition objects that use scalar input data (i.e. the useTabularData property is False), this variable will be scalar. It will list the highest severity for the alert definition.

For alert definition objects that use tabular input data (i.e. the useTabularData property is True), this variable will be a table. It contains one row for each row in the input table with the following columns:
 
Item Description
Alert Index Name from the first column of the input data for the alert definition.
Alert State Highest current alert severity for this alert index. If this alert or alert index is disabled, the value of Alert State will become -1.
Enabled Enabled state of the alert index: true if enabled, false if disabled.

Managing Alerts
In addition to being able to manage your alerts while developing your display using the Application Options dialog, you can also manage them from your deployed display.

Use the following alert commands to manage your alerts from a deployed display.

  • Add Alert Definition File
  • Remove Alert Definition File
  • Enable Alert Definition
  • Enable Alerts
  • Acknowledge Alert

See Define Alert Command for more information.

NOTE: Executing these commands from your display in the Display Builder does not cause the Application Options dialog to update. For example, if you add an Alert Definition file by using the command, it does not show up in the Application Options dialog until you either close and re-open it, or click Apply.

 

 

 
SL, SL-GMS, GMS, Enterprise RTView, SL Corporation, and the SL logo are trademarks or registered trademarks of Sherrill-Lubinski Corporation in the United States and other countries. Copyright © 1998-2008 Sherrill-Lubinski Corporation. All Rights Reserved.

 
JMS, JMX and Java are trademarks and/or registered trademarks of Sun Microsystems, Inc. in the United States and other countries. They are mentioned in this document for identification purposes only.