EDR Messages

Introduction

Support for EDR-… messages is coded into the base Application class. It should not be necessary for any application to explicitly implement support for these messages.

The single currently supported internal EDR-… message is:

Note that this is not a priority administration message, it does not begin with the special ! character, and so it uses the standard user-level queue, it is not passed in the high-priority administration queue.

EDR-LOG

The EDR-LOG message is sent by an application to request the logging of an EDR within an EDR file stream. The stream identifier is provided in the log request.

For each “stream” identifier, a single EDR file will be in progress at any time. In a load-sharing multi-process deployment, this allows for multiple applications to merge their EDRs into a single stream, which facilitates the searching and management of EDR files.

The attributes of the EDR-LOG message are:

Field Type Description
stream String [a-zA-Z0-9_]+ The key for the EDR stream.
EDRs with the same stream will be interleaved together within the same files.
The stream forms part of the EDR filename on-disk.
The EDR application uses the stream to determine file max size/age and in-memory buffering parameters.
The first character must be [a-zA-Z] and subsequent chars [a-zA-Z0-9_].
(Default = n2svcd)
at Array/TimeVal [Required] The second and microsecond timestamp for the nominal "Event" time associated with this EDR.
event String [a-zA-Z0-9_-]+ [Required] An event type identifier which defines the nature of the Event which occurred, and identifies which fields are expected to be found within the details.
The first character must be [a-zA-Z] and subsequent chars [a-zA-Z0-9_-].
fields Object Free-form field details Object.
The first character of the attribute keys of the fields Object must be [a-zA-Z], and subsequent chars [a-zA-Z0-9_].
The attribute values must be either Scalar, or Array of Scalar.
(Default = No detail fields are recorded)
correlation Object Container for correlation key fields defining the instance generating this EDR.
This is used to correlate related EDRs generated by the same instance.
The "scope" of an instance varies by application. e.g. For an SCP application, an instance contains all the service logic initiated by a single InitialDP. For REST, SOAP, Diameter, FOX, one instance encapsulates a Request + Response message pair.
(Default = 0, No Correlation)
.app_name String [Required] The name of the application which owns the instance.
This name follows the n2svcd application configuration rules. It must consist of one or more characters from [a-zA-Z0-9 _\-], followed optionally (in the case where repeat is used to share process load) by an optional colon character and repeat number :[0-9]+.
.app_epoch Integer [Required] The epoch time at which the application started execution (not the instance).
.instance_idx Hexadecimal [Required] The instance's index in hexadecimal (lower-case) format.
This is unique for any pair of app_name and app_epoch.

The combination of .app_name, .app_epoch and .instance_idx should uniquely identify an instance across all time.

Note that there is no acknowledgement or response message for an EDR-LOG message, and no correlation with any previously sent IPC message. Hence there is no need for the sender to define either the top-level content or sender_context attributes in the IPC message API layer.