Understanding Event Processing Policy
The Event Processing Policy (EPP) is the central rules engine in NetXMS. It determines what happens when events are generated — whether to create alarms, send notifications, execute scripts, or perform other automated actions.
Event Processing Modes
NetXMS Event Processor can process events from the event queue in either sequential or parallel mode.
Sequential Mode (Default)
In sequential mode, events are processed one by one in the order they arrive. This guarantees events will be processed in the same sequence as they are generated. For installations where many events can be generated in a short period of time, this mode can become a bottleneck.
Parallel Mode
Parallel processing mode allows events to be processed by multiple threads simultaneously, increasing throughput and processing performance.
Configure parallel mode using these server configuration variables:
| Variable | Default | Description |
|---|---|---|
|
|
Number of event processing threads (1 = sequential mode, 2-128 = parallel mode; out-of-range values are silently clamped to this range). Changes require a server restart. |
|
|
Macro expression used to bind events to processing queues. Changes require a server restart. |
| EPP rules can read/write persistent storage and custom attributes, create/terminate alarms, and run scripts that check other node statuses. When using parallel processing, care must be taken to avoid race conditions. |
Correct operation is ensured by properly setting Events.Processor.QueueSelector.
This parameter contains macros that are expanded by the dispatcher thread when the event is taken off the main event queue.
Events that produce the same queue selector string will be processed sequentially by the same thread, ensuring no race conditions between those events.
For example, the default value %z (zone UIN) ensures all events from the same zone are processed by the same thread.
If your installation uses a single zone, you may want to use %i (source object ID) instead, so events from different objects can be processed in parallel while events from the same object are always sequential.
How the EPP Works
When an event is generated, NetXMS processes it through the EPP rules in order from top to bottom. Each rule defines a set of matching criteria and one or more actions to execute when the criteria are satisfied.
The processing flow:
-
An event is generated (by threshold, poll, trap, script, etc.)
-
The EPP evaluates rules starting from rule 1
-
For each rule, the server checks whether the event matches the rule’s filter criteria
-
If the event matches, the configured actions execute
-
If the rule has the Stop Processing flag set, no further rules are evaluated for this event
-
If the flag is not set, the next rule is evaluated
-
Processing continues until all rules have been evaluated or a Stop Processing rule matches
| Rule ordering matters. Rules are evaluated top to bottom, and the Stop Processing flag controls whether subsequent rules see the event. |
A rule with no filter criteria configured at all is skipped during processing — it does not match every event.
Multiple users can edit the Event Processing Policy at the same time. When the policy is saved, changes from concurrent editors are merged on the server side. If the server detects conflicting changes to the same rules, the client shows a conflict dialog offering to reload the policy.
Rule Structure
Each EPP rule consists of:
| Component | Description |
|---|---|
Rule Number |
Ordinal position in the policy (determines evaluation order) |
Comments |
Free-form text documenting the rule’s purpose; displayed as the rule header in the policy editor (rules have no separate name field) |
Events |
Which events this rule matches |
Source Objects |
Which objects (nodes, subnets, etc.) this rule applies to, with optional exclusions |
Severity Filter |
Which event severities this rule matches |
Time Filter |
When this rule is active (day of week, time of day) |
Filtering Script |
NXSL script for custom matching logic (also the place to match event tags via |
Actions |
What to do when the rule matches |
Flags |
Rule options: Stop Processing, Rule is disabled, negation of the source object, event, and time frame filters, Accept correlated events, and treating the alarm termination key as a regular expression |
For details on each filter type and action, see the EPP Reference.
Alarm Correlation with Keys
Alarm keys are the mechanism for correlating related events. The typical pattern:
-
A failure event (e.g.,
SYS_NODE_DOWN) matches a rule that generates an alarm with keyNODE_DOWN_%i(where%iis the source object ID) -
The corresponding recovery event (e.g.,
SYS_NODE_UP) matches a different rule that terminates alarms matching keyNODE_DOWN_%i
A rule can either terminate or resolve alarms with a matching key. The shipped default policy uses termination for its correlation rules — for example, the node-up rule terminates node-down alarms. Resolving instead keeps the alarm visible in the Resolved state until it is terminated manually or by timeout. Either way, when a problem is detected and later recovers, the corresponding alarm is closed automatically. See Common EPP Patterns for concrete examples of alarm correlation rules.
Default Policy
NetXMS ships with a default EPP that handles common scenarios:
-
Node up/down alarm correlation
-
Interface up/down alarm correlation
-
Service up/down alarm correlation
-
Threshold alarm correlation
-
Agent communication alarm correlation
-
SNMP communication alarm correlation
The default policy provides a working baseline. Customize it by adding rules for your notification requirements, custom events, and environment-specific logic.
Next Steps
-
How to Create EPP Rules — step-by-step procedures for building and managing rules
-
EPP Reference — filter criteria, actions, and macro reference
-
Alarms — alarm lifecycle, states, and management
-
Notifications — notification channels and recipient configuration
-
Actions — automated response actions