An event can be hard to read as a raw data. To make the visualization and the understand of events easier, smart-descriptions help to display important information to the user.
Smart-descriptions are defined in the directory _meta/smart-descriptions.json
in the format. The document is written in JSON dialect.
The root element of the document is a JSON-array. This array contains a set of smart-descriptions.
A smart description consists of:
-
The value (manatory): a sentence that will display information from the structured event.
This sentence contains placeholders (delimited with curly-braces). Each placeholder encompasses a path (dot-notation); the path indicates the location of the value in the structured event that is used to replace the placeholder in the description.
e.g: With a structured event containing:
{ "source": { "ip": "1.2.3.4" } }
The description
Connection from {source.ip}
will result inConnection from 1.2.3.4
. -
A list of conditions (optional): These conditions define when the description should be displayed. For a same event, the description, with the largest number of matching conditions, will succeed.
a condition is compound of a path (dot-notation) to the field to test, and the expected value of the field (equal operation).
e.g: With a structured event containing:
{ "event": { "kind": "alert" } }
The condition
{ "field": "event.kind", "value": "alert" }
will match
while the condition
{ "field": "event.kind", "value": "event" }
will not match
To test the existence of a field in the structured event, only define the field in the condition.
e.g: The condition
{ "field": "event.kind" }
will test the existence of
event.kind
-
A list of relationships (optional): The relationships help to connect information from the structured event.
A relationship is compound of:
- the source: the path to the field, in the structured data, to consider as the source of the relationship
- the target: the path to the field, in the structured data, to consider as the target of the relationship
- the type: a sentence that describes the nature of the relationship
e.g: With a structured event containing:
{ "source": { "ip": "1.2.3.4" }, "destination": { "ip": "5.6.7.8" } }
The relationship
{ "source": "source.ip", "target": "destination.ip", "type": "was connected to" }
will connect
1.2.3.4
to5.6.7.8
as awas connected to
relation