[[event-conventions]]
=== Naming Conventions

When creating events, use the following conventions for field names and abbreviations.

[[field-names]]
==== Field Names

Use the following naming conventions for field names:

- All fields must be lower case.
- Use snake case (underscores) for combining words.
- Group related fields into subdocuments by using dot (.) notation. Groups typically have common prefixes. For example, if you have fields called `CPULoad` and `CPUSystem` in a service, you would convert
them into `cpu.load` and `cpu.system` in the event. 
- Avoid repeating the namespace in field names. If a word or abbreviation appears in the namespace, it's not needed in the field name. For example, instead of `cpu.cpu_load`, use `cpu.load`.
- Use <<abbreviations,standardised names>> and avoid using abbreviations that aren't commonly known.
- Organise the documents from general to specific to allow for namespacing. The type, such as `.pct`, should always be last. For example, `system.core.user.pct`.
- If two fields are the same, but with different units, remove the less granular one. For example, include `timeout.sec`, but don't include `timeout.min`. If a less granular value is required, you can calculate it later.
- If a field name matches the namespace used for nested fields, add `.value` to the field name. For example, instead of:
+
[source,yaml]
----------
workers
workers.busy
workers.idle
----------
+
Use:
+
[source,yaml]
----------
workers.value
workers.busy
workers.idle
----------
- Do not use dots (.) in individual field names. Dots are reserved for grouping related fields into subdocuments. 
- Use singular and plural names properly to reflect the field content. For example, use `requests_per_sec` rather than `request_per_sec`. 


[[abbreviations]]
==== Standardised Names

Here is a list of standardised names and units that are used across all Beats:

[options="header"]
|=======================
|Use...     |Instead of... 
|avg        |average
|connection |conn 
|count      | 
|day        |days, d
|max        |maximum
|min        |minimum
|pct        |percentage
|request    |req
|sec        |seconds, second, s
|ms         |millisecond, millis
|mb         |megabytes
|msg        |message
|ns         |nanoseconds
|norm       |normalized
|us         |microseconds
|=======================
