Qualifiers

A mechanism is needed that permits an RMC client to qualify an event. In other words, an event may be of some interest, but only if some other condition is also met.

Normally, an expression that evaluates to True results in the generation of an event. But, it might be the case that a single event is not of much interest. Consider the "file system close to full" example:

PercentTotUsed > 90
While it is interesting that a file system is almost full, to a system administrator responsible for managing file systems, what might be of more interest is that a file system is close to full and remains in that condition for a period of time. A temporary spike in usage can be ignored.
A qualifier is an extension to the expression syntax described in the preceding topics in this section (Using expressions to specify condition events and command selection strings) that specifies this other condition. A qualifer consists of a double underscore (__), the string QUAL, a single underscore (_), and the qualifer name (xxxx). It has the following general form:

expression __QUAL_xxxx(arg1, arg2, ...)
A qualifier is appended to the end of an expression, separated by one or more blanks. A qualifier can be used with a primary expression or a re-arm expression.

The __QUAL_COUNT(arg1, arg2) qualifier counts the number of True expression evaluations. Once the arg1 number of True evaluations have occurred, the event notification is generated. However, this count is maintained within a moving window of the last arg2 consecutive evaluations. Once arg2 consecutive evaluations have occurred, prior to performing the next evaluation, the count of True evaluations is reduced by one if the oldest evaluation in the window was True. When an event notification is generated, the count of True evaluations and consecutive evaluations is set to 0.

The value for arg1 must be less than or equal to the value for arg2. Continuing with the file system full example, consider the following primary and re-arm expressions, respectively:

PercentTotUsed > 90 __QUAL_COUNT(7, 10)
PercentTotUsed < 60
If seven out of the last 10 primary expression evaluations are True, an event notification is generated and the re-arm expression is evaluated until it is True. In simpler terms, if seven out of the last 10 samples of file system usage were greater than 90%, an event is generated. Another event will not be generated until the file system usage drops below 60%.
If all the attributes in the primary expression have a regular period, arg2 can be considered a duration over which the count of True evaluations is maintained. The actual duration is a function of the shortest and longest reporting interval associated with the attributes specified in the expression, as given by:

min_interval * arg2 <= duration <= max_interval * arg2
For this example, the duration is 10 minutes.

The __QUAL_RATE(arg1, arg2) qualifier specifies a rate of True expression evaluations that must be achieved before an event notification is generated. arg1 is a count of True evaluations and arg2 is a number of seconds. An event notification is generated when the last arg1 True evaluations have occurred within arg2 seconds. Once arg1 True evaluations have occurred, prior to performing the next evaluation, the count of True evaluations is reduced by one. False evaluations are ignored and not counted. When an event notification is generated, the count of True evaluations is set to 0. Note that the rate calculation is not performed until arg1 True evaluations have occurred. The time at which this occurs is a function of the time a new value is reported for any of the attributes in the expression.

The rate qualifier is probably more appropriate for expressions containing attributes of variable type State, that is, the periodic evaluation is irregular. If the operational state of a resource is expected to change, but not change rapidly, this expression is useful:

OpState != OpState@P __QUAL_RATE(5, 60)

If five True evaluations occur within one minute, an event is generated. Note that this qualifier is not an instantaneous rate calculation, that is, an event is not generated if the express is True every (arg1 / arg2) seconds, or every 0.0833 seconds in the preceding example.

Qualifiers can be used with re-arm expressions as well.