diff --git a/auditbeat/docs/fields.asciidoc b/auditbeat/docs/fields.asciidoc index 5304b19be0a7..83b42884b873 100644 --- a/auditbeat/docs/fields.asciidoc +++ b/auditbeat/docs/fields.asciidoc @@ -2454,6 +2454,15 @@ Contains common beat fields available in all event types. +*`agent.hostname`*:: ++ +-- +type: keyword + +Hostname of the agent. + +-- + *`beat.timezone`*:: + -- @@ -2909,8 +2918,7 @@ Image labels. [[exported-fields-ecs]] == ECS fields -ECS fields. - +ECS Fields. *`@timestamp`*:: @@ -2923,22 +2931,10 @@ example: 2016-05-23T08:05:34.853Z required: True Date/time when the event originated. -For log events this is the date/time when the event was generated, and not when it was read. +This is the date/time extracted from the event, typically representing when the event was generated by the source. +If the event source has no original timestamp, this value is typically populated by the first time the event was received by the pipeline. Required field for all events. - --- - -*`tags`*:: -+ --- -type: keyword - -example: ["production", "env2"] - -List of keywords used to tag each event. - - -- *`labels`*:: @@ -2948,11 +2944,10 @@ type: object example: {'application': 'foo-bar', 'env': 'production'} -Key/value pairs. +Custom key/value pairs. Can be used to add meta information to events. Should not contain nested objects. All values are stored as keyword. Example: `docker` and `k8s` labels. - -- *`message`*:: @@ -2962,28 +2957,51 @@ type: text example: Hello World -For log events the message field contains the log message. -In other use cases the message field can be used to concatenate different values which are then freely searchable. If multiple messages exist, they can be combined into one message. +For log events the message field contains the log message, optimized for viewing in a log viewer. +For structured logs without an original message field, other fields can be concatenated to form a human-readable summary of the event. +If multiple messages exist, they can be combined into one message. + +-- + +*`tags`*:: ++ +-- +type: keyword + +example: ["production", "env2"] +List of keywords used to tag each event. -- [float] == agent fields -The agent fields contain the data about the software entity, if any, that collects, detects, or observes events on a host, or takes measurements on a host. Examples include Beats. Agents may also run on observers. ECS agent.* fields shall be populated with details of the agent running on the host or observer where the event happened or the measurement was taken. +The agent fields contain the data about the software entity, if any, that collects, detects, or observes events on a host, or takes measurements on a host. +Examples include Beats. Agents may also run on observers. ECS agent.* fields shall be populated with details of the agent running on the host or observer where the event happened or the measurement was taken. - -*`agent.version`*:: +*`agent.ephemeral_id`*:: + -- type: keyword -example: 6.0.0-rc2 +example: 8a4f500f -Version of the agent. +Ephemeral identifier of this agent (if one exists). +This id normally changes across restarts, but `agent.id` does not. + +-- + +*`agent.id`*:: ++ +-- +type: keyword + +example: 8a4f500d +Unique identifier of this agent (if one exists). +Example: For Beats this would be beat.id. -- @@ -2994,11 +3012,10 @@ type: keyword example: foo -Name of the agent. +Custom name of the agent. This is a name that can be given to an agent. This can be helpful if for example two Filebeat instances are running on the same host but a human readable separation is needed on which Filebeat instance data is coming from. If no name is given, the name is often left empty. - -- *`agent.type`*:: @@ -3011,43 +3028,27 @@ example: filebeat Type of the agent. The agent type stays always the same and should be given by the agent used. In case of Filebeat the agent would always be Filebeat also if two Filebeat instances are run on the same machine. - --- - -*`agent.id`*:: -+ --- -type: keyword - -example: 8a4f500d - -Unique identifier of this agent (if one exists). -Example: For Beats this would be beat.id. - - -- -*`agent.ephemeral_id`*:: +*`agent.version`*:: + -- type: keyword -example: 8a4f500f - -Ephemeral identifier of this agent (if one exists). -This id normally changes across restarts, but `agent.id` does not. +example: 6.0.0-rc2 +Version of the agent. -- [float] == client fields -A client is defined as the initiator of a network connection for events regarding sessions, connections, or bidirectional flow records. For TCP events, the client is the initiator of the TCP connection that sends the SYN packet(s). For other protocols, the client is generally the initiator or requestor in the network transaction. Some systems use the term "originator" to refer the client in TCP connections. The client fields describe details about the system acting as the client in the network event. Client fields are usually populated in conjunction with server fields. Client fields are generally not populated for packet-level events. +A client is defined as the initiator of a network connection for events regarding sessions, connections, or bidirectional flow records. +For TCP events, the client is the initiator of the TCP connection that sends the SYN packet(s). For other protocols, the client is generally the initiator or requestor in the network transaction. Some systems use the term "originator" to refer the client in TCP connections. The client fields describe details about the system acting as the client in the network event. Client fields are usually populated in conjunction with server fields. Client fields are generally not populated for packet-level events. Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. - *`client.address`*:: + -- @@ -3056,83 +3057,72 @@ type: keyword Some event client addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. - -- -*`client.ip`*:: +*`client.bytes`*:: + -- -type: ip +type: long -IP address of the client. -Can be one or multiple IPv4 or IPv6 addresses. +example: 184 +Bytes sent from the client to the server. -- -*`client.port`*:: +*`client.domain`*:: + -- -type: long - -Port of the client. +type: keyword +Client domain. -- -*`client.mac`*:: +*`client.geo.city_name`*:: + -- type: keyword -MAC address of the client. +example: Montreal +City name. -- -*`client.domain`*:: +*`client.geo.continent_name`*:: + -- type: keyword -Client domain. +example: North America +Name of the continent. -- -*`client.bytes`*:: +*`client.geo.country_iso_code`*:: + -- -type: long - -example: 184 - -format: bytes +type: keyword -Bytes sent from the client to the server. +example: CA +Country ISO code. -- -*`client.packets`*:: +*`client.geo.country_name`*:: + -- -type: long - -example: 12 +type: keyword -Packets sent from the client to the server. +example: Canada +Country name. -- -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - *`client.geo.location`*:: + -- @@ -3142,30 +3132,29 @@ example: { "lon": -73.614830, "lat": 45.505918 } Longitude and latitude. - -- -*`client.geo.continent_name`*:: +*`client.geo.name`*:: + -- type: keyword -example: North America - -Name of the continent. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`client.geo.country_name`*:: +*`client.geo.region_iso_code`*:: + -- type: keyword -example: Canada - -Country name. +example: CA-QC +Region ISO code. -- @@ -3178,274 +3167,274 @@ example: Quebec Region name. - -- -*`client.geo.city_name`*:: +*`client.ip`*:: + -- -type: keyword - -example: Montreal - -City name. +type: ip +IP address of the client. +Can be one or multiple IPv4 or IPv6 addresses. -- -*`client.geo.country_iso_code`*:: +*`client.mac`*:: + -- type: keyword -example: CA - -Country ISO code. - +MAC address of the client. -- -*`client.geo.region_iso_code`*:: +*`client.packets`*:: + -- -type: keyword - -example: CA-QC +type: long -Region ISO code. +example: 12 +Packets sent from the client to the server. -- -*`client.geo.name`*:: +*`client.port`*:: + -- -type: keyword - -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +type: long +Port of the client. -- -[float] -== cloud fields - -Fields related to the cloud or infrastructure the events are coming from. - - - -*`cloud.provider`*:: +*`client.user.email`*:: + -- type: keyword -example: ec2 - -Name of the cloud provider. Example values are ec2, gce, or digitalocean. - +User email address. -- -*`cloud.availability_zone`*:: +*`client.user.full_name`*:: + -- type: keyword -example: us-east-1c - -Availability zone in which this host is running. +example: Albert Einstein +User's full name, if available. -- -*`cloud.region`*:: +*`client.user.group.id`*:: + -- type: keyword -example: us-east-1 - -Region in which this host is running. - +Unique identifier for the group on the system/platform. -- -*`cloud.instance.id`*:: +*`client.user.group.name`*:: + -- type: keyword -example: i-1234567890abcdef0 - -Instance ID of the host machine. - +Name of the group. -- -*`cloud.instance.name`*:: +*`client.user.hash`*:: + -- type: keyword -Instance name of the host machine. - +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -- -*`cloud.machine.type`*:: +*`client.user.id`*:: + -- type: keyword -example: t2.medium - -Machine type of the host machine. - +One or multiple unique identifiers of the user. -- -*`cloud.account.id`*:: +*`client.user.name`*:: + -- type: keyword -example: 666777888999 - -The cloud account or organization id used to identify different entities in a multi-tenant environment. -Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. +example: albert +Short name or login of the user. -- [float] -== container fields - -Container fields are used for meta information about the specific container that is the source of information. These fields help correlate data based containers from any runtime. +== cloud fields +Fields related to the cloud or infrastructure the events are coming from. -*`container.runtime`*:: +*`cloud.account.id`*:: + -- type: keyword -example: docker - -Runtime managing this container. +example: 666777888999 +The cloud account or organization id used to identify different entities in a multi-tenant environment. +Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. -- -*`container.id`*:: +*`cloud.availability_zone`*:: + -- type: keyword -Unique container id. +example: us-east-1c +Availability zone in which this host is running. -- -*`container.image.name`*:: +*`cloud.instance.id`*:: + -- type: keyword -Name of the image the container was built on. +example: i-1234567890abcdef0 +Instance ID of the host machine. -- -*`container.image.tag`*:: +*`cloud.instance.name`*:: + -- type: keyword -Container image tag. +Instance name of the host machine. +-- +*`cloud.machine.type`*:: ++ -- +type: keyword -*`container.name`*:: +example: t2.medium + +Machine type of the host machine. + +-- + +*`cloud.provider`*:: + -- type: keyword -Container name. +example: aws +Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. -- -*`container.labels`*:: +*`cloud.region`*:: + -- -type: object +type: keyword -Image labels. +example: us-east-1 +Region in which this host is running. -- [float] -== destination fields - -Destination fields describe details about the destination of a packet/event. Destination fields are usually populated in conjunction with source fields. +== container fields +Container fields are used for meta information about the specific container that is the source of information. +These fields help correlate data based containers from any runtime. -*`destination.address`*:: +*`container.id`*:: + -- type: keyword -Some event destination addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. -Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. - +Unique container id. -- -*`destination.ip`*:: +*`container.image.name`*:: + -- -type: ip +type: keyword -IP address of the destination. -Can be one or multiple IPv4 or IPv6 addresses. +Name of the image the container was built on. + +-- + +*`container.image.tag`*:: ++ +-- +type: keyword +Container image tag. -- -*`destination.port`*:: +*`container.labels`*:: + -- -type: long +type: object -Port of the destination. +Image labels. + +-- + +*`container.name`*:: ++ +-- +type: keyword +Container name. -- -*`destination.mac`*:: +*`container.runtime`*:: + -- type: keyword -MAC address of the destination. +example: docker +Runtime managing this container. -- -*`destination.domain`*:: +[float] +== destination fields + +Destination fields describe details about the destination of a packet/event. +Destination fields are usually populated in conjunction with source fields. + + +*`destination.address`*:: + -- type: keyword -Destination domain. - +Some event destination addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. -- @@ -3456,31 +3445,62 @@ type: long example: 184 -format: bytes - Bytes sent from the destination to the source. +-- +*`destination.domain`*:: ++ -- +type: keyword -*`destination.packets`*:: +Destination domain. + +-- + +*`destination.geo.city_name`*:: + -- -type: long +type: keyword -example: 12 +example: Montreal -Packets sent from the destination to the source. +City name. + +-- +*`destination.geo.continent_name`*:: ++ +-- +type: keyword + +example: North America + +Name of the continent. -- -[float] -== geo fields +*`destination.geo.country_iso_code`*:: ++ +-- +type: keyword + +example: CA + +Country ISO code. + +-- -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. +*`destination.geo.country_name`*:: ++ +-- +type: keyword +example: Canada +Country name. + +-- *`destination.geo.location`*:: + @@ -3491,30 +3511,29 @@ example: { "lon": -73.614830, "lat": 45.505918 } Longitude and latitude. - -- -*`destination.geo.continent_name`*:: +*`destination.geo.name`*:: + -- type: keyword -example: North America - -Name of the continent. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`destination.geo.country_name`*:: +*`destination.geo.region_iso_code`*:: + -- type: keyword -example: Canada - -Country name. +example: CA-QC +Region ISO code. -- @@ -3527,56 +3546,112 @@ example: Quebec Region name. +-- +*`destination.ip`*:: ++ -- +type: ip -*`destination.geo.city_name`*:: +IP address of the destination. +Can be one or multiple IPv4 or IPv6 addresses. + +-- + +*`destination.mac`*:: + -- type: keyword -example: Montreal +MAC address of the destination. -City name. +-- + +*`destination.packets`*:: ++ +-- +type: long + +example: 12 +Packets sent from the destination to the source. -- -*`destination.geo.country_iso_code`*:: +*`destination.port`*:: ++ +-- +type: long + +Port of the destination. + +-- + +*`destination.user.email`*:: + -- type: keyword -example: CA +User email address. -Country ISO code. +-- +*`destination.user.full_name`*:: ++ +-- +type: keyword + +example: Albert Einstein + +User's full name, if available. -- -*`destination.geo.region_iso_code`*:: +*`destination.user.group.id`*:: + -- type: keyword -example: CA-QC +Unique identifier for the group on the system/platform. -Region ISO code. +-- +*`destination.user.group.name`*:: ++ +-- +type: keyword + +Name of the group. -- -*`destination.geo.name`*:: +*`destination.user.hash`*:: + -- type: keyword -example: boston-dc +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +-- + +*`destination.user.id`*:: ++ +-- +type: keyword + +One or multiple unique identifiers of the user. + +-- + +*`destination.user.name`*:: ++ +-- +type: keyword +example: albert + +Short name or login of the user. -- @@ -3586,29 +3661,35 @@ Not typically used in automated geolocation. Meta-information specific to ECS. - *`ecs.version`*:: + -- type: keyword -example: 1.0.0-beta2 +example: 1.0.0 required: True ECS version this event conforms to. `ecs.version` is a required field and must exist in all events. When querying across multiple indices -- which may conform to slightly different ECS versions -- this field lets integrations adjust to the schema version of the events. -The current version is 1.0.0-beta2 . - -- [float] == error fields -These fields can represent errors of any kind. Use them for errors that happen while fetching events or in cases where the event itself contains an error. +These fields can represent errors of any kind. +Use them for errors that happen while fetching events or in cases where the event itself contains an error. + + +*`error.code`*:: ++ +-- +type: keyword +Error code describing the error. +-- *`error.id`*:: + @@ -3617,7 +3698,6 @@ type: keyword Unique identifier for the error. - -- *`error.message`*:: @@ -3627,98 +3707,113 @@ type: text Error message. - -- -*`error.code`*:: +[float] +== event fields + +The event fields are used for context information about the log or metric event itself. +A log is defined as an event containing details of something that happened. Log events must include the time at which the thing happened. Examples of log events include a process starting on a host, a network packet being sent from a source to a destination, or a network connection between a client and a server being initiated or closed. A metric is defined as an event containing one or more numerical or categorical measurements and the time at which the measurement was taken. Examples of metric events include memory pressure measured on a host, or vulnerabilities measured on a scanned host. + + +*`event.action`*:: + -- type: keyword -Error code describing the error. +example: user-password-change +The action captured by the event. +This describes the information in the event. It is more specific than `event.category`. Examples are `group-add`, `process-started`, `file-created`. The value is normally defined by the implementer. -- -[float] -== event fields +*`event.category`*:: ++ +-- +type: keyword -The event fields are used for context information about the log or metric event itself. A log is defined as an event containing details of something that happened. Log events must include the time at which the thing happened. Examples of log events include a process starting on a host, a network packet being sent from a source to a destination, or a network connection between a client and a server being initiated or closed. A metric is defined as an event containing one or more numerical or categorical measurements and the time at which the measurement was taken. Examples of metric events include memory pressure measured on a host, or vulnerabilities measured on a scanned host. +example: user-management +Event category. +This contains high-level information about the contents of the event. It is more generic than `event.action`, in the sense that typically a category contains multiple actions. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +-- -*`event.id`*:: +*`event.created`*:: + -- -type: keyword - -example: 8a4f500d - -Unique ID to describe the event. +type: date +event.created contains the date/time when the event was first read by an agent, or by your pipeline. +This field is distinct from @timestamp in that @timestamp typically contain the time extracted from the original event. +In most situations, these two timestamps will be slightly different. The difference can be used to calculate the delay between your source generating an event, and the time when your agent first processed it. This can be used to monitor your agent's or pipeline's ability to keep up with your event source. +In case the two timestamps are identical, @timestamp should be used. -- -*`event.kind`*:: +*`event.dataset`*:: + -- type: keyword -example: state - -The kind of the event. -This gives information about what type of information the event contains, without being specific to the contents of the event. Examples are `event`, `state`, `alarm`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +example: stats +Name of the dataset. +The concept of a `dataset` (fileset / metricset) is used in Beats as a subset of modules. It contains the information which is currently stored in metricset.name and metricset.module or fileset.name. -- -*`event.category`*:: +*`event.duration`*:: + -- -type: keyword +type: long -example: user-management +Duration of the event in nanoseconds. +If event.start and event.end are known this value should be the difference between the end and start time. -Event category. -This contains high-level information about the contents of the event. It is more generic than `event.action`, in the sense that typically a category contains multiple actions. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +-- +*`event.end`*:: ++ +-- +type: date + +event.end contains the date when the event ended or when the activity was last observed. -- -*`event.action`*:: +*`event.hash`*:: + -- type: keyword -example: user-password-change - -The action captured by the event. -This describes the information in the event. It is more specific than `event.category`. Examples are `group-add`, `process-started`, `file-created`. The value is normally defined by the implementer. +example: 123456789012345678901234567890ABCD +Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate log integrity. -- -*`event.outcome`*:: +*`event.id`*:: + -- type: keyword -example: success - -The outcome of the event. -If the event describes an action, this fields contains the outcome of that action. Examples outcomes are `success` and `failure`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +example: 8a4f500d +Unique ID to describe the event. -- -*`event.type`*:: +*`event.kind`*:: + -- type: keyword -Reserved for future usage. -Please avoid using this field for user data. +example: state +The kind of the event. +This gives information about what type of information the event contains, without being specific to the contents of the event. Examples are `event`, `state`, `alarm`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. -- @@ -3732,19 +3827,48 @@ example: mysql Name of the module this data is coming from. This information is coming from the modules used in Beats or Logstash. +-- +*`event.original`*:: ++ -- +type: keyword -*`event.dataset`*:: +example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 + +Raw text message of entire event. Used to demonstrate log integrity. +This field is not indexed and doc_values are disabled. It cannot be searched, but it can be retrieved from `_source`. + +-- + +*`event.outcome`*:: + -- type: keyword -example: stats +example: success -Name of the dataset. -The concept of a `dataset` (fileset / metricset) is used in Beats as a subset of modules. It contains the information which is currently stored in metricset.name and metricset.module or fileset.name. +The outcome of the event. +If the event describes an action, this fields contains the outcome of that action. Examples outcomes are `success` and `failure`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. + +-- +*`event.risk_score`*:: ++ +-- +type: float + +Risk score or priority of the event (e.g. security solutions). Use your system's original value here. + +-- + +*`event.risk_score_norm`*:: ++ +-- +type: float + +Normalized risk score or priority of the event, on a scale of 0 to 100. +This is mainly useful if you use more than one system that assigns risk scores, and you want to see a normalized value across all systems. -- @@ -3755,122 +3879,132 @@ type: long example: 7 -Severity describes the severity of the event. What the different severity values mean can very different between use cases. It's up to the implementer to make sure severities are consistent across events. - +Severity describes the original severity of the event. What the different severity values mean can very different between use cases. It's up to the implementer to make sure severities are consistent across events. -- -*`event.original`*:: +*`event.start`*:: + -- -type: keyword +type: date -example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 +event.start contains the date when the event started or when the activity was first observed. -Raw text message of entire event. Used to demonstrate log integrity. -This field is not indexed and doc_values are disabled. It cannot be searched, but it can be retrieved from `_source`. +-- +*`event.timezone`*:: ++ +-- +type: keyword -Field is not indexed. +This field should be populated when the event's timestamp does not include timezone information already (e.g. default Syslog timestamps). It's optional otherwise. +Acceptable timezone formats are: a canonical ID (e.g. "Europe/Amsterdam"), abbreviated (e.g. "EST") or an HH:mm differential (e.g. "-05:00"). -- -*`event.hash`*:: +*`event.type`*:: + -- type: keyword -example: 123456789012345678901234567890ABCD +Reserved for future usage. +Please avoid using this field for user data. -Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate log integrity. +-- +[float] +== file fields --- +A file is defined as a set of information that has been created on, or has existed on a filesystem. +File objects can be associated with host events, network events, and/or file events (e.g., those produced by File Integrity Monitoring [FIM] products or services). File fields provide details about the affected file associated with the event or metric. -*`event.duration`*:: + +*`file.ctime`*:: + -- -type: long +type: date -format: duration +Last time file metadata changed. -Duration of the event in nanoseconds. -If event.start and event.end are known this value should be the difference between the end and start time. +-- +*`file.device`*:: ++ +-- +type: keyword + +Device that is the source of the file. -- -*`event.timezone`*:: +*`file.extension`*:: + -- type: keyword -This field should be populated when the event's timestamp does not include timezone information already (e.g. default Syslog timestamps). It's optional otherwise. -Acceptable timezone formats are: a canonical ID (e.g. "Europe/Amsterdam"), abbreviated (e.g. "EST") or an HH:mm differential (e.g. "-05:00"). +example: png +File extension. +This should allow easy filtering by file extensions. -- -*`event.created`*:: +*`file.gid`*:: + -- -type: date - -event.created contains the date when the event was created. -This timestamp is distinct from @timestamp in that @timestamp contains the processed timestamp. For logs these two timestamps can be different as the timestamp in the log line and when the event is read for example by Filebeat are not identical. `@timestamp` must contain the timestamp extracted from the log line, event.created when the log line is read. The same could apply to package capturing where @timestamp contains the timestamp extracted from the network package and event.created when the event was created. -In case the two timestamps are identical, @timestamp should be used. +type: keyword +Primary group ID (GID) of the file. -- -*`event.start`*:: +*`file.group`*:: + -- -type: date +type: keyword -event.start contains the date when the event started or when the activity was first observed. +Primary group name of the file. +-- +*`file.inode`*:: ++ -- +type: keyword -*`event.end`*:: +Inode representing the file in the filesystem. + +-- + +*`file.mode`*:: + -- -type: date +type: keyword -event.end contains the date when the event ended or when the activity was last observed. +example: 416 +Mode of the file in octal representation. -- -*`event.risk_score`*:: +*`file.mtime`*:: + -- -type: float - -Risk score or priority of the event (e.g. security solutions). Use your system's original value here. +type: date +Last time file content was modified. -- -*`event.risk_score_norm`*:: +*`file.owner`*:: + -- -type: float - -Normalized risk score or priority of the event, on a scale of 0 to 100. -This is mainly useful if you use more than one system that assigns risk scores, and you want to see a normalized value across all systems. +type: keyword +File owner's username. -- -[float] -== file fields - -A file is defined as a set of information that has been created on, or has existed on a filesystem. File objects can be associated with host events, network events, and/or file events (e.g., those produced by File Integrity Monitoring [FIM] products or services). File fields provide details about the affected file associated with the event or metric. - - - *`file.path`*:: + -- @@ -3880,25 +4014,21 @@ Path to the file. -- -*`file.target_path`*:: +*`file.size`*:: + -- -type: keyword +type: long -Target path for symlinks. +File size in bytes (field is only added when `type` is `file`). -- -*`file.extension`*:: +*`file.target_path`*:: + -- type: keyword -example: png - -File extension. -This should allow easy filtering by file extensions. - +Target path for symlinks. -- @@ -3911,98 +4041,109 @@ File type (file, dir, or symlink). -- -*`file.device`*:: +*`file.uid`*:: + -- type: keyword -Device that is the source of the file. +The user ID (UID) or security identifier (SID) of the file owner. -- -*`file.inode`*:: -+ --- -type: keyword +[float] +== geo fields -Inode representing the file in the filesystem. +Geo fields can carry data about a specific location related to an event. +This geolocation information can be derived from techniques such as Geo IP, or be user-supplied. --- -*`file.uid`*:: +*`geo.city_name`*:: + -- type: keyword -The user ID (UID) or security identifier (SID) of the file owner. +example: Montreal +City name. -- -*`file.owner`*:: +*`geo.continent_name`*:: + -- type: keyword -File owner's username. +example: North America + +Name of the continent. -- -*`file.gid`*:: +*`geo.country_iso_code`*:: + -- type: keyword -Primary group ID (GID) of the file. +example: CA + +Country ISO code. -- -*`file.group`*:: +*`geo.country_name`*:: + -- type: keyword -Primary group name of the file. +example: Canada + +Country name. -- -*`file.mode`*:: +*`geo.location`*:: + -- -type: keyword +type: geo_point -example: 416 +example: { "lon": -73.614830, "lat": 45.505918 } -Mode of the file in octal representation. +Longitude and latitude. -- -*`file.size`*:: +*`geo.name`*:: + -- -type: long +type: keyword -format: bytes +example: boston-dc -File size in bytes (field is only added when `type` is `file`). +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`file.mtime`*:: +*`geo.region_iso_code`*:: + -- -type: date +type: keyword -Last time file content was modified. +example: CA-QC + +Region ISO code. -- -*`file.ctime`*:: +*`geo.region_name`*:: + -- -type: date +type: keyword -Last time file metadata changed. +example: Quebec + +Region name. -- @@ -4012,7 +4153,6 @@ Last time file metadata changed. The group fields are meant to represent groups that are relevant to the event. - *`group.id`*:: + -- @@ -4020,7 +4160,6 @@ type: keyword Unique identifier for the group on the system/platform. - -- *`group.name`*:: @@ -4030,133 +4169,162 @@ type: keyword Name of the group. - -- [float] == host fields -A host is defined as a general computing instance. ECS host.* fields should be populated with details about the host on which the event happened, or on which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. - +A host is defined as a general computing instance. +ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. -*`host.hostname`*:: +*`host.architecture`*:: + -- type: keyword -Hostname of the host. -It normally contains what the `hostname` command returns on the host machine. +example: x86_64 +Operating system architecture. -- -*`host.name`*:: +*`host.geo.city_name`*:: + -- type: keyword -Name of the host. -It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. +example: Montreal +City name. -- -*`host.id`*:: +*`host.geo.continent_name`*:: + -- type: keyword -Unique host id. -As hostname is not always unique, use values that are meaningful in your environment. -Example: The current usage of `beat.name`. +example: North America +Name of the continent. -- -*`host.ip`*:: +*`host.geo.country_iso_code`*:: + -- -type: ip +type: keyword -Host ip address. +example: CA +Country ISO code. -- -*`host.mac`*:: +*`host.geo.country_name`*:: + -- type: keyword -Host mac address. +example: Canada +Country name. -- -*`host.type`*:: +*`host.geo.location`*:: + -- -type: keyword +type: geo_point -Type of host. -For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. +example: { "lon": -73.614830, "lat": 45.505918 } +Longitude and latitude. -- -*`host.architecture`*:: +*`host.geo.name`*:: + -- type: keyword -example: x86_64 - -Operating system architecture. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -[float] -== os fields +*`host.geo.region_iso_code`*:: ++ +-- +type: keyword -The OS fields contain information about the operating system. +example: CA-QC +Region ISO code. +-- -*`host.os.platform`*:: +*`host.geo.region_name`*:: + -- type: keyword -example: darwin +example: Quebec -Operating system platform (such centos, ubuntu, windows). +Region name. + +-- +*`host.hostname`*:: ++ +-- +type: keyword + +Hostname of the host. +It normally contains what the `hostname` command returns on the host machine. -- -*`host.os.name`*:: +*`host.id`*:: + -- type: keyword -example: Mac OS X +Unique host id. +As hostname is not always unique, use values that are meaningful in your environment. +Example: The current usage of `beat.name`. -Operating system name, without the version. +-- + +*`host.ip`*:: ++ +-- +type: ip +Host ip address. -- -*`host.os.full`*:: +*`host.mac`*:: + -- type: keyword -example: Mac OS Mojave +Host mac address. -Operating system name, including the version or code name. +-- + +*`host.name`*:: ++ +-- +type: keyword +Name of the host. +It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. -- @@ -4169,18 +4337,16 @@ example: debian OS family (such as redhat, debian, freebsd, windows). - -- -*`host.os.version`*:: +*`host.os.full`*:: + -- type: keyword -example: 10.14.1 - -Operating system version as a raw string. +example: Mac OS Mojave +Operating system name, including the version or code name. -- @@ -4193,131 +4359,133 @@ example: 4.4.0-112-generic Operating system kernel version as a raw string. - -- -[float] -== geo fields +*`host.os.name`*:: ++ +-- +type: keyword -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. +example: Mac OS X +Operating system name, without the version. +-- -*`host.geo.location`*:: +*`host.os.platform`*:: + -- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } +type: keyword -Longitude and latitude. +example: darwin +Operating system platform (such centos, ubuntu, windows). -- -*`host.geo.continent_name`*:: +*`host.os.version`*:: + -- type: keyword -example: North America - -Name of the continent. +example: 10.14.1 +Operating system version as a raw string. -- -*`host.geo.country_name`*:: +*`host.type`*:: + -- type: keyword -example: Canada +Type of host. +For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. -Country name. +-- + +*`host.user.email`*:: ++ +-- +type: keyword +User email address. -- -*`host.geo.region_name`*:: +*`host.user.full_name`*:: + -- type: keyword -example: Quebec - -Region name. +example: Albert Einstein +User's full name, if available. -- -*`host.geo.city_name`*:: +*`host.user.group.id`*:: + -- type: keyword -example: Montreal +Unique identifier for the group on the system/platform. -City name. +-- + +*`host.user.group.name`*:: ++ +-- +type: keyword +Name of the group. -- -*`host.geo.country_iso_code`*:: +*`host.user.hash`*:: + -- type: keyword -example: CA - -Country ISO code. - +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -- -*`host.geo.region_iso_code`*:: +*`host.user.id`*:: + -- type: keyword -example: CA-QC - -Region ISO code. - +One or multiple unique identifiers of the user. -- -*`host.geo.name`*:: +*`host.user.name`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +example: albert +Short name or login of the user. -- [float] == http fields -Fields related to HTTP activity. - +Fields related to HTTP activity. Use the `url` field set to store the url of the request. -*`http.request.method`*:: +*`http.request.body.bytes`*:: + -- -type: keyword - -example: get, post, put +type: long -Http request method. -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: 887 +Size in bytes of the request body. -- @@ -4328,84 +4496,63 @@ type: keyword example: Hello world -The full http request body. - - --- - -*`http.request.referrer`*:: -+ --- -type: keyword - -example: https://blog.example.com/ - -Referrer for this HTTP request. - +The full HTTP request body. -- -*`http.response.status_code`*:: +*`http.request.bytes`*:: + -- type: long -example: 404 - -Http response status code. +example: 1437 +Total size in bytes of the request (body and headers). -- -*`http.response.body.content`*:: +*`http.request.method`*:: + -- type: keyword -example: Hello world - -The full http response body. +example: get, post, put +HTTP request method. +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`http.version`*:: +*`http.request.referrer`*:: + -- type: keyword -example: 1.1 - -Http version. +example: https://blog.example.com/ +Referrer for this HTTP request. -- -*`http.request.bytes`*:: +*`http.response.body.bytes`*:: + -- type: long -example: 1437 - -format: bytes - -Total size in bytes of the request (body and headers). +example: 887 +Size in bytes of the response body. -- -*`http.request.body.bytes`*:: +*`http.response.body.content`*:: + -- -type: long - -example: 887 - -format: bytes +type: keyword -Size in bytes of the request body. +example: Hello world +The full HTTP response body. -- @@ -4416,24 +4563,29 @@ type: long example: 1437 -format: bytes - Total size in bytes of the response (body and headers). - -- -*`http.response.body.bytes`*:: +*`http.response.status_code`*:: + -- type: long -example: 887 +example: 404 -format: bytes +HTTP response status code. -Size in bytes of the response body. +-- + +*`http.version`*:: ++ +-- +type: keyword + +example: 1.1 +HTTP version. -- @@ -4443,17 +4595,15 @@ Size in bytes of the response body. Fields which are specific to log events. - *`log.level`*:: + -- type: keyword -example: ERR - -Log level of the log event. -Some examples are `WARN`, `ERR`, `INFO`. +example: err +Original log level of the log event. +Some examples are `warn`, `error`, `i`. -- @@ -4464,96 +4614,52 @@ type: keyword example: Sep 19 08:26:10 localhost My log - This is the original log message and contains the full log message before splitting it up in multiple parts. In contrast to the `message` field which can contain an extracted part of the log message, this field contains the original, full log message. It can have already some modifications applied like encoding or new lines removed to clean up the log message. This field is not indexed and doc_values are disabled so it can't be queried but the value can be retrieved from `_source`. - -Field is not indexed. - -- [float] == network fields -The network is defined as the communication path over which a host or network event happens. The network.* fields should be populated with details about the network activity associated with an event. - - - -*`network.name`*:: -+ --- -type: keyword - -example: Guest Wifi - -Name given by operators to sections of their network. - - --- - -*`network.type`*:: -+ --- -type: keyword - -example: ipv4 - -In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. - - --- - -*`network.iana_number`*:: -+ --- -type: keyword - -example: 6 - -IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). Standardized list of protocols. This aligns well with NetFlow and sFlow related logs which use the IANA Protocol Number. - +The network is defined as the communication path over which a host or network event happens. +The network.* fields should be populated with details about the network activity associated with an event. --- -*`network.transport`*:: +*`network.application`*:: + -- type: keyword -example: tcp - -Same as network.iana_number, but instead using the Keyword name of the transport layer (udp, tcp, ipv6-icmp, etc.) -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: aim +A name given to an application level protocol. This can be arbitrarily assigned for things like microservices, but also apply to things like skype, icq, facebook, twitter. This would be used in situations where the vendor or service can be decoded such as from the source/dest IP owners, ports, or wire format. +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`network.application`*:: +*`network.bytes`*:: + -- -type: keyword - -example: aim +type: long -A name given to an application. This can be arbitrarily assigned for things like microservices, but also apply to things like skype, icq, facebook, twitter. This would be used in situations where the vendor or service can be decoded such as from the source/dest IP owners, ports, or wire format. -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: 368 +Total bytes transferred in both directions. +If `source.bytes` and `destination.bytes` are known, `network.bytes` is their sum. -- -*`network.protocol`*:: +*`network.community_id`*:: + -- type: keyword -example: http - -L7 Network protocol name. ex. http, lumberjack, transport protocol. -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: 1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0= +A hash of source and destination IPs and ports, as well as the protocol used in a communication. This is a tool-agnostic standard to identify flows. +Learn more at https://github.com/corelight/community-id-spec. -- @@ -4575,7 +4681,6 @@ Recommended values are: When mapping events from a host-based monitoring context, populate this field from the host's point of view. When mapping events from a network or perimeter-based monitoring context, populate this field from the point of view of your network perimeter. - -- *`network.forwarded_ip`*:: @@ -4587,34 +4692,27 @@ example: 192.1.1.2 Host IP address when the source IP address is the proxy. - -- -*`network.community_id`*:: +*`network.iana_number`*:: + -- type: keyword -example: 1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0= - -A hash of source and destination IPs and ports, as well as the protocol used in a communication. This is a tool-agnostic standard to identify flows. -Learn more at https://github.com/corelight/community-id-spec. +example: 6 +IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). Standardized list of protocols. This aligns well with NetFlow and sFlow related logs which use the IANA Protocol Number. -- -*`network.bytes`*:: +*`network.name`*:: + -- -type: long - -example: 368 - -format: bytes +type: keyword -Total bytes transferred in both directions. -If `source.bytes` and `destination.bytes` are known, `network.bytes` is their sum. +example: Guest Wifi +Name given by operators to sections of their network. -- @@ -4628,129 +4726,165 @@ example: 24 Total packets transferred in both directions. If `source.packets` and `destination.packets` are known, `network.packets` is their sum. - -- -[float] -== observer fields +*`network.protocol`*:: ++ +-- +type: keyword -An observer is defined as a special network, security, or application device used to detect, observe, or create network, security, or application-related events and metrics. This could be a custom hardware appliance or a server that has been configured to run special network, security, or application software. Examples include firewalls, intrusion detection/prevention systems, network monitoring sensors, web application firewalls, data loss prevention systems, and APM servers. The observer.* fields shall be populated with details of the system, if any, that detects, observes and/or creates a network, security, or application event or metric. Message queues and ETL components used in processing events or metrics are not considered observers in ECS. +example: http +L7 Network protocol name. ex. http, lumberjack, transport protocol. +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". +-- -*`observer.mac`*:: +*`network.transport`*:: + -- type: keyword -MAC address of the observer +example: tcp +Same as network.iana_number, but instead using the Keyword name of the transport layer (udp, tcp, ipv6-icmp, etc.) +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`observer.ip`*:: +*`network.type`*:: + -- -type: ip +type: keyword -IP address of the observer. +example: ipv4 +In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`observer.hostname`*:: +[float] +== observer fields + +An observer is defined as a special network, security, or application device used to detect, observe, or create network, security, or application-related events and metrics. +This could be a custom hardware appliance or a server that has been configured to run special network, security, or application software. Examples include firewalls, intrusion detection/prevention systems, network monitoring sensors, web application firewalls, data loss prevention systems, and APM servers. The observer.* fields shall be populated with details of the system, if any, that detects, observes and/or creates a network, security, or application event or metric. Message queues and ETL components used in processing events or metrics are not considered observers in ECS. + + +*`observer.geo.city_name`*:: + -- type: keyword -Hostname of the observer. +example: Montreal +City name. -- -*`observer.vendor`*:: +*`observer.geo.continent_name`*:: + -- type: keyword -observer vendor information. +example: North America +Name of the continent. -- -*`observer.version`*:: +*`observer.geo.country_iso_code`*:: + -- type: keyword -Observer version. +example: CA +Country ISO code. -- -*`observer.serial_number`*:: +*`observer.geo.country_name`*:: + -- type: keyword -Observer serial number. +example: Canada +Country name. -- -*`observer.type`*:: +*`observer.geo.location`*:: + -- -type: keyword +type: geo_point -example: firewall +example: { "lon": -73.614830, "lat": 45.505918 } -The type of the observer the data is coming from. -There is no predefined list of observer types. Some examples are `forwarder`, `firewall`, `ids`, `ips`, `proxy`, `poller`, `sensor`, `APM server`. +Longitude and latitude. +-- +*`observer.geo.name`*:: ++ -- +type: keyword -[float] -== os fields +example: boston-dc -The OS fields contain information about the operating system. +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. + +-- + +*`observer.geo.region_iso_code`*:: ++ +-- +type: keyword +example: CA-QC + +Region ISO code. +-- -*`observer.os.platform`*:: +*`observer.geo.region_name`*:: + -- type: keyword -example: darwin - -Operating system platform (such centos, ubuntu, windows). +example: Quebec +Region name. -- -*`observer.os.name`*:: +*`observer.hostname`*:: + -- type: keyword -example: Mac OS X +Hostname of the observer. -Operating system name, without the version. +-- + +*`observer.ip`*:: ++ +-- +type: ip +IP address of the observer. -- -*`observer.os.full`*:: +*`observer.mac`*:: + -- type: keyword -example: Mac OS Mojave - -Operating system name, including the version or code name. - +MAC address of the observer -- @@ -4763,18 +4897,16 @@ example: debian OS family (such as redhat, debian, freebsd, windows). - -- -*`observer.os.version`*:: +*`observer.os.full`*:: + -- type: keyword -example: 10.14.1 - -Operating system version as a raw string. +example: Mac OS Mojave +Operating system name, including the version or code name. -- @@ -4787,138 +4919,102 @@ example: 4.4.0-112-generic Operating system kernel version as a raw string. - --- - -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - -*`observer.geo.location`*:: -+ --- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } - -Longitude and latitude. - - -- -*`observer.geo.continent_name`*:: +*`observer.os.name`*:: + -- type: keyword -example: North America - -Name of the continent. +example: Mac OS X +Operating system name, without the version. -- -*`observer.geo.country_name`*:: +*`observer.os.platform`*:: + -- type: keyword -example: Canada - -Country name. +example: darwin +Operating system platform (such centos, ubuntu, windows). -- -*`observer.geo.region_name`*:: +*`observer.os.version`*:: + -- type: keyword -example: Quebec - -Region name. +example: 10.14.1 +Operating system version as a raw string. -- -*`observer.geo.city_name`*:: +*`observer.serial_number`*:: + -- type: keyword -example: Montreal - -City name. - +Observer serial number. -- -*`observer.geo.country_iso_code`*:: +*`observer.type`*:: + -- type: keyword -example: CA - -Country ISO code. +example: firewall +The type of the observer the data is coming from. +There is no predefined list of observer types. Some examples are `forwarder`, `firewall`, `ids`, `ips`, `proxy`, `poller`, `sensor`, `APM server`. -- -*`observer.geo.region_iso_code`*:: +*`observer.vendor`*:: + -- type: keyword -example: CA-QC - -Region ISO code. - +observer vendor information. -- -*`observer.geo.name`*:: +*`observer.version`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. - +Observer version. -- [float] == organization fields -The organization fields enrich data with information about the company or entity the data is associated with. These fields help you arrange or filter data stored in an index by one or multiple organizations. - +The organization fields enrich data with information about the company or entity the data is associated with. +These fields help you arrange or filter data stored in an index by one or multiple organizations. -*`organization.name`*:: +*`organization.id`*:: + -- type: keyword -Organization name. - +Unique identifier for the organization. -- -*`organization.id`*:: +*`organization.name`*:: + -- type: keyword -Unique identifier for the organization. - +Organization name. -- @@ -4928,93 +5024,99 @@ Unique identifier for the organization. The OS fields contain information about the operating system. - -*`os.platform`*:: +*`os.family`*:: + -- type: keyword -example: darwin - -Operating system platform (such centos, ubuntu, windows). +example: debian +OS family (such as redhat, debian, freebsd, windows). -- -*`os.name`*:: +*`os.full`*:: + -- type: keyword -example: Mac OS X - -Operating system name, without the version. +example: Mac OS Mojave +Operating system name, including the version or code name. -- -*`os.full`*:: +*`os.kernel`*:: + -- type: keyword -example: Mac OS Mojave - -Operating system name, including the version or code name. +example: 4.4.0-112-generic +Operating system kernel version as a raw string. -- -*`os.family`*:: +*`os.name`*:: + -- type: keyword -example: debian - -OS family (such as redhat, debian, freebsd, windows). +example: Mac OS X +Operating system name, without the version. -- -*`os.version`*:: +*`os.platform`*:: + -- type: keyword -example: 10.14.1 - -Operating system version as a raw string. +example: darwin +Operating system platform (such centos, ubuntu, windows). -- -*`os.kernel`*:: +*`os.version`*:: + -- type: keyword -example: 4.4.0-112-generic - -Operating system kernel version as a raw string. +example: 10.14.1 +Operating system version as a raw string. -- [float] == process fields -These fields contain information about a process. These fields can help you correlate metrics information with a process id/name from a log message. The `process.pid` often stays in the metric itself and is copied to the global field for correlation. +These fields contain information about a process. +These fields can help you correlate metrics information with a process id/name from a log message. The `process.pid` often stays in the metric itself and is copied to the global field for correlation. + +*`process.args`*:: ++ +-- +type: keyword +example: ['ssh', '-l', 'user', '10.0.0.16'] -*`process.pid`*:: +Array of process arguments. +May be filtered to protect sensitive information. + +-- + +*`process.executable`*:: + -- -type: long +type: keyword -Process id. +example: /usr/bin/ssh +Absolute path to the process executable. -- @@ -5028,6 +5130,14 @@ example: ssh Process name. Sometimes called program name or similar. +-- + +*`process.pid`*:: ++ +-- +type: long + +Process id. -- @@ -5038,31 +5148,27 @@ type: long Process parent id. - -- -*`process.args`*:: +*`process.start`*:: + -- -type: keyword - -example: ['ssh', '-l', 'user', '10.0.0.16'] +type: date -Process arguments. -May be filtered to protect sensitive information. +example: 2016-05-23T08:05:34.853Z +The time the process started. -- -*`process.executable`*:: +*`process.thread.id`*:: + -- -type: keyword - -example: /usr/bin/ssh +type: long -Absolute path to the process executable. +example: 4242 +Thread ID. -- @@ -5074,133 +5180,180 @@ type: keyword Process title. The proctitle, some times the same as process name. Can also be different: for example a browser setting its title to the web page currently opened. - -- -*`process.thread.id`*:: +*`process.working_directory`*:: + -- -type: long +type: keyword -example: 4242 +example: /home/alice -Thread ID. +The working directory of the process. + +-- + +[float] +== related fields + +This field set is meant to facilitate pivoting around a piece of data. +Some pieces of information can be seen in many places in an ECS event. To facilitate searching for them, store an array of all seen values to their corresponding field in `related.`. +A concrete example is IP addresses, which can be under host, observer, source, destination, client, server, and network.forwarded_ip. If you append all IPs to `related.ip`, you can then search for a given IP trivially, no matter where it appeared, by querying `related.ip:a.b.c.d`. +*`related.ip`*:: ++ -- +type: ip -*`process.start`*:: +All of the IPs seen on your event. + +-- + +[float] +== server fields + +A Server is defined as the responder in a network connection for events regarding sessions, connections, or bidirectional flow records. +For TCP events, the server is the receiver of the initial SYN packet(s) of the TCP connection. For other protocols, the server is generally the responder in the network transaction. Some systems actually use the term "responder" to refer the server in TCP connections. The server fields describe details about the system acting as the server in the network event. Server fields are usually populated in conjunction with client fields. Server fields are generally not populated for packet-level events. +Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. + + +*`server.address`*:: + -- -type: date +type: keyword -example: 2016-05-23T08:05:34.853Z +Some event server addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. -The time the process started. +-- +*`server.bytes`*:: ++ +-- +type: long + +example: 184 + +Bytes sent from the server to the client. -- -*`process.working_directory`*:: +*`server.domain`*:: + -- type: keyword -example: /home/alice - -The working directory of the process. +Server domain. +-- +*`server.geo.city_name`*:: ++ -- +type: keyword -[float] -== related fields - -This field set is meant to facilitate pivoting around a piece of data. Some pieces of information can be seen in many places in ECS. To facilitate searching for them, append values to their corresponding field in `related.`. A concrete example is IP addresses, which can be under host, observer, source, destination, client, server, and network.forwarded_ip. If you append all IPs to `related.ip`, you can then search for a given IP trivially, no matter where it appeared, by querying `related.ip:a.b.c.d`. +example: Montreal +City name. +-- -*`related.ip`*:: +*`server.geo.continent_name`*:: + -- -type: ip +type: keyword -All of the IPs seen on your event. +example: North America +Name of the continent. -- -[float] -== server fields +*`server.geo.country_iso_code`*:: ++ +-- +type: keyword -A Server is defined as the responder in a network connection for events regarding sessions, connections, or bidirectional flow records. For TCP events, the server is the receiver of the initial SYN packet(s) of the TCP connection. For other protocols, the server is generally the responder in the network transaction. Some systems actually use the term "responder" to refer the server in TCP connections. The server fields describe details about the system acting as the server in the network event. Server fields are usually populated in conjunction with client fields. Server fields are generally not populated for packet-level events. -Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. +example: CA +Country ISO code. +-- -*`server.address`*:: +*`server.geo.country_name`*:: + -- type: keyword -Some event server addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. -Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. +example: Canada +Country name. -- -*`server.ip`*:: +*`server.geo.location`*:: + -- -type: ip +type: geo_point -IP address of the server. -Can be one or multiple IPv4 or IPv6 addresses. +example: { "lon": -73.614830, "lat": 45.505918 } +Longitude and latitude. -- -*`server.port`*:: +*`server.geo.name`*:: + -- -type: long +type: keyword -Port of the server. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`server.mac`*:: +*`server.geo.region_iso_code`*:: + -- type: keyword -MAC address of the server. +example: CA-QC +Region ISO code. -- -*`server.domain`*:: +*`server.geo.region_name`*:: + -- type: keyword -Server domain. +example: Quebec +Region name. -- -*`server.bytes`*:: +*`server.ip`*:: + -- -type: long +type: ip -example: 184 +IP address of the server. +Can be one or multiple IPv4 or IPv6 addresses. -format: bytes +-- -Bytes sent from the server to the client. +*`server.mac`*:: ++ +-- +type: keyword +MAC address of the server. -- @@ -5213,120 +5366,103 @@ example: 12 Packets sent from the server to the client. - -- -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - -*`server.geo.location`*:: +*`server.port`*:: + -- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } - -Longitude and latitude. +type: long +Port of the server. -- -*`server.geo.continent_name`*:: +*`server.user.email`*:: + -- type: keyword -example: North America - -Name of the continent. - +User email address. -- -*`server.geo.country_name`*:: +*`server.user.full_name`*:: + -- type: keyword -example: Canada - -Country name. +example: Albert Einstein +User's full name, if available. -- -*`server.geo.region_name`*:: +*`server.user.group.id`*:: + -- type: keyword -example: Quebec - -Region name. - +Unique identifier for the group on the system/platform. -- -*`server.geo.city_name`*:: +*`server.user.group.name`*:: + -- type: keyword -example: Montreal - -City name. - +Name of the group. -- -*`server.geo.country_iso_code`*:: +*`server.user.hash`*:: + -- type: keyword -example: CA - -Country ISO code. - +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -- -*`server.geo.region_iso_code`*:: +*`server.user.id`*:: + -- type: keyword -example: CA-QC - -Region ISO code. - +One or multiple unique identifiers of the user. -- -*`server.geo.name`*:: +*`server.user.name`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +example: albert +Short name or login of the user. -- [float] == service fields -The service fields describe the service for or from which the data was collected. These fields help you find and correlate logs for a specific service and version. +The service fields describe the service for or from which the data was collected. +These fields help you find and correlate logs for a specific service and version. + + +*`service.ephemeral_id`*:: ++ +-- +type: keyword + +example: 8a4f500f +Ephemeral identifier of this service (if one exists). +This id normally changes across restarts, but `service.id` does not. +-- *`service.id`*:: + @@ -5339,7 +5475,6 @@ Unique identifier of the running service. This id should uniquely identify this service. This makes it possible to correlate logs and metrics for one specific service. Example: If you are experiencing issues with one redis instance, you can filter on that id to see metrics and logs for that single instance. - -- *`service.name`*:: @@ -5354,6 +5489,14 @@ The name of the service is normally user given. This allows if two instances of Also it allows for distributed services that run on multiple hosts to correlate the related instances based on the name. In the case of Elasticsearch the service.name could contain the cluster name. For Beats the service.name is by default a copy of the `service.type` field if no name is specified. +-- + +*`service.state`*:: ++ +-- +type: keyword + +Current state of the service. -- @@ -5368,115 +5511,163 @@ The type of the service data is collected from. The type can be used to group and correlate logs and metrics from one service type. Example: If logs or metrics are collected from Elasticsearch, `service.type` would be `elasticsearch`. - -- -*`service.state`*:: +*`service.version`*:: + -- type: keyword -Current state of the service. +example: 3.2.4 +Version of the service the data was collected from. +This allows to look at a data set only for a specific version of a service. -- -*`service.version`*:: +[float] +== source fields + +Source fields describe details about the source of a packet/event. +Source fields are usually populated in conjunction with destination fields. + + +*`source.address`*:: + -- type: keyword -example: 3.2.4 +Some event source addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. -Version of the service the data was collected from. -This allows to look at a data set only for a specific version of a service. +-- + +*`source.bytes`*:: ++ +-- +type: long + +example: 184 +Bytes sent from the source to the destination. -- -*`service.ephemeral_id`*:: +*`source.domain`*:: + -- type: keyword -example: 8a4f500f +Source domain. -Ephemeral identifier of this service (if one exists). -This id normally changes across restarts, but `service.id` does not. +-- + +*`source.geo.city_name`*:: ++ +-- +type: keyword + +example: Montreal +City name. -- -[float] -== source fields +*`source.geo.continent_name`*:: ++ +-- +type: keyword -Source fields describe details about the source of a packet/event. Source fields are usually populated in conjunction with destination fields. +example: North America +Name of the continent. +-- -*`source.address`*:: +*`source.geo.country_iso_code`*:: + -- type: keyword -Some event source addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. -Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. +example: CA +Country ISO code. -- -*`source.ip`*:: +*`source.geo.country_name`*:: + -- -type: ip +type: keyword -IP address of the source. -Can be one or multiple IPv4 or IPv6 addresses. +example: Canada +Country name. -- -*`source.port`*:: +*`source.geo.location`*:: + -- -type: long +type: geo_point -Port of the source. +example: { "lon": -73.614830, "lat": 45.505918 } +Longitude and latitude. -- -*`source.mac`*:: +*`source.geo.name`*:: + -- type: keyword -MAC address of the source. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`source.domain`*:: +*`source.geo.region_iso_code`*:: + -- type: keyword -Source domain. +example: CA-QC +Region ISO code. -- -*`source.bytes`*:: +*`source.geo.region_name`*:: + -- -type: long +type: keyword -example: 184 +example: Quebec + +Region name. + +-- + +*`source.ip`*:: ++ +-- +type: ip + +IP address of the source. +Can be one or multiple IPv4 or IPv6 addresses. -format: bytes +-- -Bytes sent from the source to the destination. +*`source.mac`*:: ++ +-- +type: keyword +MAC address of the source. -- @@ -5489,133 +5680,110 @@ example: 12 Packets sent from the source to the destination. - -- -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - -*`source.geo.location`*:: +*`source.port`*:: + -- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } - -Longitude and latitude. +type: long +Port of the source. -- -*`source.geo.continent_name`*:: +*`source.user.email`*:: + -- type: keyword -example: North America - -Name of the continent. - +User email address. -- -*`source.geo.country_name`*:: +*`source.user.full_name`*:: + -- type: keyword -example: Canada - -Country name. +example: Albert Einstein +User's full name, if available. -- -*`source.geo.region_name`*:: +*`source.user.group.id`*:: + -- type: keyword -example: Quebec - -Region name. - +Unique identifier for the group on the system/platform. -- -*`source.geo.city_name`*:: +*`source.user.group.name`*:: + -- type: keyword -example: Montreal - -City name. - +Name of the group. -- -*`source.geo.country_iso_code`*:: +*`source.user.hash`*:: + -- type: keyword -example: CA - -Country ISO code. - +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -- -*`source.geo.region_iso_code`*:: +*`source.user.id`*:: + -- type: keyword -example: CA-QC - -Region ISO code. - +One or multiple unique identifiers of the user. -- -*`source.geo.name`*:: +*`source.user.name`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +example: albert +Short name or login of the user. -- [float] == url fields -URL fields provide a complete URL, with scheme, host, and path. +URL fields provide support for complete or partial URLs, and supports the breaking down into scheme, domain, path, and so on. - -*`url.original`*:: +*`url.domain`*:: + -- type: keyword -example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch +example: www.elastic.co +Domain of the url, such as "www.elastic.co". +In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. -Unmodified original url as seen in the event source. -Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. -This field is meant to represent the URL as it was observed, complete or not. +-- + +*`url.fragment`*:: ++ +-- +type: keyword +Portion of the url after the `#`, such as "top". +The `#` is not part of the fragment. -- @@ -5628,54 +5796,47 @@ example: https://www.elastic.co:443/search?q=elasticsearch#top If full URLs are important to your use case, they should be stored in `url.full`, whether this field is reconstructed or present in the event source. - -- -*`url.scheme`*:: +*`url.original`*:: + -- type: keyword -example: https - -Scheme of the request, such as "https". -Note: The `:` is not part of the scheme. +example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch +Unmodified original url as seen in the event source. +Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. +This field is meant to represent the URL as it was observed, complete or not. -- -*`url.domain`*:: +*`url.password`*:: + -- type: keyword -example: www.elastic.co - -Domain of the request, such as "www.elastic.co". -In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. - +Password of the request. -- -*`url.port`*:: +*`url.path`*:: + -- -type: integer - -example: 443 - -Port of the request, such as 443. +type: keyword +Path of the request, such as "/search". -- -*`url.path`*:: +*`url.port`*:: + -- -type: keyword +type: long -Path of the request, such as "/search". +example: 443 +Port of the request, such as 443. -- @@ -5687,17 +5848,17 @@ type: keyword The query field describes the query string of the request, such as "q=elasticsearch". The `?` is excluded from the query string. If a URL contains no `?`, there is no query field. If there is a `?` but no query, the query field exists with an empty string. The `exists` query can be used to differentiate between the two cases. - -- -*`url.fragment`*:: +*`url.scheme`*:: + -- type: keyword -Portion of the url after the `#`, such as "top". -The `#` is not part of the fragment. +example: https +Scheme of the request, such as "https". +Note: The `:` is not part of the scheme. -- @@ -5708,67 +5869,50 @@ type: keyword Username of the request. - --- - -*`url.password`*:: -+ --- -type: keyword - -Password of the request. - - -- [float] == user fields -The user fields describe information about the user that is relevant to the event. Fields can have one entry or multiple entries. If a user has more than one id, provide an array that includes all of them. - +The user fields describe information about the user that is relevant to the event. +Fields can have one entry or multiple entries. If a user has more than one id, provide an array that includes all of them. -*`user.id`*:: +*`user.email`*:: + -- type: keyword -One or multiple unique identifiers of the user. - +User email address. -- -*`user.name`*:: +*`user.full_name`*:: + -- type: keyword -example: albert - -Short name or login of the user. +example: Albert Einstein +User's full name, if available. -- -*`user.full_name`*:: +*`user.group.id`*:: + -- type: keyword -example: Albert Einstein - -User's full name, if available. - +Unique identifier for the group on the system/platform. -- -*`user.email`*:: +*`user.group.name`*:: + -- type: keyword -User email address. - +Name of the group. -- @@ -5780,52 +5924,43 @@ type: keyword Unique user hash to correlate information for a user in anonymized form. Useful if `user.id` or `user.name` contain confidential information and cannot be used. - -- -[float] -== group fields - -The group fields are meant to represent groups that are relevant to the event. - - - -*`user.group.id`*:: +*`user.id`*:: + -- type: keyword -Unique identifier for the group on the system/platform. - +One or multiple unique identifiers of the user. -- -*`user.group.name`*:: +*`user.name`*:: + -- type: keyword -Name of the group. +example: albert +Short name or login of the user. -- [float] == user_agent fields -The user_agent fields normally come from a browser request. They often show up in web service logs coming from the parsed user agent string. +The user_agent fields normally come from a browser request. +They often show up in web service logs coming from the parsed user agent string. - -*`user_agent.original`*:: +*`user_agent.device.name`*:: + -- type: keyword -example: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1 - -Unparsed version of the user_agent. +example: iPhone +Name of the device. -- @@ -5838,85 +5973,71 @@ example: Safari Name of the user agent. - -- -*`user_agent.version`*:: +*`user_agent.original`*:: + -- type: keyword -example: 12.0 - -Version of the user agent. +example: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1 +Unparsed version of the user_agent. -- -*`user_agent.device.name`*:: +*`user_agent.os.family`*:: + -- type: keyword -example: iPhone - -Name of the device. +example: debian +OS family (such as redhat, debian, freebsd, windows). -- -[float] -== os fields - -The OS fields contain information about the operating system. - - - -*`user_agent.os.platform`*:: +*`user_agent.os.full`*:: + -- type: keyword -example: darwin - -Operating system platform (such centos, ubuntu, windows). +example: Mac OS Mojave +Operating system name, including the version or code name. -- -*`user_agent.os.name`*:: +*`user_agent.os.kernel`*:: + -- type: keyword -example: Mac OS X - -Operating system name, without the version. +example: 4.4.0-112-generic +Operating system kernel version as a raw string. -- -*`user_agent.os.full`*:: +*`user_agent.os.name`*:: + -- type: keyword -example: Mac OS Mojave - -Operating system name, including the version or code name. +example: Mac OS X +Operating system name, without the version. -- -*`user_agent.os.family`*:: +*`user_agent.os.platform`*:: + -- type: keyword -example: debian - -OS family (such as redhat, debian, freebsd, windows). +example: darwin +Operating system platform (such centos, ubuntu, windows). -- @@ -5929,28 +6050,16 @@ example: 10.14.1 Operating system version as a raw string. - --- - -*`user_agent.os.kernel`*:: -+ --- -type: keyword - -example: 4.4.0-112-generic - -Operating system kernel version as a raw string. - - -- -*`agent.hostname`*:: +*`user_agent.version`*:: + -- type: keyword -Hostname of the agent. +example: 12.0 +Version of the user agent. -- diff --git a/auditbeat/include/fields.go b/auditbeat/include/fields.go index 3192fda95623..29dfc7267820 100644 --- a/auditbeat/include/fields.go +++ b/auditbeat/include/fields.go @@ -32,5 +32,5 @@ func init() { // AssetFieldsYml returns asset data. // This is the base64 encoded gzipped contents of fields.yml. func AssetFieldsYml() string { - return "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" + return "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" } diff --git a/filebeat/docs/fields.asciidoc b/filebeat/docs/fields.asciidoc index faa2d2a6458d..65adc5cabd6c 100644 --- a/filebeat/docs/fields.asciidoc +++ b/filebeat/docs/fields.asciidoc @@ -984,6 +984,15 @@ Contains common beat fields available in all event types. +*`agent.hostname`*:: ++ +-- +type: keyword + +Hostname of the agent. + +-- + *`beat.timezone`*:: + -- @@ -1166,8 +1175,7 @@ Image labels. [[exported-fields-ecs]] == ECS fields -ECS fields. - +ECS Fields. *`@timestamp`*:: @@ -1180,22 +1188,10 @@ example: 2016-05-23T08:05:34.853Z required: True Date/time when the event originated. -For log events this is the date/time when the event was generated, and not when it was read. +This is the date/time extracted from the event, typically representing when the event was generated by the source. +If the event source has no original timestamp, this value is typically populated by the first time the event was received by the pipeline. Required field for all events. - --- - -*`tags`*:: -+ --- -type: keyword - -example: ["production", "env2"] - -List of keywords used to tag each event. - - -- *`labels`*:: @@ -1205,11 +1201,10 @@ type: object example: {'application': 'foo-bar', 'env': 'production'} -Key/value pairs. +Custom key/value pairs. Can be used to add meta information to events. Should not contain nested objects. All values are stored as keyword. Example: `docker` and `k8s` labels. - -- *`message`*:: @@ -1219,28 +1214,51 @@ type: text example: Hello World -For log events the message field contains the log message. -In other use cases the message field can be used to concatenate different values which are then freely searchable. If multiple messages exist, they can be combined into one message. +For log events the message field contains the log message, optimized for viewing in a log viewer. +For structured logs without an original message field, other fields can be concatenated to form a human-readable summary of the event. +If multiple messages exist, they can be combined into one message. + +-- + +*`tags`*:: ++ +-- +type: keyword + +example: ["production", "env2"] +List of keywords used to tag each event. -- [float] == agent fields -The agent fields contain the data about the software entity, if any, that collects, detects, or observes events on a host, or takes measurements on a host. Examples include Beats. Agents may also run on observers. ECS agent.* fields shall be populated with details of the agent running on the host or observer where the event happened or the measurement was taken. +The agent fields contain the data about the software entity, if any, that collects, detects, or observes events on a host, or takes measurements on a host. +Examples include Beats. Agents may also run on observers. ECS agent.* fields shall be populated with details of the agent running on the host or observer where the event happened or the measurement was taken. - -*`agent.version`*:: +*`agent.ephemeral_id`*:: + -- type: keyword -example: 6.0.0-rc2 +example: 8a4f500f -Version of the agent. +Ephemeral identifier of this agent (if one exists). +This id normally changes across restarts, but `agent.id` does not. + +-- + +*`agent.id`*:: ++ +-- +type: keyword + +example: 8a4f500d +Unique identifier of this agent (if one exists). +Example: For Beats this would be beat.id. -- @@ -1251,11 +1269,10 @@ type: keyword example: foo -Name of the agent. +Custom name of the agent. This is a name that can be given to an agent. This can be helpful if for example two Filebeat instances are running on the same host but a human readable separation is needed on which Filebeat instance data is coming from. If no name is given, the name is often left empty. - -- *`agent.type`*:: @@ -1268,43 +1285,27 @@ example: filebeat Type of the agent. The agent type stays always the same and should be given by the agent used. In case of Filebeat the agent would always be Filebeat also if two Filebeat instances are run on the same machine. - --- - -*`agent.id`*:: -+ --- -type: keyword - -example: 8a4f500d - -Unique identifier of this agent (if one exists). -Example: For Beats this would be beat.id. - - -- -*`agent.ephemeral_id`*:: +*`agent.version`*:: + -- type: keyword -example: 8a4f500f - -Ephemeral identifier of this agent (if one exists). -This id normally changes across restarts, but `agent.id` does not. +example: 6.0.0-rc2 +Version of the agent. -- [float] == client fields -A client is defined as the initiator of a network connection for events regarding sessions, connections, or bidirectional flow records. For TCP events, the client is the initiator of the TCP connection that sends the SYN packet(s). For other protocols, the client is generally the initiator or requestor in the network transaction. Some systems use the term "originator" to refer the client in TCP connections. The client fields describe details about the system acting as the client in the network event. Client fields are usually populated in conjunction with server fields. Client fields are generally not populated for packet-level events. +A client is defined as the initiator of a network connection for events regarding sessions, connections, or bidirectional flow records. +For TCP events, the client is the initiator of the TCP connection that sends the SYN packet(s). For other protocols, the client is generally the initiator or requestor in the network transaction. Some systems use the term "originator" to refer the client in TCP connections. The client fields describe details about the system acting as the client in the network event. Client fields are usually populated in conjunction with server fields. Client fields are generally not populated for packet-level events. Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. - *`client.address`*:: + -- @@ -1313,83 +1314,72 @@ type: keyword Some event client addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. - -- -*`client.ip`*:: +*`client.bytes`*:: + -- -type: ip +type: long -IP address of the client. -Can be one or multiple IPv4 or IPv6 addresses. +example: 184 +Bytes sent from the client to the server. -- -*`client.port`*:: +*`client.domain`*:: + -- -type: long - -Port of the client. +type: keyword +Client domain. -- -*`client.mac`*:: +*`client.geo.city_name`*:: + -- type: keyword -MAC address of the client. +example: Montreal +City name. -- -*`client.domain`*:: +*`client.geo.continent_name`*:: + -- type: keyword -Client domain. +example: North America +Name of the continent. -- -*`client.bytes`*:: +*`client.geo.country_iso_code`*:: + -- -type: long - -example: 184 - -format: bytes +type: keyword -Bytes sent from the client to the server. +example: CA +Country ISO code. -- -*`client.packets`*:: +*`client.geo.country_name`*:: + -- -type: long - -example: 12 +type: keyword -Packets sent from the client to the server. +example: Canada +Country name. -- -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - *`client.geo.location`*:: + -- @@ -1399,30 +1389,29 @@ example: { "lon": -73.614830, "lat": 45.505918 } Longitude and latitude. - -- -*`client.geo.continent_name`*:: +*`client.geo.name`*:: + -- type: keyword -example: North America - -Name of the continent. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`client.geo.country_name`*:: +*`client.geo.region_iso_code`*:: + -- type: keyword -example: Canada - -Country name. +example: CA-QC +Region ISO code. -- @@ -1435,274 +1424,274 @@ example: Quebec Region name. - -- -*`client.geo.city_name`*:: +*`client.ip`*:: + -- -type: keyword - -example: Montreal - -City name. +type: ip +IP address of the client. +Can be one or multiple IPv4 or IPv6 addresses. -- -*`client.geo.country_iso_code`*:: +*`client.mac`*:: + -- type: keyword -example: CA - -Country ISO code. - +MAC address of the client. -- -*`client.geo.region_iso_code`*:: +*`client.packets`*:: + -- -type: keyword - -example: CA-QC +type: long -Region ISO code. +example: 12 +Packets sent from the client to the server. -- -*`client.geo.name`*:: +*`client.port`*:: + -- -type: keyword - -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +type: long +Port of the client. -- -[float] -== cloud fields - -Fields related to the cloud or infrastructure the events are coming from. - - - -*`cloud.provider`*:: +*`client.user.email`*:: + -- type: keyword -example: ec2 - -Name of the cloud provider. Example values are ec2, gce, or digitalocean. - +User email address. -- -*`cloud.availability_zone`*:: +*`client.user.full_name`*:: + -- type: keyword -example: us-east-1c - -Availability zone in which this host is running. +example: Albert Einstein +User's full name, if available. -- -*`cloud.region`*:: +*`client.user.group.id`*:: + -- type: keyword -example: us-east-1 - -Region in which this host is running. - +Unique identifier for the group on the system/platform. -- -*`cloud.instance.id`*:: +*`client.user.group.name`*:: + -- type: keyword -example: i-1234567890abcdef0 - -Instance ID of the host machine. - +Name of the group. -- -*`cloud.instance.name`*:: +*`client.user.hash`*:: + -- type: keyword -Instance name of the host machine. - +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -- -*`cloud.machine.type`*:: +*`client.user.id`*:: + -- type: keyword -example: t2.medium - -Machine type of the host machine. - +One or multiple unique identifiers of the user. -- -*`cloud.account.id`*:: +*`client.user.name`*:: + -- type: keyword -example: 666777888999 - -The cloud account or organization id used to identify different entities in a multi-tenant environment. -Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. +example: albert +Short name or login of the user. -- [float] -== container fields - -Container fields are used for meta information about the specific container that is the source of information. These fields help correlate data based containers from any runtime. +== cloud fields +Fields related to the cloud or infrastructure the events are coming from. -*`container.runtime`*:: +*`cloud.account.id`*:: + -- type: keyword -example: docker - -Runtime managing this container. +example: 666777888999 +The cloud account or organization id used to identify different entities in a multi-tenant environment. +Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. -- -*`container.id`*:: +*`cloud.availability_zone`*:: + -- type: keyword -Unique container id. +example: us-east-1c +Availability zone in which this host is running. -- -*`container.image.name`*:: +*`cloud.instance.id`*:: + -- type: keyword -Name of the image the container was built on. +example: i-1234567890abcdef0 +Instance ID of the host machine. -- -*`container.image.tag`*:: +*`cloud.instance.name`*:: + -- type: keyword -Container image tag. +Instance name of the host machine. +-- +*`cloud.machine.type`*:: ++ -- +type: keyword -*`container.name`*:: +example: t2.medium + +Machine type of the host machine. + +-- + +*`cloud.provider`*:: + -- type: keyword -Container name. +example: aws +Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. -- -*`container.labels`*:: +*`cloud.region`*:: + -- -type: object +type: keyword -Image labels. +example: us-east-1 +Region in which this host is running. -- [float] -== destination fields - -Destination fields describe details about the destination of a packet/event. Destination fields are usually populated in conjunction with source fields. +== container fields +Container fields are used for meta information about the specific container that is the source of information. +These fields help correlate data based containers from any runtime. -*`destination.address`*:: +*`container.id`*:: + -- type: keyword -Some event destination addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. -Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. - +Unique container id. -- -*`destination.ip`*:: +*`container.image.name`*:: + -- -type: ip +type: keyword -IP address of the destination. -Can be one or multiple IPv4 or IPv6 addresses. +Name of the image the container was built on. +-- +*`container.image.tag`*:: ++ -- +type: keyword -*`destination.port`*:: +Container image tag. + +-- + +*`container.labels`*:: + -- -type: long +type: object -Port of the destination. +Image labels. + +-- + +*`container.name`*:: ++ +-- +type: keyword +Container name. -- -*`destination.mac`*:: +*`container.runtime`*:: + -- type: keyword -MAC address of the destination. +example: docker +Runtime managing this container. -- -*`destination.domain`*:: +[float] +== destination fields + +Destination fields describe details about the destination of a packet/event. +Destination fields are usually populated in conjunction with source fields. + + +*`destination.address`*:: + -- type: keyword -Destination domain. - +Some event destination addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. -- @@ -1713,31 +1702,62 @@ type: long example: 184 -format: bytes - Bytes sent from the destination to the source. +-- + +*`destination.domain`*:: ++ +-- +type: keyword + +Destination domain. -- -*`destination.packets`*:: +*`destination.geo.city_name`*:: + -- -type: long +type: keyword -example: 12 +example: Montreal -Packets sent from the destination to the source. +City name. +-- +*`destination.geo.continent_name`*:: ++ -- +type: keyword -[float] -== geo fields +example: North America + +Name of the continent. + +-- + +*`destination.geo.country_iso_code`*:: ++ +-- +type: keyword + +example: CA + +Country ISO code. + +-- -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. +*`destination.geo.country_name`*:: ++ +-- +type: keyword +example: Canada +Country name. + +-- *`destination.geo.location`*:: + @@ -1748,30 +1768,29 @@ example: { "lon": -73.614830, "lat": 45.505918 } Longitude and latitude. - -- -*`destination.geo.continent_name`*:: +*`destination.geo.name`*:: + -- type: keyword -example: North America - -Name of the continent. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`destination.geo.country_name`*:: +*`destination.geo.region_iso_code`*:: + -- type: keyword -example: Canada - -Country name. +example: CA-QC +Region ISO code. -- @@ -1784,56 +1803,112 @@ example: Quebec Region name. +-- +*`destination.ip`*:: ++ -- +type: ip -*`destination.geo.city_name`*:: +IP address of the destination. +Can be one or multiple IPv4 or IPv6 addresses. + +-- + +*`destination.mac`*:: + -- type: keyword -example: Montreal +MAC address of the destination. -City name. +-- + +*`destination.packets`*:: ++ +-- +type: long + +example: 12 +Packets sent from the destination to the source. -- -*`destination.geo.country_iso_code`*:: +*`destination.port`*:: ++ +-- +type: long + +Port of the destination. + +-- + +*`destination.user.email`*:: + -- type: keyword -example: CA +User email address. -Country ISO code. +-- +*`destination.user.full_name`*:: ++ +-- +type: keyword + +example: Albert Einstein + +User's full name, if available. -- -*`destination.geo.region_iso_code`*:: +*`destination.user.group.id`*:: + -- type: keyword -example: CA-QC +Unique identifier for the group on the system/platform. -Region ISO code. +-- +*`destination.user.group.name`*:: ++ +-- +type: keyword + +Name of the group. -- -*`destination.geo.name`*:: +*`destination.user.hash`*:: + -- type: keyword -example: boston-dc +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +-- + +*`destination.user.id`*:: ++ +-- +type: keyword + +One or multiple unique identifiers of the user. + +-- + +*`destination.user.name`*:: ++ +-- +type: keyword + +example: albert +Short name or login of the user. -- @@ -1843,29 +1918,35 @@ Not typically used in automated geolocation. Meta-information specific to ECS. - *`ecs.version`*:: + -- type: keyword -example: 1.0.0-beta2 +example: 1.0.0 required: True ECS version this event conforms to. `ecs.version` is a required field and must exist in all events. When querying across multiple indices -- which may conform to slightly different ECS versions -- this field lets integrations adjust to the schema version of the events. -The current version is 1.0.0-beta2 . - -- [float] == error fields -These fields can represent errors of any kind. Use them for errors that happen while fetching events or in cases where the event itself contains an error. +These fields can represent errors of any kind. +Use them for errors that happen while fetching events or in cases where the event itself contains an error. + + +*`error.code`*:: ++ +-- +type: keyword +Error code describing the error. +-- *`error.id`*:: + @@ -1874,7 +1955,6 @@ type: keyword Unique identifier for the error. - -- *`error.message`*:: @@ -1884,98 +1964,113 @@ type: text Error message. - -- -*`error.code`*:: +[float] +== event fields + +The event fields are used for context information about the log or metric event itself. +A log is defined as an event containing details of something that happened. Log events must include the time at which the thing happened. Examples of log events include a process starting on a host, a network packet being sent from a source to a destination, or a network connection between a client and a server being initiated or closed. A metric is defined as an event containing one or more numerical or categorical measurements and the time at which the measurement was taken. Examples of metric events include memory pressure measured on a host, or vulnerabilities measured on a scanned host. + + +*`event.action`*:: + -- type: keyword -Error code describing the error. +example: user-password-change +The action captured by the event. +This describes the information in the event. It is more specific than `event.category`. Examples are `group-add`, `process-started`, `file-created`. The value is normally defined by the implementer. -- -[float] -== event fields +*`event.category`*:: ++ +-- +type: keyword -The event fields are used for context information about the log or metric event itself. A log is defined as an event containing details of something that happened. Log events must include the time at which the thing happened. Examples of log events include a process starting on a host, a network packet being sent from a source to a destination, or a network connection between a client and a server being initiated or closed. A metric is defined as an event containing one or more numerical or categorical measurements and the time at which the measurement was taken. Examples of metric events include memory pressure measured on a host, or vulnerabilities measured on a scanned host. +example: user-management +Event category. +This contains high-level information about the contents of the event. It is more generic than `event.action`, in the sense that typically a category contains multiple actions. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +-- -*`event.id`*:: +*`event.created`*:: + -- -type: keyword - -example: 8a4f500d - -Unique ID to describe the event. +type: date +event.created contains the date/time when the event was first read by an agent, or by your pipeline. +This field is distinct from @timestamp in that @timestamp typically contain the time extracted from the original event. +In most situations, these two timestamps will be slightly different. The difference can be used to calculate the delay between your source generating an event, and the time when your agent first processed it. This can be used to monitor your agent's or pipeline's ability to keep up with your event source. +In case the two timestamps are identical, @timestamp should be used. -- -*`event.kind`*:: +*`event.dataset`*:: + -- type: keyword -example: state - -The kind of the event. -This gives information about what type of information the event contains, without being specific to the contents of the event. Examples are `event`, `state`, `alarm`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +example: stats +Name of the dataset. +The concept of a `dataset` (fileset / metricset) is used in Beats as a subset of modules. It contains the information which is currently stored in metricset.name and metricset.module or fileset.name. -- -*`event.category`*:: +*`event.duration`*:: + -- -type: keyword +type: long -example: user-management +Duration of the event in nanoseconds. +If event.start and event.end are known this value should be the difference between the end and start time. -Event category. -This contains high-level information about the contents of the event. It is more generic than `event.action`, in the sense that typically a category contains multiple actions. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +-- +*`event.end`*:: ++ +-- +type: date + +event.end contains the date when the event ended or when the activity was last observed. -- -*`event.action`*:: +*`event.hash`*:: + -- type: keyword -example: user-password-change - -The action captured by the event. -This describes the information in the event. It is more specific than `event.category`. Examples are `group-add`, `process-started`, `file-created`. The value is normally defined by the implementer. +example: 123456789012345678901234567890ABCD +Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate log integrity. -- -*`event.outcome`*:: +*`event.id`*:: + -- type: keyword -example: success - -The outcome of the event. -If the event describes an action, this fields contains the outcome of that action. Examples outcomes are `success` and `failure`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +example: 8a4f500d +Unique ID to describe the event. -- -*`event.type`*:: +*`event.kind`*:: + -- type: keyword -Reserved for future usage. -Please avoid using this field for user data. +example: state +The kind of the event. +This gives information about what type of information the event contains, without being specific to the contents of the event. Examples are `event`, `state`, `alarm`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. -- @@ -1989,71 +2084,68 @@ example: mysql Name of the module this data is coming from. This information is coming from the modules used in Beats or Logstash. - -- -*`event.dataset`*:: +*`event.original`*:: + -- type: keyword -example: stats - -Name of the dataset. -The concept of a `dataset` (fileset / metricset) is used in Beats as a subset of modules. It contains the information which is currently stored in metricset.name and metricset.module or fileset.name. +example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 +Raw text message of entire event. Used to demonstrate log integrity. +This field is not indexed and doc_values are disabled. It cannot be searched, but it can be retrieved from `_source`. -- -*`event.severity`*:: +*`event.outcome`*:: + -- -type: long - -example: 7 +type: keyword -Severity describes the severity of the event. What the different severity values mean can very different between use cases. It's up to the implementer to make sure severities are consistent across events. +example: success +The outcome of the event. +If the event describes an action, this fields contains the outcome of that action. Examples outcomes are `success` and `failure`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. -- -*`event.original`*:: +*`event.risk_score`*:: + -- -type: keyword +type: float -example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 +Risk score or priority of the event (e.g. security solutions). Use your system's original value here. -Raw text message of entire event. Used to demonstrate log integrity. -This field is not indexed and doc_values are disabled. It cannot be searched, but it can be retrieved from `_source`. +-- +*`event.risk_score_norm`*:: ++ +-- +type: float -Field is not indexed. +Normalized risk score or priority of the event, on a scale of 0 to 100. +This is mainly useful if you use more than one system that assigns risk scores, and you want to see a normalized value across all systems. -- -*`event.hash`*:: +*`event.severity`*:: + -- -type: keyword - -example: 123456789012345678901234567890ABCD +type: long -Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate log integrity. +example: 7 +Severity describes the original severity of the event. What the different severity values mean can very different between use cases. It's up to the implementer to make sure severities are consistent across events. -- -*`event.duration`*:: +*`event.start`*:: + -- -type: long - -format: duration - -Duration of the event in nanoseconds. -If event.start and event.end are known this value should be the difference between the end and start time. +type: date +event.start contains the date when the event started or when the activity was first observed. -- @@ -2065,68 +2157,110 @@ type: keyword This field should be populated when the event's timestamp does not include timezone information already (e.g. default Syslog timestamps). It's optional otherwise. Acceptable timezone formats are: a canonical ID (e.g. "Europe/Amsterdam"), abbreviated (e.g. "EST") or an HH:mm differential (e.g. "-05:00"). +-- +*`event.type`*:: ++ -- +type: keyword -*`event.created`*:: +Reserved for future usage. +Please avoid using this field for user data. + +-- + +[float] +== file fields + +A file is defined as a set of information that has been created on, or has existed on a filesystem. +File objects can be associated with host events, network events, and/or file events (e.g., those produced by File Integrity Monitoring [FIM] products or services). File fields provide details about the affected file associated with the event or metric. + + +*`file.ctime`*:: + -- type: date -event.created contains the date when the event was created. -This timestamp is distinct from @timestamp in that @timestamp contains the processed timestamp. For logs these two timestamps can be different as the timestamp in the log line and when the event is read for example by Filebeat are not identical. `@timestamp` must contain the timestamp extracted from the log line, event.created when the log line is read. The same could apply to package capturing where @timestamp contains the timestamp extracted from the network package and event.created when the event was created. -In case the two timestamps are identical, @timestamp should be used. +Last time file metadata changed. + +-- +*`file.device`*:: ++ +-- +type: keyword + +Device that is the source of the file. -- -*`event.start`*:: +*`file.extension`*:: + -- -type: date +type: keyword -event.start contains the date when the event started or when the activity was first observed. +example: png +File extension. +This should allow easy filtering by file extensions. -- -*`event.end`*:: +*`file.gid`*:: + -- -type: date - -event.end contains the date when the event ended or when the activity was last observed. +type: keyword +Primary group ID (GID) of the file. -- -*`event.risk_score`*:: +*`file.group`*:: + -- -type: float +type: keyword -Risk score or priority of the event (e.g. security solutions). Use your system's original value here. +Primary group name of the file. +-- +*`file.inode`*:: ++ -- +type: keyword -*`event.risk_score_norm`*:: +Inode representing the file in the filesystem. + +-- + +*`file.mode`*:: + -- -type: float +type: keyword -Normalized risk score or priority of the event, on a scale of 0 to 100. -This is mainly useful if you use more than one system that assigns risk scores, and you want to see a normalized value across all systems. +example: 416 +Mode of the file in octal representation. -- -[float] -== file fields +*`file.mtime`*:: ++ +-- +type: date + +Last time file content was modified. + +-- -A file is defined as a set of information that has been created on, or has existed on a filesystem. File objects can be associated with host events, network events, and/or file events (e.g., those produced by File Integrity Monitoring [FIM] products or services). File fields provide details about the affected file associated with the event or metric. +*`file.owner`*:: ++ +-- +type: keyword +File owner's username. +-- *`file.path`*:: + @@ -2137,25 +2271,21 @@ Path to the file. -- -*`file.target_path`*:: +*`file.size`*:: + -- -type: keyword +type: long -Target path for symlinks. +File size in bytes (field is only added when `type` is `file`). -- -*`file.extension`*:: +*`file.target_path`*:: + -- type: keyword -example: png - -File extension. -This should allow easy filtering by file extensions. - +Target path for symlinks. -- @@ -2168,98 +2298,109 @@ File type (file, dir, or symlink). -- -*`file.device`*:: +*`file.uid`*:: + -- type: keyword -Device that is the source of the file. +The user ID (UID) or security identifier (SID) of the file owner. -- -*`file.inode`*:: -+ --- -type: keyword +[float] +== geo fields -Inode representing the file in the filesystem. +Geo fields can carry data about a specific location related to an event. +This geolocation information can be derived from techniques such as Geo IP, or be user-supplied. --- -*`file.uid`*:: +*`geo.city_name`*:: + -- type: keyword -The user ID (UID) or security identifier (SID) of the file owner. +example: Montreal +City name. -- -*`file.owner`*:: +*`geo.continent_name`*:: + -- type: keyword -File owner's username. +example: North America + +Name of the continent. -- -*`file.gid`*:: +*`geo.country_iso_code`*:: + -- type: keyword -Primary group ID (GID) of the file. +example: CA + +Country ISO code. -- -*`file.group`*:: +*`geo.country_name`*:: + -- type: keyword -Primary group name of the file. +example: Canada + +Country name. -- -*`file.mode`*:: +*`geo.location`*:: + -- -type: keyword +type: geo_point -example: 416 +example: { "lon": -73.614830, "lat": 45.505918 } -Mode of the file in octal representation. +Longitude and latitude. -- -*`file.size`*:: +*`geo.name`*:: + -- -type: long +type: keyword -format: bytes +example: boston-dc -File size in bytes (field is only added when `type` is `file`). +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`file.mtime`*:: +*`geo.region_iso_code`*:: + -- -type: date +type: keyword -Last time file content was modified. +example: CA-QC + +Region ISO code. -- -*`file.ctime`*:: +*`geo.region_name`*:: + -- -type: date +type: keyword -Last time file metadata changed. +example: Quebec + +Region name. -- @@ -2269,7 +2410,6 @@ Last time file metadata changed. The group fields are meant to represent groups that are relevant to the event. - *`group.id`*:: + -- @@ -2277,7 +2417,6 @@ type: keyword Unique identifier for the group on the system/platform. - -- *`group.name`*:: @@ -2287,133 +2426,162 @@ type: keyword Name of the group. - -- [float] == host fields -A host is defined as a general computing instance. ECS host.* fields should be populated with details about the host on which the event happened, or on which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. +A host is defined as a general computing instance. +ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. - -*`host.hostname`*:: +*`host.architecture`*:: + -- type: keyword -Hostname of the host. -It normally contains what the `hostname` command returns on the host machine. +example: x86_64 +Operating system architecture. -- -*`host.name`*:: +*`host.geo.city_name`*:: + -- type: keyword -Name of the host. -It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. +example: Montreal +City name. -- -*`host.id`*:: +*`host.geo.continent_name`*:: + -- type: keyword -Unique host id. -As hostname is not always unique, use values that are meaningful in your environment. -Example: The current usage of `beat.name`. +example: North America +Name of the continent. -- -*`host.ip`*:: +*`host.geo.country_iso_code`*:: + -- -type: ip +type: keyword -Host ip address. +example: CA +Country ISO code. -- -*`host.mac`*:: +*`host.geo.country_name`*:: + -- type: keyword -Host mac address. +example: Canada +Country name. -- -*`host.type`*:: +*`host.geo.location`*:: + -- -type: keyword +type: geo_point -Type of host. -For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. +example: { "lon": -73.614830, "lat": 45.505918 } +Longitude and latitude. -- -*`host.architecture`*:: +*`host.geo.name`*:: + -- type: keyword -example: x86_64 - -Operating system architecture. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -[float] -== os fields +*`host.geo.region_iso_code`*:: ++ +-- +type: keyword -The OS fields contain information about the operating system. +example: CA-QC +Region ISO code. +-- -*`host.os.platform`*:: +*`host.geo.region_name`*:: + -- type: keyword -example: darwin +example: Quebec -Operating system platform (such centos, ubuntu, windows). +Region name. + +-- + +*`host.hostname`*:: ++ +-- +type: keyword +Hostname of the host. +It normally contains what the `hostname` command returns on the host machine. -- -*`host.os.name`*:: +*`host.id`*:: + -- type: keyword -example: Mac OS X +Unique host id. +As hostname is not always unique, use values that are meaningful in your environment. +Example: The current usage of `beat.name`. -Operating system name, without the version. +-- + +*`host.ip`*:: ++ +-- +type: ip +Host ip address. -- -*`host.os.full`*:: +*`host.mac`*:: + -- type: keyword -example: Mac OS Mojave +Host mac address. -Operating system name, including the version or code name. +-- + +*`host.name`*:: ++ +-- +type: keyword +Name of the host. +It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. -- @@ -2426,18 +2594,16 @@ example: debian OS family (such as redhat, debian, freebsd, windows). - -- -*`host.os.version`*:: +*`host.os.full`*:: + -- type: keyword -example: 10.14.1 - -Operating system version as a raw string. +example: Mac OS Mojave +Operating system name, including the version or code name. -- @@ -2450,131 +2616,133 @@ example: 4.4.0-112-generic Operating system kernel version as a raw string. - -- -[float] -== geo fields +*`host.os.name`*:: ++ +-- +type: keyword -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. +example: Mac OS X +Operating system name, without the version. +-- -*`host.geo.location`*:: +*`host.os.platform`*:: + -- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } +type: keyword -Longitude and latitude. +example: darwin +Operating system platform (such centos, ubuntu, windows). -- -*`host.geo.continent_name`*:: +*`host.os.version`*:: + -- type: keyword -example: North America - -Name of the continent. +example: 10.14.1 +Operating system version as a raw string. -- -*`host.geo.country_name`*:: +*`host.type`*:: + -- type: keyword -example: Canada - -Country name. - +Type of host. +For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. -- -*`host.geo.region_name`*:: +*`host.user.email`*:: + -- type: keyword -example: Quebec - -Region name. - +User email address. -- -*`host.geo.city_name`*:: +*`host.user.full_name`*:: + -- type: keyword -example: Montreal - -City name. +example: Albert Einstein +User's full name, if available. -- -*`host.geo.country_iso_code`*:: +*`host.user.group.id`*:: + -- type: keyword -example: CA +Unique identifier for the group on the system/platform. -Country ISO code. +-- + +*`host.user.group.name`*:: ++ +-- +type: keyword +Name of the group. -- -*`host.geo.region_iso_code`*:: +*`host.user.hash`*:: + -- type: keyword -example: CA-QC +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -Region ISO code. +-- + +*`host.user.id`*:: ++ +-- +type: keyword +One or multiple unique identifiers of the user. -- -*`host.geo.name`*:: +*`host.user.name`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +example: albert +Short name or login of the user. -- [float] == http fields -Fields related to HTTP activity. +Fields related to HTTP activity. Use the `url` field set to store the url of the request. - -*`http.request.method`*:: +*`http.request.body.bytes`*:: + -- -type: keyword - -example: get, post, put +type: long -Http request method. -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: 887 +Size in bytes of the request body. -- @@ -2585,84 +2753,63 @@ type: keyword example: Hello world -The full http request body. - - --- - -*`http.request.referrer`*:: -+ --- -type: keyword - -example: https://blog.example.com/ - -Referrer for this HTTP request. - +The full HTTP request body. -- -*`http.response.status_code`*:: +*`http.request.bytes`*:: + -- type: long -example: 404 - -Http response status code. +example: 1437 +Total size in bytes of the request (body and headers). -- -*`http.response.body.content`*:: +*`http.request.method`*:: + -- type: keyword -example: Hello world - -The full http response body. +example: get, post, put +HTTP request method. +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`http.version`*:: +*`http.request.referrer`*:: + -- type: keyword -example: 1.1 - -Http version. +example: https://blog.example.com/ +Referrer for this HTTP request. -- -*`http.request.bytes`*:: +*`http.response.body.bytes`*:: + -- type: long -example: 1437 - -format: bytes - -Total size in bytes of the request (body and headers). +example: 887 +Size in bytes of the response body. -- -*`http.request.body.bytes`*:: +*`http.response.body.content`*:: + -- -type: long - -example: 887 - -format: bytes +type: keyword -Size in bytes of the request body. +example: Hello world +The full HTTP response body. -- @@ -2673,24 +2820,29 @@ type: long example: 1437 -format: bytes - Total size in bytes of the response (body and headers). - -- -*`http.response.body.bytes`*:: +*`http.response.status_code`*:: + -- type: long -example: 887 +example: 404 -format: bytes +HTTP response status code. -Size in bytes of the response body. +-- +*`http.version`*:: ++ +-- +type: keyword + +example: 1.1 + +HTTP version. -- @@ -2700,17 +2852,15 @@ Size in bytes of the response body. Fields which are specific to log events. - *`log.level`*:: + -- type: keyword -example: ERR - -Log level of the log event. -Some examples are `WARN`, `ERR`, `INFO`. +example: err +Original log level of the log event. +Some examples are `warn`, `error`, `i`. -- @@ -2721,96 +2871,52 @@ type: keyword example: Sep 19 08:26:10 localhost My log - This is the original log message and contains the full log message before splitting it up in multiple parts. In contrast to the `message` field which can contain an extracted part of the log message, this field contains the original, full log message. It can have already some modifications applied like encoding or new lines removed to clean up the log message. This field is not indexed and doc_values are disabled so it can't be queried but the value can be retrieved from `_source`. - -Field is not indexed. - -- [float] == network fields -The network is defined as the communication path over which a host or network event happens. The network.* fields should be populated with details about the network activity associated with an event. - - - -*`network.name`*:: -+ --- -type: keyword - -example: Guest Wifi - -Name given by operators to sections of their network. - - --- - -*`network.type`*:: -+ --- -type: keyword - -example: ipv4 - -In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. - - --- - -*`network.iana_number`*:: -+ --- -type: keyword - -example: 6 - -IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). Standardized list of protocols. This aligns well with NetFlow and sFlow related logs which use the IANA Protocol Number. - +The network is defined as the communication path over which a host or network event happens. +The network.* fields should be populated with details about the network activity associated with an event. --- -*`network.transport`*:: +*`network.application`*:: + -- type: keyword -example: tcp - -Same as network.iana_number, but instead using the Keyword name of the transport layer (udp, tcp, ipv6-icmp, etc.) -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: aim +A name given to an application level protocol. This can be arbitrarily assigned for things like microservices, but also apply to things like skype, icq, facebook, twitter. This would be used in situations where the vendor or service can be decoded such as from the source/dest IP owners, ports, or wire format. +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`network.application`*:: +*`network.bytes`*:: + -- -type: keyword - -example: aim +type: long -A name given to an application. This can be arbitrarily assigned for things like microservices, but also apply to things like skype, icq, facebook, twitter. This would be used in situations where the vendor or service can be decoded such as from the source/dest IP owners, ports, or wire format. -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: 368 +Total bytes transferred in both directions. +If `source.bytes` and `destination.bytes` are known, `network.bytes` is their sum. -- -*`network.protocol`*:: +*`network.community_id`*:: + -- type: keyword -example: http - -L7 Network protocol name. ex. http, lumberjack, transport protocol. -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: 1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0= +A hash of source and destination IPs and ports, as well as the protocol used in a communication. This is a tool-agnostic standard to identify flows. +Learn more at https://github.com/corelight/community-id-spec. -- @@ -2832,7 +2938,6 @@ Recommended values are: When mapping events from a host-based monitoring context, populate this field from the host's point of view. When mapping events from a network or perimeter-based monitoring context, populate this field from the point of view of your network perimeter. - -- *`network.forwarded_ip`*:: @@ -2844,34 +2949,27 @@ example: 192.1.1.2 Host IP address when the source IP address is the proxy. - -- -*`network.community_id`*:: +*`network.iana_number`*:: + -- type: keyword -example: 1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0= - -A hash of source and destination IPs and ports, as well as the protocol used in a communication. This is a tool-agnostic standard to identify flows. -Learn more at https://github.com/corelight/community-id-spec. +example: 6 +IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). Standardized list of protocols. This aligns well with NetFlow and sFlow related logs which use the IANA Protocol Number. -- -*`network.bytes`*:: +*`network.name`*:: + -- -type: long - -example: 368 - -format: bytes +type: keyword -Total bytes transferred in both directions. -If `source.bytes` and `destination.bytes` are known, `network.bytes` is their sum. +example: Guest Wifi +Name given by operators to sections of their network. -- @@ -2885,129 +2983,165 @@ example: 24 Total packets transferred in both directions. If `source.packets` and `destination.packets` are known, `network.packets` is their sum. - -- -[float] -== observer fields +*`network.protocol`*:: ++ +-- +type: keyword -An observer is defined as a special network, security, or application device used to detect, observe, or create network, security, or application-related events and metrics. This could be a custom hardware appliance or a server that has been configured to run special network, security, or application software. Examples include firewalls, intrusion detection/prevention systems, network monitoring sensors, web application firewalls, data loss prevention systems, and APM servers. The observer.* fields shall be populated with details of the system, if any, that detects, observes and/or creates a network, security, or application event or metric. Message queues and ETL components used in processing events or metrics are not considered observers in ECS. +example: http +L7 Network protocol name. ex. http, lumberjack, transport protocol. +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". +-- -*`observer.mac`*:: +*`network.transport`*:: + -- type: keyword -MAC address of the observer +example: tcp +Same as network.iana_number, but instead using the Keyword name of the transport layer (udp, tcp, ipv6-icmp, etc.) +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`observer.ip`*:: +*`network.type`*:: + -- -type: ip +type: keyword -IP address of the observer. +example: ipv4 +In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`observer.hostname`*:: +[float] +== observer fields + +An observer is defined as a special network, security, or application device used to detect, observe, or create network, security, or application-related events and metrics. +This could be a custom hardware appliance or a server that has been configured to run special network, security, or application software. Examples include firewalls, intrusion detection/prevention systems, network monitoring sensors, web application firewalls, data loss prevention systems, and APM servers. The observer.* fields shall be populated with details of the system, if any, that detects, observes and/or creates a network, security, or application event or metric. Message queues and ETL components used in processing events or metrics are not considered observers in ECS. + + +*`observer.geo.city_name`*:: + -- type: keyword -Hostname of the observer. +example: Montreal +City name. -- -*`observer.vendor`*:: +*`observer.geo.continent_name`*:: + -- type: keyword -observer vendor information. +example: North America +Name of the continent. -- -*`observer.version`*:: +*`observer.geo.country_iso_code`*:: + -- type: keyword -Observer version. +example: CA +Country ISO code. -- -*`observer.serial_number`*:: +*`observer.geo.country_name`*:: + -- type: keyword -Observer serial number. +example: Canada +Country name. -- -*`observer.type`*:: +*`observer.geo.location`*:: + -- -type: keyword - -example: firewall +type: geo_point -The type of the observer the data is coming from. -There is no predefined list of observer types. Some examples are `forwarder`, `firewall`, `ids`, `ips`, `proxy`, `poller`, `sensor`, `APM server`. +example: { "lon": -73.614830, "lat": 45.505918 } +Longitude and latitude. -- -[float] -== os fields +*`observer.geo.name`*:: ++ +-- +type: keyword -The OS fields contain information about the operating system. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. +-- -*`observer.os.platform`*:: +*`observer.geo.region_iso_code`*:: + -- type: keyword -example: darwin +example: CA-QC + +Region ISO code. + +-- + +*`observer.geo.region_name`*:: ++ +-- +type: keyword -Operating system platform (such centos, ubuntu, windows). +example: Quebec +Region name. -- -*`observer.os.name`*:: +*`observer.hostname`*:: + -- type: keyword -example: Mac OS X +Hostname of the observer. -Operating system name, without the version. +-- + +*`observer.ip`*:: ++ +-- +type: ip +IP address of the observer. -- -*`observer.os.full`*:: +*`observer.mac`*:: + -- type: keyword -example: Mac OS Mojave - -Operating system name, including the version or code name. - +MAC address of the observer -- @@ -3020,18 +3154,16 @@ example: debian OS family (such as redhat, debian, freebsd, windows). - -- -*`observer.os.version`*:: +*`observer.os.full`*:: + -- type: keyword -example: 10.14.1 - -Operating system version as a raw string. +example: Mac OS Mojave +Operating system name, including the version or code name. -- @@ -3044,138 +3176,102 @@ example: 4.4.0-112-generic Operating system kernel version as a raw string. - -- -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - -*`observer.geo.location`*:: -+ --- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } - -Longitude and latitude. - - --- - -*`observer.geo.continent_name`*:: +*`observer.os.name`*:: + -- type: keyword -example: North America - -Name of the continent. +example: Mac OS X +Operating system name, without the version. -- -*`observer.geo.country_name`*:: +*`observer.os.platform`*:: + -- type: keyword -example: Canada - -Country name. +example: darwin +Operating system platform (such centos, ubuntu, windows). -- -*`observer.geo.region_name`*:: +*`observer.os.version`*:: + -- type: keyword -example: Quebec - -Region name. +example: 10.14.1 +Operating system version as a raw string. -- -*`observer.geo.city_name`*:: +*`observer.serial_number`*:: + -- type: keyword -example: Montreal - -City name. - +Observer serial number. -- -*`observer.geo.country_iso_code`*:: +*`observer.type`*:: + -- type: keyword -example: CA - -Country ISO code. +example: firewall +The type of the observer the data is coming from. +There is no predefined list of observer types. Some examples are `forwarder`, `firewall`, `ids`, `ips`, `proxy`, `poller`, `sensor`, `APM server`. -- -*`observer.geo.region_iso_code`*:: +*`observer.vendor`*:: + -- type: keyword -example: CA-QC - -Region ISO code. - +observer vendor information. -- -*`observer.geo.name`*:: +*`observer.version`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. - +Observer version. -- [float] == organization fields -The organization fields enrich data with information about the company or entity the data is associated with. These fields help you arrange or filter data stored in an index by one or multiple organizations. +The organization fields enrich data with information about the company or entity the data is associated with. +These fields help you arrange or filter data stored in an index by one or multiple organizations. - -*`organization.name`*:: +*`organization.id`*:: + -- type: keyword -Organization name. - +Unique identifier for the organization. -- -*`organization.id`*:: +*`organization.name`*:: + -- type: keyword -Unique identifier for the organization. - +Organization name. -- @@ -3185,93 +3281,99 @@ Unique identifier for the organization. The OS fields contain information about the operating system. - -*`os.platform`*:: +*`os.family`*:: + -- type: keyword -example: darwin - -Operating system platform (such centos, ubuntu, windows). +example: debian +OS family (such as redhat, debian, freebsd, windows). -- -*`os.name`*:: +*`os.full`*:: + -- type: keyword -example: Mac OS X - -Operating system name, without the version. +example: Mac OS Mojave +Operating system name, including the version or code name. -- -*`os.full`*:: +*`os.kernel`*:: + -- type: keyword -example: Mac OS Mojave - -Operating system name, including the version or code name. +example: 4.4.0-112-generic +Operating system kernel version as a raw string. -- -*`os.family`*:: +*`os.name`*:: + -- type: keyword -example: debian - -OS family (such as redhat, debian, freebsd, windows). +example: Mac OS X +Operating system name, without the version. -- -*`os.version`*:: +*`os.platform`*:: + -- type: keyword -example: 10.14.1 - -Operating system version as a raw string. +example: darwin +Operating system platform (such centos, ubuntu, windows). -- -*`os.kernel`*:: +*`os.version`*:: + -- type: keyword -example: 4.4.0-112-generic - -Operating system kernel version as a raw string. +example: 10.14.1 +Operating system version as a raw string. -- [float] == process fields -These fields contain information about a process. These fields can help you correlate metrics information with a process id/name from a log message. The `process.pid` often stays in the metric itself and is copied to the global field for correlation. +These fields contain information about a process. +These fields can help you correlate metrics information with a process id/name from a log message. The `process.pid` often stays in the metric itself and is copied to the global field for correlation. + + +*`process.args`*:: ++ +-- +type: keyword + +example: ['ssh', '-l', 'user', '10.0.0.16'] +Array of process arguments. +May be filtered to protect sensitive information. +-- -*`process.pid`*:: +*`process.executable`*:: + -- -type: long +type: keyword -Process id. +example: /usr/bin/ssh +Absolute path to the process executable. -- @@ -3285,6 +3387,14 @@ example: ssh Process name. Sometimes called program name or similar. +-- + +*`process.pid`*:: ++ +-- +type: long + +Process id. -- @@ -3295,31 +3405,27 @@ type: long Process parent id. - -- -*`process.args`*:: +*`process.start`*:: + -- -type: keyword - -example: ['ssh', '-l', 'user', '10.0.0.16'] +type: date -Process arguments. -May be filtered to protect sensitive information. +example: 2016-05-23T08:05:34.853Z +The time the process started. -- -*`process.executable`*:: +*`process.thread.id`*:: + -- -type: keyword - -example: /usr/bin/ssh +type: long -Absolute path to the process executable. +example: 4242 +Thread ID. -- @@ -3331,133 +3437,180 @@ type: keyword Process title. The proctitle, some times the same as process name. Can also be different: for example a browser setting its title to the web page currently opened. - -- -*`process.thread.id`*:: +*`process.working_directory`*:: + -- -type: long - -example: 4242 +type: keyword -Thread ID. +example: /home/alice +The working directory of the process. -- -*`process.start`*:: +[float] +== related fields + +This field set is meant to facilitate pivoting around a piece of data. +Some pieces of information can be seen in many places in an ECS event. To facilitate searching for them, store an array of all seen values to their corresponding field in `related.`. +A concrete example is IP addresses, which can be under host, observer, source, destination, client, server, and network.forwarded_ip. If you append all IPs to `related.ip`, you can then search for a given IP trivially, no matter where it appeared, by querying `related.ip:a.b.c.d`. + + +*`related.ip`*:: + -- -type: date +type: ip -example: 2016-05-23T08:05:34.853Z +All of the IPs seen on your event. -The time the process started. +-- + +[float] +== server fields +A Server is defined as the responder in a network connection for events regarding sessions, connections, or bidirectional flow records. +For TCP events, the server is the receiver of the initial SYN packet(s) of the TCP connection. For other protocols, the server is generally the responder in the network transaction. Some systems actually use the term "responder" to refer the server in TCP connections. The server fields describe details about the system acting as the server in the network event. Server fields are usually populated in conjunction with client fields. Server fields are generally not populated for packet-level events. +Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. --- -*`process.working_directory`*:: +*`server.address`*:: + -- type: keyword -example: /home/alice +Some event server addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. -The working directory of the process. +-- + +*`server.bytes`*:: ++ +-- +type: long +example: 184 + +Bytes sent from the server to the client. -- -[float] -== related fields +*`server.domain`*:: ++ +-- +type: keyword + +Server domain. + +-- + +*`server.geo.city_name`*:: ++ +-- +type: keyword -This field set is meant to facilitate pivoting around a piece of data. Some pieces of information can be seen in many places in ECS. To facilitate searching for them, append values to their corresponding field in `related.`. A concrete example is IP addresses, which can be under host, observer, source, destination, client, server, and network.forwarded_ip. If you append all IPs to `related.ip`, you can then search for a given IP trivially, no matter where it appeared, by querying `related.ip:a.b.c.d`. +example: Montreal +City name. +-- -*`related.ip`*:: +*`server.geo.continent_name`*:: + -- -type: ip +type: keyword -All of the IPs seen on your event. +example: North America +Name of the continent. -- -[float] -== server fields +*`server.geo.country_iso_code`*:: ++ +-- +type: keyword -A Server is defined as the responder in a network connection for events regarding sessions, connections, or bidirectional flow records. For TCP events, the server is the receiver of the initial SYN packet(s) of the TCP connection. For other protocols, the server is generally the responder in the network transaction. Some systems actually use the term "responder" to refer the server in TCP connections. The server fields describe details about the system acting as the server in the network event. Server fields are usually populated in conjunction with client fields. Server fields are generally not populated for packet-level events. -Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. +example: CA +Country ISO code. +-- -*`server.address`*:: +*`server.geo.country_name`*:: + -- type: keyword -Some event server addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. -Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. +example: Canada +Country name. -- -*`server.ip`*:: +*`server.geo.location`*:: + -- -type: ip +type: geo_point -IP address of the server. -Can be one or multiple IPv4 or IPv6 addresses. +example: { "lon": -73.614830, "lat": 45.505918 } +Longitude and latitude. -- -*`server.port`*:: +*`server.geo.name`*:: + -- -type: long +type: keyword -Port of the server. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`server.mac`*:: +*`server.geo.region_iso_code`*:: + -- type: keyword -MAC address of the server. +example: CA-QC +Region ISO code. -- -*`server.domain`*:: +*`server.geo.region_name`*:: + -- type: keyword -Server domain. +example: Quebec +Region name. -- -*`server.bytes`*:: +*`server.ip`*:: + -- -type: long +type: ip -example: 184 +IP address of the server. +Can be one or multiple IPv4 or IPv6 addresses. -format: bytes +-- -Bytes sent from the server to the client. +*`server.mac`*:: ++ +-- +type: keyword +MAC address of the server. -- @@ -3470,120 +3623,103 @@ example: 12 Packets sent from the server to the client. - -- -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - -*`server.geo.location`*:: +*`server.port`*:: + -- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } - -Longitude and latitude. +type: long +Port of the server. -- -*`server.geo.continent_name`*:: +*`server.user.email`*:: + -- type: keyword -example: North America - -Name of the continent. - +User email address. -- -*`server.geo.country_name`*:: +*`server.user.full_name`*:: + -- type: keyword -example: Canada - -Country name. +example: Albert Einstein +User's full name, if available. -- -*`server.geo.region_name`*:: +*`server.user.group.id`*:: + -- type: keyword -example: Quebec - -Region name. - +Unique identifier for the group on the system/platform. -- -*`server.geo.city_name`*:: +*`server.user.group.name`*:: + -- type: keyword -example: Montreal - -City name. - +Name of the group. -- -*`server.geo.country_iso_code`*:: +*`server.user.hash`*:: + -- type: keyword -example: CA - -Country ISO code. - +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -- -*`server.geo.region_iso_code`*:: +*`server.user.id`*:: + -- type: keyword -example: CA-QC - -Region ISO code. - +One or multiple unique identifiers of the user. -- -*`server.geo.name`*:: +*`server.user.name`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +example: albert +Short name or login of the user. -- [float] == service fields -The service fields describe the service for or from which the data was collected. These fields help you find and correlate logs for a specific service and version. +The service fields describe the service for or from which the data was collected. +These fields help you find and correlate logs for a specific service and version. + + +*`service.ephemeral_id`*:: ++ +-- +type: keyword + +example: 8a4f500f +Ephemeral identifier of this service (if one exists). +This id normally changes across restarts, but `service.id` does not. +-- *`service.id`*:: + @@ -3596,7 +3732,6 @@ Unique identifier of the running service. This id should uniquely identify this service. This makes it possible to correlate logs and metrics for one specific service. Example: If you are experiencing issues with one redis instance, you can filter on that id to see metrics and logs for that single instance. - -- *`service.name`*:: @@ -3611,6 +3746,14 @@ The name of the service is normally user given. This allows if two instances of Also it allows for distributed services that run on multiple hosts to correlate the related instances based on the name. In the case of Elasticsearch the service.name could contain the cluster name. For Beats the service.name is by default a copy of the `service.type` field if no name is specified. +-- + +*`service.state`*:: ++ +-- +type: keyword + +Current state of the service. -- @@ -3625,115 +3768,163 @@ The type of the service data is collected from. The type can be used to group and correlate logs and metrics from one service type. Example: If logs or metrics are collected from Elasticsearch, `service.type` would be `elasticsearch`. - -- -*`service.state`*:: +*`service.version`*:: + -- type: keyword -Current state of the service. +example: 3.2.4 +Version of the service the data was collected from. +This allows to look at a data set only for a specific version of a service. -- -*`service.version`*:: +[float] +== source fields + +Source fields describe details about the source of a packet/event. +Source fields are usually populated in conjunction with destination fields. + + +*`source.address`*:: + -- type: keyword -example: 3.2.4 +Some event source addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. -Version of the service the data was collected from. -This allows to look at a data set only for a specific version of a service. +-- + +*`source.bytes`*:: ++ +-- +type: long +example: 184 + +Bytes sent from the source to the destination. -- -*`service.ephemeral_id`*:: +*`source.domain`*:: + -- type: keyword -example: 8a4f500f +Source domain. -Ephemeral identifier of this service (if one exists). -This id normally changes across restarts, but `service.id` does not. +-- + +*`source.geo.city_name`*:: ++ +-- +type: keyword + +example: Montreal +City name. -- -[float] -== source fields +*`source.geo.continent_name`*:: ++ +-- +type: keyword -Source fields describe details about the source of a packet/event. Source fields are usually populated in conjunction with destination fields. +example: North America +Name of the continent. +-- -*`source.address`*:: +*`source.geo.country_iso_code`*:: + -- type: keyword -Some event source addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. -Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. +example: CA +Country ISO code. -- -*`source.ip`*:: +*`source.geo.country_name`*:: + -- -type: ip +type: keyword -IP address of the source. -Can be one or multiple IPv4 or IPv6 addresses. +example: Canada +Country name. -- -*`source.port`*:: +*`source.geo.location`*:: + -- -type: long +type: geo_point -Port of the source. +example: { "lon": -73.614830, "lat": 45.505918 } + +Longitude and latitude. +-- +*`source.geo.name`*:: ++ -- +type: keyword -*`source.mac`*:: +example: boston-dc + +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. + +-- + +*`source.geo.region_iso_code`*:: + -- type: keyword -MAC address of the source. +example: CA-QC +Region ISO code. -- -*`source.domain`*:: +*`source.geo.region_name`*:: + -- type: keyword -Source domain. +example: Quebec +Region name. -- -*`source.bytes`*:: +*`source.ip`*:: + -- -type: long +type: ip -example: 184 +IP address of the source. +Can be one or multiple IPv4 or IPv6 addresses. -format: bytes +-- -Bytes sent from the source to the destination. +*`source.mac`*:: ++ +-- +type: keyword +MAC address of the source. -- @@ -3746,133 +3937,110 @@ example: 12 Packets sent from the source to the destination. - -- -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - -*`source.geo.location`*:: +*`source.port`*:: + -- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } - -Longitude and latitude. +type: long +Port of the source. -- -*`source.geo.continent_name`*:: +*`source.user.email`*:: + -- type: keyword -example: North America - -Name of the continent. - +User email address. -- -*`source.geo.country_name`*:: +*`source.user.full_name`*:: + -- type: keyword -example: Canada - -Country name. +example: Albert Einstein +User's full name, if available. -- -*`source.geo.region_name`*:: +*`source.user.group.id`*:: + -- type: keyword -example: Quebec - -Region name. - +Unique identifier for the group on the system/platform. -- -*`source.geo.city_name`*:: +*`source.user.group.name`*:: + -- type: keyword -example: Montreal - -City name. - +Name of the group. -- -*`source.geo.country_iso_code`*:: +*`source.user.hash`*:: + -- type: keyword -example: CA - -Country ISO code. - +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -- -*`source.geo.region_iso_code`*:: +*`source.user.id`*:: + -- type: keyword -example: CA-QC - -Region ISO code. - +One or multiple unique identifiers of the user. -- -*`source.geo.name`*:: +*`source.user.name`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +example: albert +Short name or login of the user. -- [float] == url fields -URL fields provide a complete URL, with scheme, host, and path. - +URL fields provide support for complete or partial URLs, and supports the breaking down into scheme, domain, path, and so on. -*`url.original`*:: +*`url.domain`*:: + -- type: keyword -example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch +example: www.elastic.co +Domain of the url, such as "www.elastic.co". +In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. -Unmodified original url as seen in the event source. -Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. -This field is meant to represent the URL as it was observed, complete or not. +-- + +*`url.fragment`*:: ++ +-- +type: keyword +Portion of the url after the `#`, such as "top". +The `#` is not part of the fragment. -- @@ -3885,54 +4053,47 @@ example: https://www.elastic.co:443/search?q=elasticsearch#top If full URLs are important to your use case, they should be stored in `url.full`, whether this field is reconstructed or present in the event source. - -- -*`url.scheme`*:: +*`url.original`*:: + -- type: keyword -example: https - -Scheme of the request, such as "https". -Note: The `:` is not part of the scheme. +example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch +Unmodified original url as seen in the event source. +Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. +This field is meant to represent the URL as it was observed, complete or not. -- -*`url.domain`*:: +*`url.password`*:: + -- type: keyword -example: www.elastic.co - -Domain of the request, such as "www.elastic.co". -In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. - +Password of the request. -- -*`url.port`*:: +*`url.path`*:: + -- -type: integer - -example: 443 - -Port of the request, such as 443. +type: keyword +Path of the request, such as "/search". -- -*`url.path`*:: +*`url.port`*:: + -- -type: keyword +type: long -Path of the request, such as "/search". +example: 443 +Port of the request, such as 443. -- @@ -3944,17 +4105,17 @@ type: keyword The query field describes the query string of the request, such as "q=elasticsearch". The `?` is excluded from the query string. If a URL contains no `?`, there is no query field. If there is a `?` but no query, the query field exists with an empty string. The `exists` query can be used to differentiate between the two cases. - -- -*`url.fragment`*:: +*`url.scheme`*:: + -- type: keyword -Portion of the url after the `#`, such as "top". -The `#` is not part of the fragment. +example: https +Scheme of the request, such as "https". +Note: The `:` is not part of the scheme. -- @@ -3965,67 +4126,50 @@ type: keyword Username of the request. - --- - -*`url.password`*:: -+ --- -type: keyword - -Password of the request. - - -- [float] == user fields -The user fields describe information about the user that is relevant to the event. Fields can have one entry or multiple entries. If a user has more than one id, provide an array that includes all of them. - +The user fields describe information about the user that is relevant to the event. +Fields can have one entry or multiple entries. If a user has more than one id, provide an array that includes all of them. -*`user.id`*:: +*`user.email`*:: + -- type: keyword -One or multiple unique identifiers of the user. - +User email address. -- -*`user.name`*:: +*`user.full_name`*:: + -- type: keyword -example: albert - -Short name or login of the user. +example: Albert Einstein +User's full name, if available. -- -*`user.full_name`*:: +*`user.group.id`*:: + -- type: keyword -example: Albert Einstein - -User's full name, if available. - +Unique identifier for the group on the system/platform. -- -*`user.email`*:: +*`user.group.name`*:: + -- type: keyword -User email address. - +Name of the group. -- @@ -4037,52 +4181,43 @@ type: keyword Unique user hash to correlate information for a user in anonymized form. Useful if `user.id` or `user.name` contain confidential information and cannot be used. - -- -[float] -== group fields - -The group fields are meant to represent groups that are relevant to the event. - - - -*`user.group.id`*:: +*`user.id`*:: + -- type: keyword -Unique identifier for the group on the system/platform. - +One or multiple unique identifiers of the user. -- -*`user.group.name`*:: +*`user.name`*:: + -- type: keyword -Name of the group. +example: albert +Short name or login of the user. -- [float] == user_agent fields -The user_agent fields normally come from a browser request. They often show up in web service logs coming from the parsed user agent string. +The user_agent fields normally come from a browser request. +They often show up in web service logs coming from the parsed user agent string. - -*`user_agent.original`*:: +*`user_agent.device.name`*:: + -- type: keyword -example: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1 - -Unparsed version of the user_agent. +example: iPhone +Name of the device. -- @@ -4095,85 +4230,71 @@ example: Safari Name of the user agent. - -- -*`user_agent.version`*:: +*`user_agent.original`*:: + -- type: keyword -example: 12.0 - -Version of the user agent. +example: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1 +Unparsed version of the user_agent. -- -*`user_agent.device.name`*:: +*`user_agent.os.family`*:: + -- type: keyword -example: iPhone - -Name of the device. +example: debian +OS family (such as redhat, debian, freebsd, windows). -- -[float] -== os fields - -The OS fields contain information about the operating system. - - - -*`user_agent.os.platform`*:: +*`user_agent.os.full`*:: + -- type: keyword -example: darwin - -Operating system platform (such centos, ubuntu, windows). +example: Mac OS Mojave +Operating system name, including the version or code name. -- -*`user_agent.os.name`*:: +*`user_agent.os.kernel`*:: + -- type: keyword -example: Mac OS X - -Operating system name, without the version. +example: 4.4.0-112-generic +Operating system kernel version as a raw string. -- -*`user_agent.os.full`*:: +*`user_agent.os.name`*:: + -- type: keyword -example: Mac OS Mojave - -Operating system name, including the version or code name. +example: Mac OS X +Operating system name, without the version. -- -*`user_agent.os.family`*:: +*`user_agent.os.platform`*:: + -- type: keyword -example: debian - -OS family (such as redhat, debian, freebsd, windows). +example: darwin +Operating system platform (such centos, ubuntu, windows). -- @@ -4186,28 +4307,16 @@ example: 10.14.1 Operating system version as a raw string. - --- - -*`user_agent.os.kernel`*:: -+ --- -type: keyword - -example: 4.4.0-112-generic - -Operating system kernel version as a raw string. - - -- -*`agent.hostname`*:: +*`user_agent.version`*:: + -- type: keyword -Hostname of the agent. +example: 12.0 +Version of the user agent. -- diff --git a/filebeat/include/fields.go b/filebeat/include/fields.go index bdfb144adcef..15a6824c6efc 100644 --- a/filebeat/include/fields.go +++ b/filebeat/include/fields.go @@ -32,5 +32,5 @@ func init() { // AssetFieldsYml returns asset data. // This is the base64 encoded gzipped contents of fields.yml. func AssetFieldsYml() string { - return "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" + return "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" } diff --git a/heartbeat/docs/fields.asciidoc b/heartbeat/docs/fields.asciidoc index ad76d6362685..e143bc5f6e1f 100644 --- a/heartbeat/docs/fields.asciidoc +++ b/heartbeat/docs/fields.asciidoc @@ -36,6 +36,15 @@ Contains common beat fields available in all event types. +*`agent.hostname`*:: ++ +-- +type: keyword + +Hostname of the agent. + +-- + *`beat.timezone`*:: + -- @@ -332,8 +341,7 @@ Image labels. [[exported-fields-ecs]] == ECS fields -ECS fields. - +ECS Fields. *`@timestamp`*:: @@ -346,22 +354,10 @@ example: 2016-05-23T08:05:34.853Z required: True Date/time when the event originated. -For log events this is the date/time when the event was generated, and not when it was read. +This is the date/time extracted from the event, typically representing when the event was generated by the source. +If the event source has no original timestamp, this value is typically populated by the first time the event was received by the pipeline. Required field for all events. - --- - -*`tags`*:: -+ --- -type: keyword - -example: ["production", "env2"] - -List of keywords used to tag each event. - - -- *`labels`*:: @@ -371,11 +367,10 @@ type: object example: {'application': 'foo-bar', 'env': 'production'} -Key/value pairs. +Custom key/value pairs. Can be used to add meta information to events. Should not contain nested objects. All values are stored as keyword. Example: `docker` and `k8s` labels. - -- *`message`*:: @@ -385,28 +380,51 @@ type: text example: Hello World -For log events the message field contains the log message. -In other use cases the message field can be used to concatenate different values which are then freely searchable. If multiple messages exist, they can be combined into one message. +For log events the message field contains the log message, optimized for viewing in a log viewer. +For structured logs without an original message field, other fields can be concatenated to form a human-readable summary of the event. +If multiple messages exist, they can be combined into one message. + +-- + +*`tags`*:: ++ +-- +type: keyword + +example: ["production", "env2"] +List of keywords used to tag each event. -- [float] == agent fields -The agent fields contain the data about the software entity, if any, that collects, detects, or observes events on a host, or takes measurements on a host. Examples include Beats. Agents may also run on observers. ECS agent.* fields shall be populated with details of the agent running on the host or observer where the event happened or the measurement was taken. +The agent fields contain the data about the software entity, if any, that collects, detects, or observes events on a host, or takes measurements on a host. +Examples include Beats. Agents may also run on observers. ECS agent.* fields shall be populated with details of the agent running on the host or observer where the event happened or the measurement was taken. - -*`agent.version`*:: +*`agent.ephemeral_id`*:: + -- type: keyword -example: 6.0.0-rc2 +example: 8a4f500f -Version of the agent. +Ephemeral identifier of this agent (if one exists). +This id normally changes across restarts, but `agent.id` does not. + +-- + +*`agent.id`*:: ++ +-- +type: keyword + +example: 8a4f500d +Unique identifier of this agent (if one exists). +Example: For Beats this would be beat.id. -- @@ -417,11 +435,10 @@ type: keyword example: foo -Name of the agent. +Custom name of the agent. This is a name that can be given to an agent. This can be helpful if for example two Filebeat instances are running on the same host but a human readable separation is needed on which Filebeat instance data is coming from. If no name is given, the name is often left empty. - -- *`agent.type`*:: @@ -434,43 +451,27 @@ example: filebeat Type of the agent. The agent type stays always the same and should be given by the agent used. In case of Filebeat the agent would always be Filebeat also if two Filebeat instances are run on the same machine. - --- - -*`agent.id`*:: -+ --- -type: keyword - -example: 8a4f500d - -Unique identifier of this agent (if one exists). -Example: For Beats this would be beat.id. - - -- -*`agent.ephemeral_id`*:: +*`agent.version`*:: + -- type: keyword -example: 8a4f500f - -Ephemeral identifier of this agent (if one exists). -This id normally changes across restarts, but `agent.id` does not. +example: 6.0.0-rc2 +Version of the agent. -- [float] == client fields -A client is defined as the initiator of a network connection for events regarding sessions, connections, or bidirectional flow records. For TCP events, the client is the initiator of the TCP connection that sends the SYN packet(s). For other protocols, the client is generally the initiator or requestor in the network transaction. Some systems use the term "originator" to refer the client in TCP connections. The client fields describe details about the system acting as the client in the network event. Client fields are usually populated in conjunction with server fields. Client fields are generally not populated for packet-level events. +A client is defined as the initiator of a network connection for events regarding sessions, connections, or bidirectional flow records. +For TCP events, the client is the initiator of the TCP connection that sends the SYN packet(s). For other protocols, the client is generally the initiator or requestor in the network transaction. Some systems use the term "originator" to refer the client in TCP connections. The client fields describe details about the system acting as the client in the network event. Client fields are usually populated in conjunction with server fields. Client fields are generally not populated for packet-level events. Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. - *`client.address`*:: + -- @@ -479,83 +480,72 @@ type: keyword Some event client addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. - -- -*`client.ip`*:: +*`client.bytes`*:: + -- -type: ip +type: long -IP address of the client. -Can be one or multiple IPv4 or IPv6 addresses. +example: 184 +Bytes sent from the client to the server. -- -*`client.port`*:: +*`client.domain`*:: + -- -type: long - -Port of the client. +type: keyword +Client domain. -- -*`client.mac`*:: +*`client.geo.city_name`*:: + -- type: keyword -MAC address of the client. +example: Montreal +City name. -- -*`client.domain`*:: +*`client.geo.continent_name`*:: + -- type: keyword -Client domain. +example: North America +Name of the continent. -- -*`client.bytes`*:: +*`client.geo.country_iso_code`*:: + -- -type: long - -example: 184 - -format: bytes +type: keyword -Bytes sent from the client to the server. +example: CA +Country ISO code. -- -*`client.packets`*:: +*`client.geo.country_name`*:: + -- -type: long - -example: 12 +type: keyword -Packets sent from the client to the server. +example: Canada +Country name. -- -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - *`client.geo.location`*:: + -- @@ -565,30 +555,29 @@ example: { "lon": -73.614830, "lat": 45.505918 } Longitude and latitude. - -- -*`client.geo.continent_name`*:: +*`client.geo.name`*:: + -- type: keyword -example: North America - -Name of the continent. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`client.geo.country_name`*:: +*`client.geo.region_iso_code`*:: + -- type: keyword -example: Canada - -Country name. +example: CA-QC +Region ISO code. -- @@ -601,274 +590,274 @@ example: Quebec Region name. - -- -*`client.geo.city_name`*:: +*`client.ip`*:: + -- -type: keyword - -example: Montreal - -City name. +type: ip +IP address of the client. +Can be one or multiple IPv4 or IPv6 addresses. -- -*`client.geo.country_iso_code`*:: +*`client.mac`*:: + -- type: keyword -example: CA - -Country ISO code. - +MAC address of the client. -- -*`client.geo.region_iso_code`*:: +*`client.packets`*:: + -- -type: keyword - -example: CA-QC +type: long -Region ISO code. +example: 12 +Packets sent from the client to the server. -- -*`client.geo.name`*:: +*`client.port`*:: + -- -type: keyword - -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +type: long +Port of the client. -- -[float] -== cloud fields - -Fields related to the cloud or infrastructure the events are coming from. - - - -*`cloud.provider`*:: +*`client.user.email`*:: + -- type: keyword -example: ec2 - -Name of the cloud provider. Example values are ec2, gce, or digitalocean. - +User email address. -- -*`cloud.availability_zone`*:: +*`client.user.full_name`*:: + -- type: keyword -example: us-east-1c - -Availability zone in which this host is running. +example: Albert Einstein +User's full name, if available. -- -*`cloud.region`*:: +*`client.user.group.id`*:: + -- type: keyword -example: us-east-1 - -Region in which this host is running. - +Unique identifier for the group on the system/platform. -- -*`cloud.instance.id`*:: +*`client.user.group.name`*:: + -- type: keyword -example: i-1234567890abcdef0 - -Instance ID of the host machine. - +Name of the group. -- -*`cloud.instance.name`*:: +*`client.user.hash`*:: + -- type: keyword -Instance name of the host machine. - +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -- -*`cloud.machine.type`*:: +*`client.user.id`*:: + -- type: keyword -example: t2.medium - -Machine type of the host machine. - +One or multiple unique identifiers of the user. -- -*`cloud.account.id`*:: +*`client.user.name`*:: + -- type: keyword -example: 666777888999 - -The cloud account or organization id used to identify different entities in a multi-tenant environment. -Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. +example: albert +Short name or login of the user. -- [float] -== container fields - -Container fields are used for meta information about the specific container that is the source of information. These fields help correlate data based containers from any runtime. +== cloud fields +Fields related to the cloud or infrastructure the events are coming from. -*`container.runtime`*:: +*`cloud.account.id`*:: + -- type: keyword -example: docker - -Runtime managing this container. +example: 666777888999 +The cloud account or organization id used to identify different entities in a multi-tenant environment. +Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. -- -*`container.id`*:: +*`cloud.availability_zone`*:: + -- type: keyword -Unique container id. +example: us-east-1c +Availability zone in which this host is running. -- -*`container.image.name`*:: +*`cloud.instance.id`*:: + -- type: keyword -Name of the image the container was built on. +example: i-1234567890abcdef0 +Instance ID of the host machine. -- -*`container.image.tag`*:: +*`cloud.instance.name`*:: + -- type: keyword -Container image tag. +Instance name of the host machine. +-- +*`cloud.machine.type`*:: ++ -- +type: keyword -*`container.name`*:: +example: t2.medium + +Machine type of the host machine. + +-- + +*`cloud.provider`*:: + -- type: keyword -Container name. +example: aws +Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. -- -*`container.labels`*:: +*`cloud.region`*:: + -- -type: object +type: keyword -Image labels. +example: us-east-1 +Region in which this host is running. -- [float] -== destination fields - -Destination fields describe details about the destination of a packet/event. Destination fields are usually populated in conjunction with source fields. +== container fields +Container fields are used for meta information about the specific container that is the source of information. +These fields help correlate data based containers from any runtime. -*`destination.address`*:: +*`container.id`*:: + -- type: keyword -Some event destination addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. -Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. - +Unique container id. -- -*`destination.ip`*:: +*`container.image.name`*:: + -- -type: ip +type: keyword -IP address of the destination. -Can be one or multiple IPv4 or IPv6 addresses. +Name of the image the container was built on. + +-- + +*`container.image.tag`*:: ++ +-- +type: keyword +Container image tag. -- -*`destination.port`*:: +*`container.labels`*:: + -- -type: long +type: object -Port of the destination. +Image labels. + +-- + +*`container.name`*:: ++ +-- +type: keyword +Container name. -- -*`destination.mac`*:: +*`container.runtime`*:: + -- type: keyword -MAC address of the destination. +example: docker +Runtime managing this container. -- -*`destination.domain`*:: +[float] +== destination fields + +Destination fields describe details about the destination of a packet/event. +Destination fields are usually populated in conjunction with source fields. + + +*`destination.address`*:: + -- type: keyword -Destination domain. - +Some event destination addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. -- @@ -879,31 +868,62 @@ type: long example: 184 -format: bytes - Bytes sent from the destination to the source. +-- +*`destination.domain`*:: ++ -- +type: keyword -*`destination.packets`*:: +Destination domain. + +-- + +*`destination.geo.city_name`*:: + -- -type: long +type: keyword -example: 12 +example: Montreal -Packets sent from the destination to the source. +City name. + +-- +*`destination.geo.continent_name`*:: ++ +-- +type: keyword + +example: North America + +Name of the continent. -- -[float] -== geo fields +*`destination.geo.country_iso_code`*:: ++ +-- +type: keyword + +example: CA + +Country ISO code. + +-- -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. +*`destination.geo.country_name`*:: ++ +-- +type: keyword +example: Canada +Country name. + +-- *`destination.geo.location`*:: + @@ -914,30 +934,29 @@ example: { "lon": -73.614830, "lat": 45.505918 } Longitude and latitude. - -- -*`destination.geo.continent_name`*:: +*`destination.geo.name`*:: + -- type: keyword -example: North America - -Name of the continent. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`destination.geo.country_name`*:: +*`destination.geo.region_iso_code`*:: + -- type: keyword -example: Canada - -Country name. +example: CA-QC +Region ISO code. -- @@ -950,56 +969,112 @@ example: Quebec Region name. +-- +*`destination.ip`*:: ++ -- +type: ip -*`destination.geo.city_name`*:: +IP address of the destination. +Can be one or multiple IPv4 or IPv6 addresses. + +-- + +*`destination.mac`*:: + -- type: keyword -example: Montreal +MAC address of the destination. -City name. +-- + +*`destination.packets`*:: ++ +-- +type: long + +example: 12 +Packets sent from the destination to the source. -- -*`destination.geo.country_iso_code`*:: +*`destination.port`*:: ++ +-- +type: long + +Port of the destination. + +-- + +*`destination.user.email`*:: + -- type: keyword -example: CA +User email address. -Country ISO code. +-- +*`destination.user.full_name`*:: ++ +-- +type: keyword + +example: Albert Einstein + +User's full name, if available. -- -*`destination.geo.region_iso_code`*:: +*`destination.user.group.id`*:: + -- type: keyword -example: CA-QC +Unique identifier for the group on the system/platform. -Region ISO code. +-- +*`destination.user.group.name`*:: ++ +-- +type: keyword + +Name of the group. -- -*`destination.geo.name`*:: +*`destination.user.hash`*:: + -- type: keyword -example: boston-dc +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +-- + +*`destination.user.id`*:: ++ +-- +type: keyword + +One or multiple unique identifiers of the user. + +-- + +*`destination.user.name`*:: ++ +-- +type: keyword +example: albert + +Short name or login of the user. -- @@ -1009,29 +1084,35 @@ Not typically used in automated geolocation. Meta-information specific to ECS. - *`ecs.version`*:: + -- type: keyword -example: 1.0.0-beta2 +example: 1.0.0 required: True ECS version this event conforms to. `ecs.version` is a required field and must exist in all events. When querying across multiple indices -- which may conform to slightly different ECS versions -- this field lets integrations adjust to the schema version of the events. -The current version is 1.0.0-beta2 . - -- [float] == error fields -These fields can represent errors of any kind. Use them for errors that happen while fetching events or in cases where the event itself contains an error. +These fields can represent errors of any kind. +Use them for errors that happen while fetching events or in cases where the event itself contains an error. + + +*`error.code`*:: ++ +-- +type: keyword +Error code describing the error. +-- *`error.id`*:: + @@ -1040,7 +1121,6 @@ type: keyword Unique identifier for the error. - -- *`error.message`*:: @@ -1050,98 +1130,113 @@ type: text Error message. - -- -*`error.code`*:: +[float] +== event fields + +The event fields are used for context information about the log or metric event itself. +A log is defined as an event containing details of something that happened. Log events must include the time at which the thing happened. Examples of log events include a process starting on a host, a network packet being sent from a source to a destination, or a network connection between a client and a server being initiated or closed. A metric is defined as an event containing one or more numerical or categorical measurements and the time at which the measurement was taken. Examples of metric events include memory pressure measured on a host, or vulnerabilities measured on a scanned host. + + +*`event.action`*:: + -- type: keyword -Error code describing the error. +example: user-password-change +The action captured by the event. +This describes the information in the event. It is more specific than `event.category`. Examples are `group-add`, `process-started`, `file-created`. The value is normally defined by the implementer. -- -[float] -== event fields +*`event.category`*:: ++ +-- +type: keyword -The event fields are used for context information about the log or metric event itself. A log is defined as an event containing details of something that happened. Log events must include the time at which the thing happened. Examples of log events include a process starting on a host, a network packet being sent from a source to a destination, or a network connection between a client and a server being initiated or closed. A metric is defined as an event containing one or more numerical or categorical measurements and the time at which the measurement was taken. Examples of metric events include memory pressure measured on a host, or vulnerabilities measured on a scanned host. +example: user-management +Event category. +This contains high-level information about the contents of the event. It is more generic than `event.action`, in the sense that typically a category contains multiple actions. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +-- -*`event.id`*:: +*`event.created`*:: + -- -type: keyword - -example: 8a4f500d - -Unique ID to describe the event. +type: date +event.created contains the date/time when the event was first read by an agent, or by your pipeline. +This field is distinct from @timestamp in that @timestamp typically contain the time extracted from the original event. +In most situations, these two timestamps will be slightly different. The difference can be used to calculate the delay between your source generating an event, and the time when your agent first processed it. This can be used to monitor your agent's or pipeline's ability to keep up with your event source. +In case the two timestamps are identical, @timestamp should be used. -- -*`event.kind`*:: +*`event.dataset`*:: + -- type: keyword -example: state - -The kind of the event. -This gives information about what type of information the event contains, without being specific to the contents of the event. Examples are `event`, `state`, `alarm`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +example: stats +Name of the dataset. +The concept of a `dataset` (fileset / metricset) is used in Beats as a subset of modules. It contains the information which is currently stored in metricset.name and metricset.module or fileset.name. -- -*`event.category`*:: +*`event.duration`*:: + -- -type: keyword +type: long -example: user-management +Duration of the event in nanoseconds. +If event.start and event.end are known this value should be the difference between the end and start time. -Event category. -This contains high-level information about the contents of the event. It is more generic than `event.action`, in the sense that typically a category contains multiple actions. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +-- +*`event.end`*:: ++ +-- +type: date + +event.end contains the date when the event ended or when the activity was last observed. -- -*`event.action`*:: +*`event.hash`*:: + -- type: keyword -example: user-password-change - -The action captured by the event. -This describes the information in the event. It is more specific than `event.category`. Examples are `group-add`, `process-started`, `file-created`. The value is normally defined by the implementer. +example: 123456789012345678901234567890ABCD +Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate log integrity. -- -*`event.outcome`*:: +*`event.id`*:: + -- type: keyword -example: success - -The outcome of the event. -If the event describes an action, this fields contains the outcome of that action. Examples outcomes are `success` and `failure`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +example: 8a4f500d +Unique ID to describe the event. -- -*`event.type`*:: +*`event.kind`*:: + -- type: keyword -Reserved for future usage. -Please avoid using this field for user data. +example: state +The kind of the event. +This gives information about what type of information the event contains, without being specific to the contents of the event. Examples are `event`, `state`, `alarm`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. -- @@ -1155,19 +1250,48 @@ example: mysql Name of the module this data is coming from. This information is coming from the modules used in Beats or Logstash. +-- +*`event.original`*:: ++ -- +type: keyword -*`event.dataset`*:: +example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 + +Raw text message of entire event. Used to demonstrate log integrity. +This field is not indexed and doc_values are disabled. It cannot be searched, but it can be retrieved from `_source`. + +-- + +*`event.outcome`*:: + -- type: keyword -example: stats +example: success -Name of the dataset. -The concept of a `dataset` (fileset / metricset) is used in Beats as a subset of modules. It contains the information which is currently stored in metricset.name and metricset.module or fileset.name. +The outcome of the event. +If the event describes an action, this fields contains the outcome of that action. Examples outcomes are `success` and `failure`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. + +-- +*`event.risk_score`*:: ++ +-- +type: float + +Risk score or priority of the event (e.g. security solutions). Use your system's original value here. + +-- + +*`event.risk_score_norm`*:: ++ +-- +type: float + +Normalized risk score or priority of the event, on a scale of 0 to 100. +This is mainly useful if you use more than one system that assigns risk scores, and you want to see a normalized value across all systems. -- @@ -1178,122 +1302,132 @@ type: long example: 7 -Severity describes the severity of the event. What the different severity values mean can very different between use cases. It's up to the implementer to make sure severities are consistent across events. - +Severity describes the original severity of the event. What the different severity values mean can very different between use cases. It's up to the implementer to make sure severities are consistent across events. -- -*`event.original`*:: +*`event.start`*:: + -- -type: keyword +type: date -example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 +event.start contains the date when the event started or when the activity was first observed. -Raw text message of entire event. Used to demonstrate log integrity. -This field is not indexed and doc_values are disabled. It cannot be searched, but it can be retrieved from `_source`. +-- +*`event.timezone`*:: ++ +-- +type: keyword -Field is not indexed. +This field should be populated when the event's timestamp does not include timezone information already (e.g. default Syslog timestamps). It's optional otherwise. +Acceptable timezone formats are: a canonical ID (e.g. "Europe/Amsterdam"), abbreviated (e.g. "EST") or an HH:mm differential (e.g. "-05:00"). -- -*`event.hash`*:: +*`event.type`*:: + -- type: keyword -example: 123456789012345678901234567890ABCD +Reserved for future usage. +Please avoid using this field for user data. -Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate log integrity. +-- +[float] +== file fields --- +A file is defined as a set of information that has been created on, or has existed on a filesystem. +File objects can be associated with host events, network events, and/or file events (e.g., those produced by File Integrity Monitoring [FIM] products or services). File fields provide details about the affected file associated with the event or metric. -*`event.duration`*:: + +*`file.ctime`*:: + -- -type: long +type: date -format: duration +Last time file metadata changed. -Duration of the event in nanoseconds. -If event.start and event.end are known this value should be the difference between the end and start time. +-- + +*`file.device`*:: ++ +-- +type: keyword +Device that is the source of the file. -- -*`event.timezone`*:: +*`file.extension`*:: + -- type: keyword -This field should be populated when the event's timestamp does not include timezone information already (e.g. default Syslog timestamps). It's optional otherwise. -Acceptable timezone formats are: a canonical ID (e.g. "Europe/Amsterdam"), abbreviated (e.g. "EST") or an HH:mm differential (e.g. "-05:00"). +example: png +File extension. +This should allow easy filtering by file extensions. -- -*`event.created`*:: +*`file.gid`*:: + -- -type: date - -event.created contains the date when the event was created. -This timestamp is distinct from @timestamp in that @timestamp contains the processed timestamp. For logs these two timestamps can be different as the timestamp in the log line and when the event is read for example by Filebeat are not identical. `@timestamp` must contain the timestamp extracted from the log line, event.created when the log line is read. The same could apply to package capturing where @timestamp contains the timestamp extracted from the network package and event.created when the event was created. -In case the two timestamps are identical, @timestamp should be used. +type: keyword +Primary group ID (GID) of the file. -- -*`event.start`*:: +*`file.group`*:: + -- -type: date +type: keyword -event.start contains the date when the event started or when the activity was first observed. +Primary group name of the file. +-- +*`file.inode`*:: ++ -- +type: keyword -*`event.end`*:: +Inode representing the file in the filesystem. + +-- + +*`file.mode`*:: + -- -type: date +type: keyword -event.end contains the date when the event ended or when the activity was last observed. +example: 416 +Mode of the file in octal representation. -- -*`event.risk_score`*:: +*`file.mtime`*:: + -- -type: float - -Risk score or priority of the event (e.g. security solutions). Use your system's original value here. +type: date +Last time file content was modified. -- -*`event.risk_score_norm`*:: +*`file.owner`*:: + -- -type: float - -Normalized risk score or priority of the event, on a scale of 0 to 100. -This is mainly useful if you use more than one system that assigns risk scores, and you want to see a normalized value across all systems. +type: keyword +File owner's username. -- -[float] -== file fields - -A file is defined as a set of information that has been created on, or has existed on a filesystem. File objects can be associated with host events, network events, and/or file events (e.g., those produced by File Integrity Monitoring [FIM] products or services). File fields provide details about the affected file associated with the event or metric. - - - *`file.path`*:: + -- @@ -1303,25 +1437,21 @@ Path to the file. -- -*`file.target_path`*:: +*`file.size`*:: + -- -type: keyword +type: long -Target path for symlinks. +File size in bytes (field is only added when `type` is `file`). -- -*`file.extension`*:: +*`file.target_path`*:: + -- type: keyword -example: png - -File extension. -This should allow easy filtering by file extensions. - +Target path for symlinks. -- @@ -1334,98 +1464,109 @@ File type (file, dir, or symlink). -- -*`file.device`*:: +*`file.uid`*:: + -- type: keyword -Device that is the source of the file. +The user ID (UID) or security identifier (SID) of the file owner. -- -*`file.inode`*:: -+ --- -type: keyword +[float] +== geo fields -Inode representing the file in the filesystem. +Geo fields can carry data about a specific location related to an event. +This geolocation information can be derived from techniques such as Geo IP, or be user-supplied. --- -*`file.uid`*:: +*`geo.city_name`*:: + -- type: keyword -The user ID (UID) or security identifier (SID) of the file owner. +example: Montreal +City name. -- -*`file.owner`*:: +*`geo.continent_name`*:: + -- type: keyword -File owner's username. +example: North America + +Name of the continent. -- -*`file.gid`*:: +*`geo.country_iso_code`*:: + -- type: keyword -Primary group ID (GID) of the file. +example: CA + +Country ISO code. -- -*`file.group`*:: +*`geo.country_name`*:: + -- type: keyword -Primary group name of the file. +example: Canada + +Country name. -- -*`file.mode`*:: +*`geo.location`*:: + -- -type: keyword +type: geo_point -example: 416 +example: { "lon": -73.614830, "lat": 45.505918 } -Mode of the file in octal representation. +Longitude and latitude. -- -*`file.size`*:: +*`geo.name`*:: + -- -type: long +type: keyword -format: bytes +example: boston-dc -File size in bytes (field is only added when `type` is `file`). +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`file.mtime`*:: +*`geo.region_iso_code`*:: + -- -type: date +type: keyword -Last time file content was modified. +example: CA-QC + +Region ISO code. -- -*`file.ctime`*:: +*`geo.region_name`*:: + -- -type: date +type: keyword -Last time file metadata changed. +example: Quebec + +Region name. -- @@ -1435,7 +1576,6 @@ Last time file metadata changed. The group fields are meant to represent groups that are relevant to the event. - *`group.id`*:: + -- @@ -1443,7 +1583,6 @@ type: keyword Unique identifier for the group on the system/platform. - -- *`group.name`*:: @@ -1453,133 +1592,162 @@ type: keyword Name of the group. - -- [float] == host fields -A host is defined as a general computing instance. ECS host.* fields should be populated with details about the host on which the event happened, or on which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. +A host is defined as a general computing instance. +ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. - -*`host.hostname`*:: +*`host.architecture`*:: + -- type: keyword -Hostname of the host. -It normally contains what the `hostname` command returns on the host machine. +example: x86_64 +Operating system architecture. -- -*`host.name`*:: +*`host.geo.city_name`*:: + -- type: keyword -Name of the host. -It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. +example: Montreal +City name. -- -*`host.id`*:: +*`host.geo.continent_name`*:: + -- type: keyword -Unique host id. -As hostname is not always unique, use values that are meaningful in your environment. -Example: The current usage of `beat.name`. +example: North America +Name of the continent. -- -*`host.ip`*:: +*`host.geo.country_iso_code`*:: + -- -type: ip +type: keyword -Host ip address. +example: CA +Country ISO code. -- -*`host.mac`*:: +*`host.geo.country_name`*:: + -- type: keyword -Host mac address. +example: Canada +Country name. -- -*`host.type`*:: +*`host.geo.location`*:: + -- -type: keyword +type: geo_point -Type of host. -For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. +example: { "lon": -73.614830, "lat": 45.505918 } +Longitude and latitude. -- -*`host.architecture`*:: +*`host.geo.name`*:: + -- type: keyword -example: x86_64 - -Operating system architecture. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -[float] -== os fields +*`host.geo.region_iso_code`*:: ++ +-- +type: keyword -The OS fields contain information about the operating system. +example: CA-QC +Region ISO code. +-- -*`host.os.platform`*:: +*`host.geo.region_name`*:: + -- type: keyword -example: darwin +example: Quebec -Operating system platform (such centos, ubuntu, windows). +Region name. + +-- + +*`host.hostname`*:: ++ +-- +type: keyword +Hostname of the host. +It normally contains what the `hostname` command returns on the host machine. -- -*`host.os.name`*:: +*`host.id`*:: + -- type: keyword -example: Mac OS X +Unique host id. +As hostname is not always unique, use values that are meaningful in your environment. +Example: The current usage of `beat.name`. -Operating system name, without the version. +-- + +*`host.ip`*:: ++ +-- +type: ip +Host ip address. -- -*`host.os.full`*:: +*`host.mac`*:: + -- type: keyword -example: Mac OS Mojave +Host mac address. -Operating system name, including the version or code name. +-- + +*`host.name`*:: ++ +-- +type: keyword +Name of the host. +It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. -- @@ -1592,18 +1760,16 @@ example: debian OS family (such as redhat, debian, freebsd, windows). - -- -*`host.os.version`*:: +*`host.os.full`*:: + -- type: keyword -example: 10.14.1 - -Operating system version as a raw string. +example: Mac OS Mojave +Operating system name, including the version or code name. -- @@ -1616,131 +1782,133 @@ example: 4.4.0-112-generic Operating system kernel version as a raw string. - -- -[float] -== geo fields +*`host.os.name`*:: ++ +-- +type: keyword -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. +example: Mac OS X +Operating system name, without the version. +-- -*`host.geo.location`*:: +*`host.os.platform`*:: + -- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } +type: keyword -Longitude and latitude. +example: darwin +Operating system platform (such centos, ubuntu, windows). -- -*`host.geo.continent_name`*:: +*`host.os.version`*:: + -- type: keyword -example: North America - -Name of the continent. +example: 10.14.1 +Operating system version as a raw string. -- -*`host.geo.country_name`*:: +*`host.type`*:: + -- type: keyword -example: Canada +Type of host. +For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. -Country name. +-- + +*`host.user.email`*:: ++ +-- +type: keyword +User email address. -- -*`host.geo.region_name`*:: +*`host.user.full_name`*:: + -- type: keyword -example: Quebec - -Region name. +example: Albert Einstein +User's full name, if available. -- -*`host.geo.city_name`*:: +*`host.user.group.id`*:: + -- type: keyword -example: Montreal +Unique identifier for the group on the system/platform. -City name. +-- + +*`host.user.group.name`*:: ++ +-- +type: keyword +Name of the group. -- -*`host.geo.country_iso_code`*:: +*`host.user.hash`*:: + -- type: keyword -example: CA - -Country ISO code. - +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -- -*`host.geo.region_iso_code`*:: +*`host.user.id`*:: + -- type: keyword -example: CA-QC - -Region ISO code. - +One or multiple unique identifiers of the user. -- -*`host.geo.name`*:: +*`host.user.name`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +example: albert +Short name or login of the user. -- [float] == http fields -Fields related to HTTP activity. +Fields related to HTTP activity. Use the `url` field set to store the url of the request. - -*`http.request.method`*:: +*`http.request.body.bytes`*:: + -- -type: keyword - -example: get, post, put +type: long -Http request method. -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: 887 +Size in bytes of the request body. -- @@ -1751,84 +1919,63 @@ type: keyword example: Hello world -The full http request body. - - --- - -*`http.request.referrer`*:: -+ --- -type: keyword - -example: https://blog.example.com/ - -Referrer for this HTTP request. - +The full HTTP request body. -- -*`http.response.status_code`*:: +*`http.request.bytes`*:: + -- type: long -example: 404 - -Http response status code. +example: 1437 +Total size in bytes of the request (body and headers). -- -*`http.response.body.content`*:: +*`http.request.method`*:: + -- type: keyword -example: Hello world - -The full http response body. +example: get, post, put +HTTP request method. +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`http.version`*:: +*`http.request.referrer`*:: + -- type: keyword -example: 1.1 - -Http version. +example: https://blog.example.com/ +Referrer for this HTTP request. -- -*`http.request.bytes`*:: +*`http.response.body.bytes`*:: + -- type: long -example: 1437 - -format: bytes - -Total size in bytes of the request (body and headers). +example: 887 +Size in bytes of the response body. -- -*`http.request.body.bytes`*:: +*`http.response.body.content`*:: + -- -type: long - -example: 887 - -format: bytes +type: keyword -Size in bytes of the request body. +example: Hello world +The full HTTP response body. -- @@ -1839,24 +1986,29 @@ type: long example: 1437 -format: bytes - Total size in bytes of the response (body and headers). - -- -*`http.response.body.bytes`*:: +*`http.response.status_code`*:: + -- type: long -example: 887 +example: 404 -format: bytes +HTTP response status code. -Size in bytes of the response body. +-- + +*`http.version`*:: ++ +-- +type: keyword + +example: 1.1 +HTTP version. -- @@ -1866,17 +2018,15 @@ Size in bytes of the response body. Fields which are specific to log events. - *`log.level`*:: + -- type: keyword -example: ERR - -Log level of the log event. -Some examples are `WARN`, `ERR`, `INFO`. +example: err +Original log level of the log event. +Some examples are `warn`, `error`, `i`. -- @@ -1887,96 +2037,52 @@ type: keyword example: Sep 19 08:26:10 localhost My log - This is the original log message and contains the full log message before splitting it up in multiple parts. In contrast to the `message` field which can contain an extracted part of the log message, this field contains the original, full log message. It can have already some modifications applied like encoding or new lines removed to clean up the log message. This field is not indexed and doc_values are disabled so it can't be queried but the value can be retrieved from `_source`. - -Field is not indexed. - -- [float] == network fields -The network is defined as the communication path over which a host or network event happens. The network.* fields should be populated with details about the network activity associated with an event. - - - -*`network.name`*:: -+ --- -type: keyword - -example: Guest Wifi - -Name given by operators to sections of their network. - - --- - -*`network.type`*:: -+ --- -type: keyword - -example: ipv4 - -In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. - - --- - -*`network.iana_number`*:: -+ --- -type: keyword - -example: 6 - -IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). Standardized list of protocols. This aligns well with NetFlow and sFlow related logs which use the IANA Protocol Number. - +The network is defined as the communication path over which a host or network event happens. +The network.* fields should be populated with details about the network activity associated with an event. --- -*`network.transport`*:: +*`network.application`*:: + -- type: keyword -example: tcp - -Same as network.iana_number, but instead using the Keyword name of the transport layer (udp, tcp, ipv6-icmp, etc.) -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: aim +A name given to an application level protocol. This can be arbitrarily assigned for things like microservices, but also apply to things like skype, icq, facebook, twitter. This would be used in situations where the vendor or service can be decoded such as from the source/dest IP owners, ports, or wire format. +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`network.application`*:: +*`network.bytes`*:: + -- -type: keyword - -example: aim +type: long -A name given to an application. This can be arbitrarily assigned for things like microservices, but also apply to things like skype, icq, facebook, twitter. This would be used in situations where the vendor or service can be decoded such as from the source/dest IP owners, ports, or wire format. -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: 368 +Total bytes transferred in both directions. +If `source.bytes` and `destination.bytes` are known, `network.bytes` is their sum. -- -*`network.protocol`*:: +*`network.community_id`*:: + -- type: keyword -example: http - -L7 Network protocol name. ex. http, lumberjack, transport protocol. -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: 1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0= +A hash of source and destination IPs and ports, as well as the protocol used in a communication. This is a tool-agnostic standard to identify flows. +Learn more at https://github.com/corelight/community-id-spec. -- @@ -1998,7 +2104,6 @@ Recommended values are: When mapping events from a host-based monitoring context, populate this field from the host's point of view. When mapping events from a network or perimeter-based monitoring context, populate this field from the point of view of your network perimeter. - -- *`network.forwarded_ip`*:: @@ -2010,34 +2115,27 @@ example: 192.1.1.2 Host IP address when the source IP address is the proxy. - -- -*`network.community_id`*:: +*`network.iana_number`*:: + -- type: keyword -example: 1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0= - -A hash of source and destination IPs and ports, as well as the protocol used in a communication. This is a tool-agnostic standard to identify flows. -Learn more at https://github.com/corelight/community-id-spec. +example: 6 +IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). Standardized list of protocols. This aligns well with NetFlow and sFlow related logs which use the IANA Protocol Number. -- -*`network.bytes`*:: +*`network.name`*:: + -- -type: long - -example: 368 - -format: bytes +type: keyword -Total bytes transferred in both directions. -If `source.bytes` and `destination.bytes` are known, `network.bytes` is their sum. +example: Guest Wifi +Name given by operators to sections of their network. -- @@ -2051,129 +2149,165 @@ example: 24 Total packets transferred in both directions. If `source.packets` and `destination.packets` are known, `network.packets` is their sum. - -- -[float] -== observer fields +*`network.protocol`*:: ++ +-- +type: keyword -An observer is defined as a special network, security, or application device used to detect, observe, or create network, security, or application-related events and metrics. This could be a custom hardware appliance or a server that has been configured to run special network, security, or application software. Examples include firewalls, intrusion detection/prevention systems, network monitoring sensors, web application firewalls, data loss prevention systems, and APM servers. The observer.* fields shall be populated with details of the system, if any, that detects, observes and/or creates a network, security, or application event or metric. Message queues and ETL components used in processing events or metrics are not considered observers in ECS. +example: http +L7 Network protocol name. ex. http, lumberjack, transport protocol. +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". +-- -*`observer.mac`*:: +*`network.transport`*:: + -- type: keyword -MAC address of the observer +example: tcp +Same as network.iana_number, but instead using the Keyword name of the transport layer (udp, tcp, ipv6-icmp, etc.) +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`observer.ip`*:: +*`network.type`*:: + -- -type: ip +type: keyword -IP address of the observer. +example: ipv4 +In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`observer.hostname`*:: +[float] +== observer fields + +An observer is defined as a special network, security, or application device used to detect, observe, or create network, security, or application-related events and metrics. +This could be a custom hardware appliance or a server that has been configured to run special network, security, or application software. Examples include firewalls, intrusion detection/prevention systems, network monitoring sensors, web application firewalls, data loss prevention systems, and APM servers. The observer.* fields shall be populated with details of the system, if any, that detects, observes and/or creates a network, security, or application event or metric. Message queues and ETL components used in processing events or metrics are not considered observers in ECS. + + +*`observer.geo.city_name`*:: + -- type: keyword -Hostname of the observer. +example: Montreal +City name. -- -*`observer.vendor`*:: +*`observer.geo.continent_name`*:: + -- type: keyword -observer vendor information. +example: North America +Name of the continent. -- -*`observer.version`*:: +*`observer.geo.country_iso_code`*:: + -- type: keyword -Observer version. +example: CA +Country ISO code. -- -*`observer.serial_number`*:: +*`observer.geo.country_name`*:: + -- type: keyword -Observer serial number. +example: Canada + +Country name. +-- +*`observer.geo.location`*:: ++ -- +type: geo_point -*`observer.type`*:: +example: { "lon": -73.614830, "lat": 45.505918 } + +Longitude and latitude. + +-- + +*`observer.geo.name`*:: + -- type: keyword -example: firewall - -The type of the observer the data is coming from. -There is no predefined list of observer types. Some examples are `forwarder`, `firewall`, `ids`, `ips`, `proxy`, `poller`, `sensor`, `APM server`. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -[float] -== os fields +*`observer.geo.region_iso_code`*:: ++ +-- +type: keyword -The OS fields contain information about the operating system. +example: CA-QC +Region ISO code. +-- -*`observer.os.platform`*:: +*`observer.geo.region_name`*:: + -- type: keyword -example: darwin - -Operating system platform (such centos, ubuntu, windows). +example: Quebec +Region name. -- -*`observer.os.name`*:: +*`observer.hostname`*:: + -- type: keyword -example: Mac OS X +Hostname of the observer. -Operating system name, without the version. +-- + +*`observer.ip`*:: ++ +-- +type: ip +IP address of the observer. -- -*`observer.os.full`*:: +*`observer.mac`*:: + -- type: keyword -example: Mac OS Mojave - -Operating system name, including the version or code name. - +MAC address of the observer -- @@ -2186,18 +2320,16 @@ example: debian OS family (such as redhat, debian, freebsd, windows). - -- -*`observer.os.version`*:: +*`observer.os.full`*:: + -- type: keyword -example: 10.14.1 - -Operating system version as a raw string. +example: Mac OS Mojave +Operating system name, including the version or code name. -- @@ -2210,138 +2342,102 @@ example: 4.4.0-112-generic Operating system kernel version as a raw string. - --- - -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - -*`observer.geo.location`*:: -+ --- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } - -Longitude and latitude. - - -- -*`observer.geo.continent_name`*:: +*`observer.os.name`*:: + -- type: keyword -example: North America - -Name of the continent. +example: Mac OS X +Operating system name, without the version. -- -*`observer.geo.country_name`*:: +*`observer.os.platform`*:: + -- type: keyword -example: Canada - -Country name. +example: darwin +Operating system platform (such centos, ubuntu, windows). -- -*`observer.geo.region_name`*:: +*`observer.os.version`*:: + -- type: keyword -example: Quebec - -Region name. +example: 10.14.1 +Operating system version as a raw string. -- -*`observer.geo.city_name`*:: +*`observer.serial_number`*:: + -- type: keyword -example: Montreal - -City name. - +Observer serial number. -- -*`observer.geo.country_iso_code`*:: +*`observer.type`*:: + -- type: keyword -example: CA - -Country ISO code. +example: firewall +The type of the observer the data is coming from. +There is no predefined list of observer types. Some examples are `forwarder`, `firewall`, `ids`, `ips`, `proxy`, `poller`, `sensor`, `APM server`. -- -*`observer.geo.region_iso_code`*:: +*`observer.vendor`*:: + -- type: keyword -example: CA-QC - -Region ISO code. - +observer vendor information. -- -*`observer.geo.name`*:: +*`observer.version`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. - +Observer version. -- [float] == organization fields -The organization fields enrich data with information about the company or entity the data is associated with. These fields help you arrange or filter data stored in an index by one or multiple organizations. +The organization fields enrich data with information about the company or entity the data is associated with. +These fields help you arrange or filter data stored in an index by one or multiple organizations. - -*`organization.name`*:: +*`organization.id`*:: + -- type: keyword -Organization name. - +Unique identifier for the organization. -- -*`organization.id`*:: +*`organization.name`*:: + -- type: keyword -Unique identifier for the organization. - +Organization name. -- @@ -2351,93 +2447,99 @@ Unique identifier for the organization. The OS fields contain information about the operating system. - -*`os.platform`*:: +*`os.family`*:: + -- type: keyword -example: darwin - -Operating system platform (such centos, ubuntu, windows). +example: debian +OS family (such as redhat, debian, freebsd, windows). -- -*`os.name`*:: +*`os.full`*:: + -- type: keyword -example: Mac OS X - -Operating system name, without the version. +example: Mac OS Mojave +Operating system name, including the version or code name. -- -*`os.full`*:: +*`os.kernel`*:: + -- type: keyword -example: Mac OS Mojave - -Operating system name, including the version or code name. +example: 4.4.0-112-generic +Operating system kernel version as a raw string. -- -*`os.family`*:: +*`os.name`*:: + -- type: keyword -example: debian - -OS family (such as redhat, debian, freebsd, windows). +example: Mac OS X +Operating system name, without the version. -- -*`os.version`*:: +*`os.platform`*:: + -- type: keyword -example: 10.14.1 - -Operating system version as a raw string. +example: darwin +Operating system platform (such centos, ubuntu, windows). -- -*`os.kernel`*:: +*`os.version`*:: + -- type: keyword -example: 4.4.0-112-generic - -Operating system kernel version as a raw string. +example: 10.14.1 +Operating system version as a raw string. -- [float] == process fields -These fields contain information about a process. These fields can help you correlate metrics information with a process id/name from a log message. The `process.pid` often stays in the metric itself and is copied to the global field for correlation. +These fields contain information about a process. +These fields can help you correlate metrics information with a process id/name from a log message. The `process.pid` often stays in the metric itself and is copied to the global field for correlation. + + +*`process.args`*:: ++ +-- +type: keyword +example: ['ssh', '-l', 'user', '10.0.0.16'] +Array of process arguments. +May be filtered to protect sensitive information. -*`process.pid`*:: +-- + +*`process.executable`*:: + -- -type: long +type: keyword -Process id. +example: /usr/bin/ssh +Absolute path to the process executable. -- @@ -2451,6 +2553,14 @@ example: ssh Process name. Sometimes called program name or similar. +-- + +*`process.pid`*:: ++ +-- +type: long + +Process id. -- @@ -2461,31 +2571,27 @@ type: long Process parent id. - -- -*`process.args`*:: +*`process.start`*:: + -- -type: keyword - -example: ['ssh', '-l', 'user', '10.0.0.16'] +type: date -Process arguments. -May be filtered to protect sensitive information. +example: 2016-05-23T08:05:34.853Z +The time the process started. -- -*`process.executable`*:: +*`process.thread.id`*:: + -- -type: keyword - -example: /usr/bin/ssh +type: long -Absolute path to the process executable. +example: 4242 +Thread ID. -- @@ -2497,133 +2603,180 @@ type: keyword Process title. The proctitle, some times the same as process name. Can also be different: for example a browser setting its title to the web page currently opened. - -- -*`process.thread.id`*:: +*`process.working_directory`*:: + -- -type: long +type: keyword -example: 4242 +example: /home/alice -Thread ID. +The working directory of the process. + +-- + +[float] +== related fields +This field set is meant to facilitate pivoting around a piece of data. +Some pieces of information can be seen in many places in an ECS event. To facilitate searching for them, store an array of all seen values to their corresponding field in `related.`. +A concrete example is IP addresses, which can be under host, observer, source, destination, client, server, and network.forwarded_ip. If you append all IPs to `related.ip`, you can then search for a given IP trivially, no matter where it appeared, by querying `related.ip:a.b.c.d`. + +*`related.ip`*:: ++ -- +type: ip -*`process.start`*:: +All of the IPs seen on your event. + +-- + +[float] +== server fields + +A Server is defined as the responder in a network connection for events regarding sessions, connections, or bidirectional flow records. +For TCP events, the server is the receiver of the initial SYN packet(s) of the TCP connection. For other protocols, the server is generally the responder in the network transaction. Some systems actually use the term "responder" to refer the server in TCP connections. The server fields describe details about the system acting as the server in the network event. Server fields are usually populated in conjunction with client fields. Server fields are generally not populated for packet-level events. +Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. + + +*`server.address`*:: + -- -type: date +type: keyword -example: 2016-05-23T08:05:34.853Z +Some event server addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. -The time the process started. +-- + +*`server.bytes`*:: ++ +-- +type: long +example: 184 + +Bytes sent from the server to the client. -- -*`process.working_directory`*:: +*`server.domain`*:: + -- type: keyword -example: /home/alice - -The working directory of the process. +Server domain. +-- +*`server.geo.city_name`*:: ++ -- +type: keyword -[float] -== related fields - -This field set is meant to facilitate pivoting around a piece of data. Some pieces of information can be seen in many places in ECS. To facilitate searching for them, append values to their corresponding field in `related.`. A concrete example is IP addresses, which can be under host, observer, source, destination, client, server, and network.forwarded_ip. If you append all IPs to `related.ip`, you can then search for a given IP trivially, no matter where it appeared, by querying `related.ip:a.b.c.d`. +example: Montreal +City name. +-- -*`related.ip`*:: +*`server.geo.continent_name`*:: + -- -type: ip +type: keyword -All of the IPs seen on your event. +example: North America +Name of the continent. -- -[float] -== server fields +*`server.geo.country_iso_code`*:: ++ +-- +type: keyword -A Server is defined as the responder in a network connection for events regarding sessions, connections, or bidirectional flow records. For TCP events, the server is the receiver of the initial SYN packet(s) of the TCP connection. For other protocols, the server is generally the responder in the network transaction. Some systems actually use the term "responder" to refer the server in TCP connections. The server fields describe details about the system acting as the server in the network event. Server fields are usually populated in conjunction with client fields. Server fields are generally not populated for packet-level events. -Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. +example: CA +Country ISO code. +-- -*`server.address`*:: +*`server.geo.country_name`*:: + -- type: keyword -Some event server addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. -Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. +example: Canada +Country name. -- -*`server.ip`*:: +*`server.geo.location`*:: + -- -type: ip +type: geo_point -IP address of the server. -Can be one or multiple IPv4 or IPv6 addresses. +example: { "lon": -73.614830, "lat": 45.505918 } +Longitude and latitude. -- -*`server.port`*:: +*`server.geo.name`*:: + -- -type: long +type: keyword -Port of the server. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`server.mac`*:: +*`server.geo.region_iso_code`*:: + -- type: keyword -MAC address of the server. +example: CA-QC +Region ISO code. -- -*`server.domain`*:: +*`server.geo.region_name`*:: + -- type: keyword -Server domain. +example: Quebec +Region name. -- -*`server.bytes`*:: +*`server.ip`*:: + -- -type: long +type: ip -example: 184 +IP address of the server. +Can be one or multiple IPv4 or IPv6 addresses. -format: bytes +-- -Bytes sent from the server to the client. +*`server.mac`*:: ++ +-- +type: keyword +MAC address of the server. -- @@ -2636,120 +2789,103 @@ example: 12 Packets sent from the server to the client. - -- -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - -*`server.geo.location`*:: +*`server.port`*:: + -- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } - -Longitude and latitude. +type: long +Port of the server. -- -*`server.geo.continent_name`*:: +*`server.user.email`*:: + -- type: keyword -example: North America - -Name of the continent. - +User email address. -- -*`server.geo.country_name`*:: +*`server.user.full_name`*:: + -- type: keyword -example: Canada - -Country name. +example: Albert Einstein +User's full name, if available. -- -*`server.geo.region_name`*:: +*`server.user.group.id`*:: + -- type: keyword -example: Quebec - -Region name. - +Unique identifier for the group on the system/platform. -- -*`server.geo.city_name`*:: +*`server.user.group.name`*:: + -- type: keyword -example: Montreal - -City name. - +Name of the group. -- -*`server.geo.country_iso_code`*:: +*`server.user.hash`*:: + -- type: keyword -example: CA - -Country ISO code. - +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -- -*`server.geo.region_iso_code`*:: +*`server.user.id`*:: + -- type: keyword -example: CA-QC - -Region ISO code. - +One or multiple unique identifiers of the user. -- -*`server.geo.name`*:: +*`server.user.name`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +example: albert +Short name or login of the user. -- [float] == service fields -The service fields describe the service for or from which the data was collected. These fields help you find and correlate logs for a specific service and version. +The service fields describe the service for or from which the data was collected. +These fields help you find and correlate logs for a specific service and version. + + +*`service.ephemeral_id`*:: ++ +-- +type: keyword + +example: 8a4f500f +Ephemeral identifier of this service (if one exists). +This id normally changes across restarts, but `service.id` does not. +-- *`service.id`*:: + @@ -2762,7 +2898,6 @@ Unique identifier of the running service. This id should uniquely identify this service. This makes it possible to correlate logs and metrics for one specific service. Example: If you are experiencing issues with one redis instance, you can filter on that id to see metrics and logs for that single instance. - -- *`service.name`*:: @@ -2777,6 +2912,14 @@ The name of the service is normally user given. This allows if two instances of Also it allows for distributed services that run on multiple hosts to correlate the related instances based on the name. In the case of Elasticsearch the service.name could contain the cluster name. For Beats the service.name is by default a copy of the `service.type` field if no name is specified. +-- + +*`service.state`*:: ++ +-- +type: keyword + +Current state of the service. -- @@ -2791,115 +2934,163 @@ The type of the service data is collected from. The type can be used to group and correlate logs and metrics from one service type. Example: If logs or metrics are collected from Elasticsearch, `service.type` would be `elasticsearch`. - -- -*`service.state`*:: +*`service.version`*:: + -- type: keyword -Current state of the service. +example: 3.2.4 +Version of the service the data was collected from. +This allows to look at a data set only for a specific version of a service. -- -*`service.version`*:: +[float] +== source fields + +Source fields describe details about the source of a packet/event. +Source fields are usually populated in conjunction with destination fields. + + +*`source.address`*:: + -- type: keyword -example: 3.2.4 +Some event source addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. -Version of the service the data was collected from. -This allows to look at a data set only for a specific version of a service. +-- + +*`source.bytes`*:: ++ +-- +type: long + +example: 184 +Bytes sent from the source to the destination. -- -*`service.ephemeral_id`*:: +*`source.domain`*:: + -- type: keyword -example: 8a4f500f +Source domain. -Ephemeral identifier of this service (if one exists). -This id normally changes across restarts, but `service.id` does not. +-- + +*`source.geo.city_name`*:: ++ +-- +type: keyword +example: Montreal + +City name. -- -[float] -== source fields +*`source.geo.continent_name`*:: ++ +-- +type: keyword -Source fields describe details about the source of a packet/event. Source fields are usually populated in conjunction with destination fields. +example: North America +Name of the continent. +-- -*`source.address`*:: +*`source.geo.country_iso_code`*:: + -- type: keyword -Some event source addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. -Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. +example: CA +Country ISO code. -- -*`source.ip`*:: +*`source.geo.country_name`*:: + -- -type: ip +type: keyword -IP address of the source. -Can be one or multiple IPv4 or IPv6 addresses. +example: Canada +Country name. -- -*`source.port`*:: +*`source.geo.location`*:: + -- -type: long +type: geo_point -Port of the source. +example: { "lon": -73.614830, "lat": 45.505918 } +Longitude and latitude. -- -*`source.mac`*:: +*`source.geo.name`*:: + -- type: keyword -MAC address of the source. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`source.domain`*:: +*`source.geo.region_iso_code`*:: + -- type: keyword -Source domain. +example: CA-QC +Region ISO code. -- -*`source.bytes`*:: +*`source.geo.region_name`*:: + -- -type: long +type: keyword -example: 184 +example: Quebec + +Region name. + +-- + +*`source.ip`*:: ++ +-- +type: ip -format: bytes +IP address of the source. +Can be one or multiple IPv4 or IPv6 addresses. + +-- -Bytes sent from the source to the destination. +*`source.mac`*:: ++ +-- +type: keyword +MAC address of the source. -- @@ -2912,133 +3103,110 @@ example: 12 Packets sent from the source to the destination. - -- -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - -*`source.geo.location`*:: +*`source.port`*:: + -- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } - -Longitude and latitude. +type: long +Port of the source. -- -*`source.geo.continent_name`*:: +*`source.user.email`*:: + -- type: keyword -example: North America - -Name of the continent. - +User email address. -- -*`source.geo.country_name`*:: +*`source.user.full_name`*:: + -- type: keyword -example: Canada - -Country name. +example: Albert Einstein +User's full name, if available. -- -*`source.geo.region_name`*:: +*`source.user.group.id`*:: + -- type: keyword -example: Quebec - -Region name. - +Unique identifier for the group on the system/platform. -- -*`source.geo.city_name`*:: +*`source.user.group.name`*:: + -- type: keyword -example: Montreal - -City name. - +Name of the group. -- -*`source.geo.country_iso_code`*:: +*`source.user.hash`*:: + -- type: keyword -example: CA - -Country ISO code. - +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -- -*`source.geo.region_iso_code`*:: +*`source.user.id`*:: + -- type: keyword -example: CA-QC - -Region ISO code. - +One or multiple unique identifiers of the user. -- -*`source.geo.name`*:: +*`source.user.name`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +example: albert +Short name or login of the user. -- [float] == url fields -URL fields provide a complete URL, with scheme, host, and path. - +URL fields provide support for complete or partial URLs, and supports the breaking down into scheme, domain, path, and so on. -*`url.original`*:: +*`url.domain`*:: + -- type: keyword -example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch +example: www.elastic.co +Domain of the url, such as "www.elastic.co". +In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. -Unmodified original url as seen in the event source. -Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. -This field is meant to represent the URL as it was observed, complete or not. +-- + +*`url.fragment`*:: ++ +-- +type: keyword +Portion of the url after the `#`, such as "top". +The `#` is not part of the fragment. -- @@ -3051,54 +3219,47 @@ example: https://www.elastic.co:443/search?q=elasticsearch#top If full URLs are important to your use case, they should be stored in `url.full`, whether this field is reconstructed or present in the event source. - -- -*`url.scheme`*:: +*`url.original`*:: + -- type: keyword -example: https - -Scheme of the request, such as "https". -Note: The `:` is not part of the scheme. +example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch +Unmodified original url as seen in the event source. +Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. +This field is meant to represent the URL as it was observed, complete or not. -- -*`url.domain`*:: +*`url.password`*:: + -- type: keyword -example: www.elastic.co - -Domain of the request, such as "www.elastic.co". -In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. - +Password of the request. -- -*`url.port`*:: +*`url.path`*:: + -- -type: integer - -example: 443 - -Port of the request, such as 443. +type: keyword +Path of the request, such as "/search". -- -*`url.path`*:: +*`url.port`*:: + -- -type: keyword +type: long -Path of the request, such as "/search". +example: 443 +Port of the request, such as 443. -- @@ -3110,17 +3271,17 @@ type: keyword The query field describes the query string of the request, such as "q=elasticsearch". The `?` is excluded from the query string. If a URL contains no `?`, there is no query field. If there is a `?` but no query, the query field exists with an empty string. The `exists` query can be used to differentiate between the two cases. - -- -*`url.fragment`*:: +*`url.scheme`*:: + -- type: keyword -Portion of the url after the `#`, such as "top". -The `#` is not part of the fragment. +example: https +Scheme of the request, such as "https". +Note: The `:` is not part of the scheme. -- @@ -3131,67 +3292,50 @@ type: keyword Username of the request. - --- - -*`url.password`*:: -+ --- -type: keyword - -Password of the request. - - -- [float] == user fields -The user fields describe information about the user that is relevant to the event. Fields can have one entry or multiple entries. If a user has more than one id, provide an array that includes all of them. - +The user fields describe information about the user that is relevant to the event. +Fields can have one entry or multiple entries. If a user has more than one id, provide an array that includes all of them. -*`user.id`*:: +*`user.email`*:: + -- type: keyword -One or multiple unique identifiers of the user. - +User email address. -- -*`user.name`*:: +*`user.full_name`*:: + -- type: keyword -example: albert - -Short name or login of the user. +example: Albert Einstein +User's full name, if available. -- -*`user.full_name`*:: +*`user.group.id`*:: + -- type: keyword -example: Albert Einstein - -User's full name, if available. - +Unique identifier for the group on the system/platform. -- -*`user.email`*:: +*`user.group.name`*:: + -- type: keyword -User email address. - +Name of the group. -- @@ -3203,52 +3347,43 @@ type: keyword Unique user hash to correlate information for a user in anonymized form. Useful if `user.id` or `user.name` contain confidential information and cannot be used. - -- -[float] -== group fields - -The group fields are meant to represent groups that are relevant to the event. - - - -*`user.group.id`*:: +*`user.id`*:: + -- type: keyword -Unique identifier for the group on the system/platform. - +One or multiple unique identifiers of the user. -- -*`user.group.name`*:: +*`user.name`*:: + -- type: keyword -Name of the group. +example: albert +Short name or login of the user. -- [float] == user_agent fields -The user_agent fields normally come from a browser request. They often show up in web service logs coming from the parsed user agent string. +The user_agent fields normally come from a browser request. +They often show up in web service logs coming from the parsed user agent string. - -*`user_agent.original`*:: +*`user_agent.device.name`*:: + -- type: keyword -example: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1 - -Unparsed version of the user_agent. +example: iPhone +Name of the device. -- @@ -3261,85 +3396,71 @@ example: Safari Name of the user agent. - -- -*`user_agent.version`*:: +*`user_agent.original`*:: + -- type: keyword -example: 12.0 - -Version of the user agent. +example: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1 +Unparsed version of the user_agent. -- -*`user_agent.device.name`*:: +*`user_agent.os.family`*:: + -- type: keyword -example: iPhone - -Name of the device. +example: debian +OS family (such as redhat, debian, freebsd, windows). -- -[float] -== os fields - -The OS fields contain information about the operating system. - - - -*`user_agent.os.platform`*:: +*`user_agent.os.full`*:: + -- type: keyword -example: darwin - -Operating system platform (such centos, ubuntu, windows). +example: Mac OS Mojave +Operating system name, including the version or code name. -- -*`user_agent.os.name`*:: +*`user_agent.os.kernel`*:: + -- type: keyword -example: Mac OS X - -Operating system name, without the version. +example: 4.4.0-112-generic +Operating system kernel version as a raw string. -- -*`user_agent.os.full`*:: +*`user_agent.os.name`*:: + -- type: keyword -example: Mac OS Mojave - -Operating system name, including the version or code name. +example: Mac OS X +Operating system name, without the version. -- -*`user_agent.os.family`*:: +*`user_agent.os.platform`*:: + -- type: keyword -example: debian - -OS family (such as redhat, debian, freebsd, windows). +example: darwin +Operating system platform (such centos, ubuntu, windows). -- @@ -3352,28 +3473,16 @@ example: 10.14.1 Operating system version as a raw string. - --- - -*`user_agent.os.kernel`*:: -+ --- -type: keyword - -example: 4.4.0-112-generic - -Operating system kernel version as a raw string. - - -- -*`agent.hostname`*:: +*`user_agent.version`*:: + -- type: keyword -Hostname of the agent. +example: 12.0 +Version of the user agent. -- diff --git a/heartbeat/include/fields.go b/heartbeat/include/fields.go index 29b7c7dc254c..65c552961de9 100644 --- a/heartbeat/include/fields.go +++ b/heartbeat/include/fields.go @@ -32,5 +32,5 @@ func init() { // AssetFieldsYml returns asset data. // This is the base64 encoded gzipped contents of fields.yml. func AssetFieldsYml() string { - return "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" + return "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" } diff --git a/journalbeat/docs/fields.asciidoc b/journalbeat/docs/fields.asciidoc index 4b573f290fbb..0650f8aed259 100644 --- a/journalbeat/docs/fields.asciidoc +++ b/journalbeat/docs/fields.asciidoc @@ -29,6 +29,15 @@ Contains common beat fields available in all event types. +*`agent.hostname`*:: ++ +-- +type: keyword + +Hostname of the agent. + +-- + *`beat.timezone`*:: + -- @@ -909,8 +918,7 @@ Image labels. [[exported-fields-ecs]] == ECS fields -ECS fields. - +ECS Fields. *`@timestamp`*:: @@ -923,22 +931,10 @@ example: 2016-05-23T08:05:34.853Z required: True Date/time when the event originated. -For log events this is the date/time when the event was generated, and not when it was read. +This is the date/time extracted from the event, typically representing when the event was generated by the source. +If the event source has no original timestamp, this value is typically populated by the first time the event was received by the pipeline. Required field for all events. - --- - -*`tags`*:: -+ --- -type: keyword - -example: ["production", "env2"] - -List of keywords used to tag each event. - - -- *`labels`*:: @@ -948,11 +944,10 @@ type: object example: {'application': 'foo-bar', 'env': 'production'} -Key/value pairs. +Custom key/value pairs. Can be used to add meta information to events. Should not contain nested objects. All values are stored as keyword. Example: `docker` and `k8s` labels. - -- *`message`*:: @@ -962,28 +957,51 @@ type: text example: Hello World -For log events the message field contains the log message. -In other use cases the message field can be used to concatenate different values which are then freely searchable. If multiple messages exist, they can be combined into one message. +For log events the message field contains the log message, optimized for viewing in a log viewer. +For structured logs without an original message field, other fields can be concatenated to form a human-readable summary of the event. +If multiple messages exist, they can be combined into one message. + +-- + +*`tags`*:: ++ +-- +type: keyword + +example: ["production", "env2"] +List of keywords used to tag each event. -- [float] == agent fields -The agent fields contain the data about the software entity, if any, that collects, detects, or observes events on a host, or takes measurements on a host. Examples include Beats. Agents may also run on observers. ECS agent.* fields shall be populated with details of the agent running on the host or observer where the event happened or the measurement was taken. +The agent fields contain the data about the software entity, if any, that collects, detects, or observes events on a host, or takes measurements on a host. +Examples include Beats. Agents may also run on observers. ECS agent.* fields shall be populated with details of the agent running on the host or observer where the event happened or the measurement was taken. - -*`agent.version`*:: +*`agent.ephemeral_id`*:: + -- type: keyword -example: 6.0.0-rc2 +example: 8a4f500f -Version of the agent. +Ephemeral identifier of this agent (if one exists). +This id normally changes across restarts, but `agent.id` does not. + +-- + +*`agent.id`*:: ++ +-- +type: keyword + +example: 8a4f500d +Unique identifier of this agent (if one exists). +Example: For Beats this would be beat.id. -- @@ -994,11 +1012,10 @@ type: keyword example: foo -Name of the agent. +Custom name of the agent. This is a name that can be given to an agent. This can be helpful if for example two Filebeat instances are running on the same host but a human readable separation is needed on which Filebeat instance data is coming from. If no name is given, the name is often left empty. - -- *`agent.type`*:: @@ -1011,43 +1028,27 @@ example: filebeat Type of the agent. The agent type stays always the same and should be given by the agent used. In case of Filebeat the agent would always be Filebeat also if two Filebeat instances are run on the same machine. - --- - -*`agent.id`*:: -+ --- -type: keyword - -example: 8a4f500d - -Unique identifier of this agent (if one exists). -Example: For Beats this would be beat.id. - - -- -*`agent.ephemeral_id`*:: +*`agent.version`*:: + -- type: keyword -example: 8a4f500f - -Ephemeral identifier of this agent (if one exists). -This id normally changes across restarts, but `agent.id` does not. +example: 6.0.0-rc2 +Version of the agent. -- [float] == client fields -A client is defined as the initiator of a network connection for events regarding sessions, connections, or bidirectional flow records. For TCP events, the client is the initiator of the TCP connection that sends the SYN packet(s). For other protocols, the client is generally the initiator or requestor in the network transaction. Some systems use the term "originator" to refer the client in TCP connections. The client fields describe details about the system acting as the client in the network event. Client fields are usually populated in conjunction with server fields. Client fields are generally not populated for packet-level events. +A client is defined as the initiator of a network connection for events regarding sessions, connections, or bidirectional flow records. +For TCP events, the client is the initiator of the TCP connection that sends the SYN packet(s). For other protocols, the client is generally the initiator or requestor in the network transaction. Some systems use the term "originator" to refer the client in TCP connections. The client fields describe details about the system acting as the client in the network event. Client fields are usually populated in conjunction with server fields. Client fields are generally not populated for packet-level events. Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. - *`client.address`*:: + -- @@ -1056,83 +1057,72 @@ type: keyword Some event client addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. - -- -*`client.ip`*:: +*`client.bytes`*:: + -- -type: ip +type: long -IP address of the client. -Can be one or multiple IPv4 or IPv6 addresses. +example: 184 +Bytes sent from the client to the server. -- -*`client.port`*:: +*`client.domain`*:: + -- -type: long - -Port of the client. +type: keyword +Client domain. -- -*`client.mac`*:: +*`client.geo.city_name`*:: + -- type: keyword -MAC address of the client. +example: Montreal +City name. -- -*`client.domain`*:: +*`client.geo.continent_name`*:: + -- type: keyword -Client domain. +example: North America +Name of the continent. -- -*`client.bytes`*:: +*`client.geo.country_iso_code`*:: + -- -type: long - -example: 184 - -format: bytes +type: keyword -Bytes sent from the client to the server. +example: CA +Country ISO code. -- -*`client.packets`*:: +*`client.geo.country_name`*:: + -- -type: long - -example: 12 +type: keyword -Packets sent from the client to the server. +example: Canada +Country name. -- -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - *`client.geo.location`*:: + -- @@ -1142,30 +1132,29 @@ example: { "lon": -73.614830, "lat": 45.505918 } Longitude and latitude. - -- -*`client.geo.continent_name`*:: +*`client.geo.name`*:: + -- type: keyword -example: North America - -Name of the continent. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`client.geo.country_name`*:: +*`client.geo.region_iso_code`*:: + -- type: keyword -example: Canada - -Country name. +example: CA-QC +Region ISO code. -- @@ -1178,274 +1167,274 @@ example: Quebec Region name. - -- -*`client.geo.city_name`*:: +*`client.ip`*:: + -- -type: keyword - -example: Montreal - -City name. +type: ip +IP address of the client. +Can be one or multiple IPv4 or IPv6 addresses. -- -*`client.geo.country_iso_code`*:: +*`client.mac`*:: + -- type: keyword -example: CA - -Country ISO code. - +MAC address of the client. -- -*`client.geo.region_iso_code`*:: +*`client.packets`*:: + -- -type: keyword - -example: CA-QC +type: long -Region ISO code. +example: 12 +Packets sent from the client to the server. -- -*`client.geo.name`*:: +*`client.port`*:: + -- -type: keyword - -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +type: long +Port of the client. -- -[float] -== cloud fields - -Fields related to the cloud or infrastructure the events are coming from. - - - -*`cloud.provider`*:: +*`client.user.email`*:: + -- type: keyword -example: ec2 - -Name of the cloud provider. Example values are ec2, gce, or digitalocean. - +User email address. -- -*`cloud.availability_zone`*:: +*`client.user.full_name`*:: + -- type: keyword -example: us-east-1c - -Availability zone in which this host is running. +example: Albert Einstein +User's full name, if available. -- -*`cloud.region`*:: +*`client.user.group.id`*:: + -- type: keyword -example: us-east-1 - -Region in which this host is running. - +Unique identifier for the group on the system/platform. -- -*`cloud.instance.id`*:: +*`client.user.group.name`*:: + -- type: keyword -example: i-1234567890abcdef0 - -Instance ID of the host machine. - +Name of the group. -- -*`cloud.instance.name`*:: +*`client.user.hash`*:: + -- type: keyword -Instance name of the host machine. - +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -- -*`cloud.machine.type`*:: +*`client.user.id`*:: + -- type: keyword -example: t2.medium - -Machine type of the host machine. - +One or multiple unique identifiers of the user. -- -*`cloud.account.id`*:: +*`client.user.name`*:: + -- type: keyword -example: 666777888999 - -The cloud account or organization id used to identify different entities in a multi-tenant environment. -Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. +example: albert +Short name or login of the user. -- [float] -== container fields - -Container fields are used for meta information about the specific container that is the source of information. These fields help correlate data based containers from any runtime. +== cloud fields +Fields related to the cloud or infrastructure the events are coming from. -*`container.runtime`*:: +*`cloud.account.id`*:: + -- type: keyword -example: docker - -Runtime managing this container. +example: 666777888999 +The cloud account or organization id used to identify different entities in a multi-tenant environment. +Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. -- -*`container.id`*:: +*`cloud.availability_zone`*:: + -- type: keyword -Unique container id. +example: us-east-1c +Availability zone in which this host is running. -- -*`container.image.name`*:: +*`cloud.instance.id`*:: + -- type: keyword -Name of the image the container was built on. +example: i-1234567890abcdef0 +Instance ID of the host machine. -- -*`container.image.tag`*:: +*`cloud.instance.name`*:: + -- type: keyword -Container image tag. +Instance name of the host machine. +-- +*`cloud.machine.type`*:: ++ -- +type: keyword -*`container.name`*:: +example: t2.medium + +Machine type of the host machine. + +-- + +*`cloud.provider`*:: + -- type: keyword -Container name. +example: aws +Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. -- -*`container.labels`*:: +*`cloud.region`*:: + -- -type: object +type: keyword -Image labels. +example: us-east-1 +Region in which this host is running. -- [float] -== destination fields - -Destination fields describe details about the destination of a packet/event. Destination fields are usually populated in conjunction with source fields. +== container fields +Container fields are used for meta information about the specific container that is the source of information. +These fields help correlate data based containers from any runtime. -*`destination.address`*:: +*`container.id`*:: + -- type: keyword -Some event destination addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. -Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. - +Unique container id. -- -*`destination.ip`*:: +*`container.image.name`*:: + -- -type: ip +type: keyword -IP address of the destination. -Can be one or multiple IPv4 or IPv6 addresses. +Name of the image the container was built on. + +-- + +*`container.image.tag`*:: ++ +-- +type: keyword +Container image tag. -- -*`destination.port`*:: +*`container.labels`*:: + -- -type: long +type: object -Port of the destination. +Image labels. + +-- + +*`container.name`*:: ++ +-- +type: keyword +Container name. -- -*`destination.mac`*:: +*`container.runtime`*:: + -- type: keyword -MAC address of the destination. +example: docker +Runtime managing this container. -- -*`destination.domain`*:: +[float] +== destination fields + +Destination fields describe details about the destination of a packet/event. +Destination fields are usually populated in conjunction with source fields. + + +*`destination.address`*:: + -- type: keyword -Destination domain. - +Some event destination addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. -- @@ -1456,31 +1445,62 @@ type: long example: 184 -format: bytes - Bytes sent from the destination to the source. +-- +*`destination.domain`*:: ++ -- +type: keyword -*`destination.packets`*:: +Destination domain. + +-- + +*`destination.geo.city_name`*:: + -- -type: long +type: keyword -example: 12 +example: Montreal -Packets sent from the destination to the source. +City name. + +-- +*`destination.geo.continent_name`*:: ++ +-- +type: keyword + +example: North America + +Name of the continent. -- -[float] -== geo fields +*`destination.geo.country_iso_code`*:: ++ +-- +type: keyword + +example: CA + +Country ISO code. + +-- -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. +*`destination.geo.country_name`*:: ++ +-- +type: keyword +example: Canada +Country name. + +-- *`destination.geo.location`*:: + @@ -1491,30 +1511,29 @@ example: { "lon": -73.614830, "lat": 45.505918 } Longitude and latitude. - -- -*`destination.geo.continent_name`*:: +*`destination.geo.name`*:: + -- type: keyword -example: North America - -Name of the continent. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`destination.geo.country_name`*:: +*`destination.geo.region_iso_code`*:: + -- type: keyword -example: Canada - -Country name. +example: CA-QC +Region ISO code. -- @@ -1527,56 +1546,112 @@ example: Quebec Region name. +-- +*`destination.ip`*:: ++ -- +type: ip -*`destination.geo.city_name`*:: +IP address of the destination. +Can be one or multiple IPv4 or IPv6 addresses. + +-- + +*`destination.mac`*:: + -- type: keyword -example: Montreal +MAC address of the destination. -City name. +-- + +*`destination.packets`*:: ++ +-- +type: long + +example: 12 +Packets sent from the destination to the source. -- -*`destination.geo.country_iso_code`*:: +*`destination.port`*:: ++ +-- +type: long + +Port of the destination. + +-- + +*`destination.user.email`*:: + -- type: keyword -example: CA +User email address. -Country ISO code. +-- +*`destination.user.full_name`*:: ++ +-- +type: keyword + +example: Albert Einstein + +User's full name, if available. -- -*`destination.geo.region_iso_code`*:: +*`destination.user.group.id`*:: + -- type: keyword -example: CA-QC +Unique identifier for the group on the system/platform. -Region ISO code. +-- +*`destination.user.group.name`*:: ++ +-- +type: keyword + +Name of the group. -- -*`destination.geo.name`*:: +*`destination.user.hash`*:: + -- type: keyword -example: boston-dc +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +-- +*`destination.user.id`*:: ++ +-- +type: keyword + +One or multiple unique identifiers of the user. + +-- + +*`destination.user.name`*:: ++ +-- +type: keyword + +example: albert + +Short name or login of the user. -- @@ -1586,29 +1661,35 @@ Not typically used in automated geolocation. Meta-information specific to ECS. - *`ecs.version`*:: + -- type: keyword -example: 1.0.0-beta2 +example: 1.0.0 required: True ECS version this event conforms to. `ecs.version` is a required field and must exist in all events. When querying across multiple indices -- which may conform to slightly different ECS versions -- this field lets integrations adjust to the schema version of the events. -The current version is 1.0.0-beta2 . - -- [float] == error fields -These fields can represent errors of any kind. Use them for errors that happen while fetching events or in cases where the event itself contains an error. +These fields can represent errors of any kind. +Use them for errors that happen while fetching events or in cases where the event itself contains an error. + + +*`error.code`*:: ++ +-- +type: keyword +Error code describing the error. +-- *`error.id`*:: + @@ -1617,7 +1698,6 @@ type: keyword Unique identifier for the error. - -- *`error.message`*:: @@ -1627,98 +1707,113 @@ type: text Error message. - -- -*`error.code`*:: +[float] +== event fields + +The event fields are used for context information about the log or metric event itself. +A log is defined as an event containing details of something that happened. Log events must include the time at which the thing happened. Examples of log events include a process starting on a host, a network packet being sent from a source to a destination, or a network connection between a client and a server being initiated or closed. A metric is defined as an event containing one or more numerical or categorical measurements and the time at which the measurement was taken. Examples of metric events include memory pressure measured on a host, or vulnerabilities measured on a scanned host. + + +*`event.action`*:: + -- type: keyword -Error code describing the error. +example: user-password-change +The action captured by the event. +This describes the information in the event. It is more specific than `event.category`. Examples are `group-add`, `process-started`, `file-created`. The value is normally defined by the implementer. -- -[float] -== event fields +*`event.category`*:: ++ +-- +type: keyword -The event fields are used for context information about the log or metric event itself. A log is defined as an event containing details of something that happened. Log events must include the time at which the thing happened. Examples of log events include a process starting on a host, a network packet being sent from a source to a destination, or a network connection between a client and a server being initiated or closed. A metric is defined as an event containing one or more numerical or categorical measurements and the time at which the measurement was taken. Examples of metric events include memory pressure measured on a host, or vulnerabilities measured on a scanned host. +example: user-management +Event category. +This contains high-level information about the contents of the event. It is more generic than `event.action`, in the sense that typically a category contains multiple actions. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +-- -*`event.id`*:: +*`event.created`*:: + -- -type: keyword - -example: 8a4f500d - -Unique ID to describe the event. +type: date +event.created contains the date/time when the event was first read by an agent, or by your pipeline. +This field is distinct from @timestamp in that @timestamp typically contain the time extracted from the original event. +In most situations, these two timestamps will be slightly different. The difference can be used to calculate the delay between your source generating an event, and the time when your agent first processed it. This can be used to monitor your agent's or pipeline's ability to keep up with your event source. +In case the two timestamps are identical, @timestamp should be used. -- -*`event.kind`*:: +*`event.dataset`*:: + -- type: keyword -example: state - -The kind of the event. -This gives information about what type of information the event contains, without being specific to the contents of the event. Examples are `event`, `state`, `alarm`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +example: stats +Name of the dataset. +The concept of a `dataset` (fileset / metricset) is used in Beats as a subset of modules. It contains the information which is currently stored in metricset.name and metricset.module or fileset.name. -- -*`event.category`*:: +*`event.duration`*:: + -- -type: keyword +type: long -example: user-management +Duration of the event in nanoseconds. +If event.start and event.end are known this value should be the difference between the end and start time. -Event category. -This contains high-level information about the contents of the event. It is more generic than `event.action`, in the sense that typically a category contains multiple actions. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +-- +*`event.end`*:: ++ +-- +type: date + +event.end contains the date when the event ended or when the activity was last observed. -- -*`event.action`*:: +*`event.hash`*:: + -- type: keyword -example: user-password-change - -The action captured by the event. -This describes the information in the event. It is more specific than `event.category`. Examples are `group-add`, `process-started`, `file-created`. The value is normally defined by the implementer. +example: 123456789012345678901234567890ABCD +Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate log integrity. -- -*`event.outcome`*:: +*`event.id`*:: + -- type: keyword -example: success - -The outcome of the event. -If the event describes an action, this fields contains the outcome of that action. Examples outcomes are `success` and `failure`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +example: 8a4f500d +Unique ID to describe the event. -- -*`event.type`*:: +*`event.kind`*:: + -- type: keyword -Reserved for future usage. -Please avoid using this field for user data. +example: state +The kind of the event. +This gives information about what type of information the event contains, without being specific to the contents of the event. Examples are `event`, `state`, `alarm`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. -- @@ -1732,19 +1827,48 @@ example: mysql Name of the module this data is coming from. This information is coming from the modules used in Beats or Logstash. +-- +*`event.original`*:: ++ -- +type: keyword -*`event.dataset`*:: +example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 + +Raw text message of entire event. Used to demonstrate log integrity. +This field is not indexed and doc_values are disabled. It cannot be searched, but it can be retrieved from `_source`. + +-- + +*`event.outcome`*:: + -- type: keyword -example: stats +example: success -Name of the dataset. -The concept of a `dataset` (fileset / metricset) is used in Beats as a subset of modules. It contains the information which is currently stored in metricset.name and metricset.module or fileset.name. +The outcome of the event. +If the event describes an action, this fields contains the outcome of that action. Examples outcomes are `success` and `failure`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. + +-- +*`event.risk_score`*:: ++ +-- +type: float + +Risk score or priority of the event (e.g. security solutions). Use your system's original value here. + +-- + +*`event.risk_score_norm`*:: ++ +-- +type: float + +Normalized risk score or priority of the event, on a scale of 0 to 100. +This is mainly useful if you use more than one system that assigns risk scores, and you want to see a normalized value across all systems. -- @@ -1755,122 +1879,132 @@ type: long example: 7 -Severity describes the severity of the event. What the different severity values mean can very different between use cases. It's up to the implementer to make sure severities are consistent across events. - +Severity describes the original severity of the event. What the different severity values mean can very different between use cases. It's up to the implementer to make sure severities are consistent across events. -- -*`event.original`*:: +*`event.start`*:: + -- -type: keyword +type: date -example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 +event.start contains the date when the event started or when the activity was first observed. -Raw text message of entire event. Used to demonstrate log integrity. -This field is not indexed and doc_values are disabled. It cannot be searched, but it can be retrieved from `_source`. +-- +*`event.timezone`*:: ++ +-- +type: keyword -Field is not indexed. +This field should be populated when the event's timestamp does not include timezone information already (e.g. default Syslog timestamps). It's optional otherwise. +Acceptable timezone formats are: a canonical ID (e.g. "Europe/Amsterdam"), abbreviated (e.g. "EST") or an HH:mm differential (e.g. "-05:00"). -- -*`event.hash`*:: +*`event.type`*:: + -- type: keyword -example: 123456789012345678901234567890ABCD +Reserved for future usage. +Please avoid using this field for user data. -Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate log integrity. +-- +[float] +== file fields --- +A file is defined as a set of information that has been created on, or has existed on a filesystem. +File objects can be associated with host events, network events, and/or file events (e.g., those produced by File Integrity Monitoring [FIM] products or services). File fields provide details about the affected file associated with the event or metric. -*`event.duration`*:: + +*`file.ctime`*:: + -- -type: long +type: date -format: duration +Last time file metadata changed. -Duration of the event in nanoseconds. -If event.start and event.end are known this value should be the difference between the end and start time. +-- +*`file.device`*:: ++ +-- +type: keyword + +Device that is the source of the file. -- -*`event.timezone`*:: +*`file.extension`*:: + -- type: keyword -This field should be populated when the event's timestamp does not include timezone information already (e.g. default Syslog timestamps). It's optional otherwise. -Acceptable timezone formats are: a canonical ID (e.g. "Europe/Amsterdam"), abbreviated (e.g. "EST") or an HH:mm differential (e.g. "-05:00"). +example: png +File extension. +This should allow easy filtering by file extensions. -- -*`event.created`*:: +*`file.gid`*:: + -- -type: date - -event.created contains the date when the event was created. -This timestamp is distinct from @timestamp in that @timestamp contains the processed timestamp. For logs these two timestamps can be different as the timestamp in the log line and when the event is read for example by Filebeat are not identical. `@timestamp` must contain the timestamp extracted from the log line, event.created when the log line is read. The same could apply to package capturing where @timestamp contains the timestamp extracted from the network package and event.created when the event was created. -In case the two timestamps are identical, @timestamp should be used. +type: keyword +Primary group ID (GID) of the file. -- -*`event.start`*:: +*`file.group`*:: + -- -type: date +type: keyword -event.start contains the date when the event started or when the activity was first observed. +Primary group name of the file. +-- +*`file.inode`*:: ++ -- +type: keyword -*`event.end`*:: +Inode representing the file in the filesystem. + +-- + +*`file.mode`*:: + -- -type: date +type: keyword -event.end contains the date when the event ended or when the activity was last observed. +example: 416 +Mode of the file in octal representation. -- -*`event.risk_score`*:: +*`file.mtime`*:: + -- -type: float - -Risk score or priority of the event (e.g. security solutions). Use your system's original value here. +type: date +Last time file content was modified. -- -*`event.risk_score_norm`*:: +*`file.owner`*:: + -- -type: float - -Normalized risk score or priority of the event, on a scale of 0 to 100. -This is mainly useful if you use more than one system that assigns risk scores, and you want to see a normalized value across all systems. +type: keyword +File owner's username. -- -[float] -== file fields - -A file is defined as a set of information that has been created on, or has existed on a filesystem. File objects can be associated with host events, network events, and/or file events (e.g., those produced by File Integrity Monitoring [FIM] products or services). File fields provide details about the affected file associated with the event or metric. - - - *`file.path`*:: + -- @@ -1880,25 +2014,21 @@ Path to the file. -- -*`file.target_path`*:: +*`file.size`*:: + -- -type: keyword +type: long -Target path for symlinks. +File size in bytes (field is only added when `type` is `file`). -- -*`file.extension`*:: +*`file.target_path`*:: + -- type: keyword -example: png - -File extension. -This should allow easy filtering by file extensions. - +Target path for symlinks. -- @@ -1911,98 +2041,109 @@ File type (file, dir, or symlink). -- -*`file.device`*:: +*`file.uid`*:: + -- type: keyword -Device that is the source of the file. +The user ID (UID) or security identifier (SID) of the file owner. -- -*`file.inode`*:: -+ --- -type: keyword +[float] +== geo fields -Inode representing the file in the filesystem. +Geo fields can carry data about a specific location related to an event. +This geolocation information can be derived from techniques such as Geo IP, or be user-supplied. --- -*`file.uid`*:: +*`geo.city_name`*:: + -- type: keyword -The user ID (UID) or security identifier (SID) of the file owner. +example: Montreal +City name. -- -*`file.owner`*:: +*`geo.continent_name`*:: + -- type: keyword -File owner's username. +example: North America + +Name of the continent. -- -*`file.gid`*:: +*`geo.country_iso_code`*:: + -- type: keyword -Primary group ID (GID) of the file. +example: CA + +Country ISO code. -- -*`file.group`*:: +*`geo.country_name`*:: + -- type: keyword -Primary group name of the file. +example: Canada + +Country name. -- -*`file.mode`*:: +*`geo.location`*:: + -- -type: keyword +type: geo_point -example: 416 +example: { "lon": -73.614830, "lat": 45.505918 } -Mode of the file in octal representation. +Longitude and latitude. -- -*`file.size`*:: +*`geo.name`*:: + -- -type: long +type: keyword -format: bytes +example: boston-dc -File size in bytes (field is only added when `type` is `file`). +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`file.mtime`*:: +*`geo.region_iso_code`*:: + -- -type: date +type: keyword -Last time file content was modified. +example: CA-QC + +Region ISO code. -- -*`file.ctime`*:: +*`geo.region_name`*:: + -- -type: date +type: keyword -Last time file metadata changed. +example: Quebec + +Region name. -- @@ -2012,7 +2153,6 @@ Last time file metadata changed. The group fields are meant to represent groups that are relevant to the event. - *`group.id`*:: + -- @@ -2020,7 +2160,6 @@ type: keyword Unique identifier for the group on the system/platform. - -- *`group.name`*:: @@ -2030,133 +2169,162 @@ type: keyword Name of the group. - -- [float] == host fields -A host is defined as a general computing instance. ECS host.* fields should be populated with details about the host on which the event happened, or on which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. - +A host is defined as a general computing instance. +ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. -*`host.hostname`*:: +*`host.architecture`*:: + -- type: keyword -Hostname of the host. -It normally contains what the `hostname` command returns on the host machine. +example: x86_64 +Operating system architecture. -- -*`host.name`*:: +*`host.geo.city_name`*:: + -- type: keyword -Name of the host. -It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. +example: Montreal +City name. -- -*`host.id`*:: +*`host.geo.continent_name`*:: + -- type: keyword -Unique host id. -As hostname is not always unique, use values that are meaningful in your environment. -Example: The current usage of `beat.name`. +example: North America +Name of the continent. -- -*`host.ip`*:: +*`host.geo.country_iso_code`*:: + -- -type: ip +type: keyword -Host ip address. +example: CA +Country ISO code. -- -*`host.mac`*:: +*`host.geo.country_name`*:: + -- type: keyword -Host mac address. +example: Canada +Country name. -- -*`host.type`*:: +*`host.geo.location`*:: + -- -type: keyword +type: geo_point -Type of host. -For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. +example: { "lon": -73.614830, "lat": 45.505918 } +Longitude and latitude. -- -*`host.architecture`*:: +*`host.geo.name`*:: + -- type: keyword -example: x86_64 - -Operating system architecture. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -[float] -== os fields +*`host.geo.region_iso_code`*:: ++ +-- +type: keyword -The OS fields contain information about the operating system. +example: CA-QC +Region ISO code. +-- -*`host.os.platform`*:: +*`host.geo.region_name`*:: + -- type: keyword -example: darwin +example: Quebec -Operating system platform (such centos, ubuntu, windows). +Region name. + +-- +*`host.hostname`*:: ++ +-- +type: keyword + +Hostname of the host. +It normally contains what the `hostname` command returns on the host machine. -- -*`host.os.name`*:: +*`host.id`*:: + -- type: keyword -example: Mac OS X +Unique host id. +As hostname is not always unique, use values that are meaningful in your environment. +Example: The current usage of `beat.name`. -Operating system name, without the version. +-- + +*`host.ip`*:: ++ +-- +type: ip +Host ip address. -- -*`host.os.full`*:: +*`host.mac`*:: + -- type: keyword -example: Mac OS Mojave +Host mac address. -Operating system name, including the version or code name. +-- + +*`host.name`*:: ++ +-- +type: keyword +Name of the host. +It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. -- @@ -2169,18 +2337,16 @@ example: debian OS family (such as redhat, debian, freebsd, windows). - -- -*`host.os.version`*:: +*`host.os.full`*:: + -- type: keyword -example: 10.14.1 - -Operating system version as a raw string. +example: Mac OS Mojave +Operating system name, including the version or code name. -- @@ -2193,131 +2359,133 @@ example: 4.4.0-112-generic Operating system kernel version as a raw string. - -- -[float] -== geo fields +*`host.os.name`*:: ++ +-- +type: keyword -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. +example: Mac OS X +Operating system name, without the version. +-- -*`host.geo.location`*:: +*`host.os.platform`*:: + -- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } +type: keyword -Longitude and latitude. +example: darwin +Operating system platform (such centos, ubuntu, windows). -- -*`host.geo.continent_name`*:: +*`host.os.version`*:: + -- type: keyword -example: North America - -Name of the continent. +example: 10.14.1 +Operating system version as a raw string. -- -*`host.geo.country_name`*:: +*`host.type`*:: + -- type: keyword -example: Canada +Type of host. +For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. -Country name. +-- + +*`host.user.email`*:: ++ +-- +type: keyword +User email address. -- -*`host.geo.region_name`*:: +*`host.user.full_name`*:: + -- type: keyword -example: Quebec - -Region name. +example: Albert Einstein +User's full name, if available. -- -*`host.geo.city_name`*:: +*`host.user.group.id`*:: + -- type: keyword -example: Montreal +Unique identifier for the group on the system/platform. -City name. +-- + +*`host.user.group.name`*:: ++ +-- +type: keyword +Name of the group. -- -*`host.geo.country_iso_code`*:: +*`host.user.hash`*:: + -- type: keyword -example: CA - -Country ISO code. - +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -- -*`host.geo.region_iso_code`*:: +*`host.user.id`*:: + -- type: keyword -example: CA-QC - -Region ISO code. - +One or multiple unique identifiers of the user. -- -*`host.geo.name`*:: +*`host.user.name`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +example: albert +Short name or login of the user. -- [float] == http fields -Fields related to HTTP activity. - +Fields related to HTTP activity. Use the `url` field set to store the url of the request. -*`http.request.method`*:: +*`http.request.body.bytes`*:: + -- -type: keyword - -example: get, post, put +type: long -Http request method. -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: 887 +Size in bytes of the request body. -- @@ -2328,84 +2496,63 @@ type: keyword example: Hello world -The full http request body. - - --- - -*`http.request.referrer`*:: -+ --- -type: keyword - -example: https://blog.example.com/ - -Referrer for this HTTP request. - +The full HTTP request body. -- -*`http.response.status_code`*:: +*`http.request.bytes`*:: + -- type: long -example: 404 - -Http response status code. +example: 1437 +Total size in bytes of the request (body and headers). -- -*`http.response.body.content`*:: +*`http.request.method`*:: + -- type: keyword -example: Hello world - -The full http response body. +example: get, post, put +HTTP request method. +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`http.version`*:: +*`http.request.referrer`*:: + -- type: keyword -example: 1.1 - -Http version. +example: https://blog.example.com/ +Referrer for this HTTP request. -- -*`http.request.bytes`*:: +*`http.response.body.bytes`*:: + -- type: long -example: 1437 - -format: bytes - -Total size in bytes of the request (body and headers). +example: 887 +Size in bytes of the response body. -- -*`http.request.body.bytes`*:: +*`http.response.body.content`*:: + -- -type: long - -example: 887 - -format: bytes +type: keyword -Size in bytes of the request body. +example: Hello world +The full HTTP response body. -- @@ -2416,24 +2563,29 @@ type: long example: 1437 -format: bytes - Total size in bytes of the response (body and headers). - -- -*`http.response.body.bytes`*:: +*`http.response.status_code`*:: + -- type: long -example: 887 +example: 404 -format: bytes +HTTP response status code. -Size in bytes of the response body. +-- + +*`http.version`*:: ++ +-- +type: keyword + +example: 1.1 +HTTP version. -- @@ -2443,17 +2595,15 @@ Size in bytes of the response body. Fields which are specific to log events. - *`log.level`*:: + -- type: keyword -example: ERR - -Log level of the log event. -Some examples are `WARN`, `ERR`, `INFO`. +example: err +Original log level of the log event. +Some examples are `warn`, `error`, `i`. -- @@ -2464,96 +2614,52 @@ type: keyword example: Sep 19 08:26:10 localhost My log - This is the original log message and contains the full log message before splitting it up in multiple parts. In contrast to the `message` field which can contain an extracted part of the log message, this field contains the original, full log message. It can have already some modifications applied like encoding or new lines removed to clean up the log message. This field is not indexed and doc_values are disabled so it can't be queried but the value can be retrieved from `_source`. - -Field is not indexed. - -- [float] == network fields -The network is defined as the communication path over which a host or network event happens. The network.* fields should be populated with details about the network activity associated with an event. - - - -*`network.name`*:: -+ --- -type: keyword - -example: Guest Wifi - -Name given by operators to sections of their network. - - --- - -*`network.type`*:: -+ --- -type: keyword - -example: ipv4 - -In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. - - --- - -*`network.iana_number`*:: -+ --- -type: keyword - -example: 6 - -IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). Standardized list of protocols. This aligns well with NetFlow and sFlow related logs which use the IANA Protocol Number. - +The network is defined as the communication path over which a host or network event happens. +The network.* fields should be populated with details about the network activity associated with an event. --- -*`network.transport`*:: +*`network.application`*:: + -- type: keyword -example: tcp - -Same as network.iana_number, but instead using the Keyword name of the transport layer (udp, tcp, ipv6-icmp, etc.) -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: aim +A name given to an application level protocol. This can be arbitrarily assigned for things like microservices, but also apply to things like skype, icq, facebook, twitter. This would be used in situations where the vendor or service can be decoded such as from the source/dest IP owners, ports, or wire format. +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`network.application`*:: +*`network.bytes`*:: + -- -type: keyword - -example: aim +type: long -A name given to an application. This can be arbitrarily assigned for things like microservices, but also apply to things like skype, icq, facebook, twitter. This would be used in situations where the vendor or service can be decoded such as from the source/dest IP owners, ports, or wire format. -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: 368 +Total bytes transferred in both directions. +If `source.bytes` and `destination.bytes` are known, `network.bytes` is their sum. -- -*`network.protocol`*:: +*`network.community_id`*:: + -- type: keyword -example: http - -L7 Network protocol name. ex. http, lumberjack, transport protocol. -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: 1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0= +A hash of source and destination IPs and ports, as well as the protocol used in a communication. This is a tool-agnostic standard to identify flows. +Learn more at https://github.com/corelight/community-id-spec. -- @@ -2575,7 +2681,6 @@ Recommended values are: When mapping events from a host-based monitoring context, populate this field from the host's point of view. When mapping events from a network or perimeter-based monitoring context, populate this field from the point of view of your network perimeter. - -- *`network.forwarded_ip`*:: @@ -2587,34 +2692,27 @@ example: 192.1.1.2 Host IP address when the source IP address is the proxy. - -- -*`network.community_id`*:: +*`network.iana_number`*:: + -- type: keyword -example: 1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0= - -A hash of source and destination IPs and ports, as well as the protocol used in a communication. This is a tool-agnostic standard to identify flows. -Learn more at https://github.com/corelight/community-id-spec. +example: 6 +IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). Standardized list of protocols. This aligns well with NetFlow and sFlow related logs which use the IANA Protocol Number. -- -*`network.bytes`*:: +*`network.name`*:: + -- -type: long - -example: 368 - -format: bytes +type: keyword -Total bytes transferred in both directions. -If `source.bytes` and `destination.bytes` are known, `network.bytes` is their sum. +example: Guest Wifi +Name given by operators to sections of their network. -- @@ -2628,129 +2726,165 @@ example: 24 Total packets transferred in both directions. If `source.packets` and `destination.packets` are known, `network.packets` is their sum. - -- -[float] -== observer fields +*`network.protocol`*:: ++ +-- +type: keyword -An observer is defined as a special network, security, or application device used to detect, observe, or create network, security, or application-related events and metrics. This could be a custom hardware appliance or a server that has been configured to run special network, security, or application software. Examples include firewalls, intrusion detection/prevention systems, network monitoring sensors, web application firewalls, data loss prevention systems, and APM servers. The observer.* fields shall be populated with details of the system, if any, that detects, observes and/or creates a network, security, or application event or metric. Message queues and ETL components used in processing events or metrics are not considered observers in ECS. +example: http +L7 Network protocol name. ex. http, lumberjack, transport protocol. +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". +-- -*`observer.mac`*:: +*`network.transport`*:: + -- type: keyword -MAC address of the observer +example: tcp +Same as network.iana_number, but instead using the Keyword name of the transport layer (udp, tcp, ipv6-icmp, etc.) +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`observer.ip`*:: +*`network.type`*:: + -- -type: ip +type: keyword -IP address of the observer. +example: ipv4 +In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`observer.hostname`*:: +[float] +== observer fields + +An observer is defined as a special network, security, or application device used to detect, observe, or create network, security, or application-related events and metrics. +This could be a custom hardware appliance or a server that has been configured to run special network, security, or application software. Examples include firewalls, intrusion detection/prevention systems, network monitoring sensors, web application firewalls, data loss prevention systems, and APM servers. The observer.* fields shall be populated with details of the system, if any, that detects, observes and/or creates a network, security, or application event or metric. Message queues and ETL components used in processing events or metrics are not considered observers in ECS. + + +*`observer.geo.city_name`*:: + -- type: keyword -Hostname of the observer. +example: Montreal +City name. -- -*`observer.vendor`*:: +*`observer.geo.continent_name`*:: + -- type: keyword -observer vendor information. +example: North America +Name of the continent. -- -*`observer.version`*:: +*`observer.geo.country_iso_code`*:: + -- type: keyword -Observer version. +example: CA +Country ISO code. -- -*`observer.serial_number`*:: +*`observer.geo.country_name`*:: + -- type: keyword -Observer serial number. +example: Canada +Country name. -- -*`observer.type`*:: +*`observer.geo.location`*:: + -- -type: keyword +type: geo_point -example: firewall +example: { "lon": -73.614830, "lat": 45.505918 } -The type of the observer the data is coming from. -There is no predefined list of observer types. Some examples are `forwarder`, `firewall`, `ids`, `ips`, `proxy`, `poller`, `sensor`, `APM server`. +Longitude and latitude. +-- +*`observer.geo.name`*:: ++ -- +type: keyword -[float] -== os fields +example: boston-dc -The OS fields contain information about the operating system. +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. + +-- + +*`observer.geo.region_iso_code`*:: ++ +-- +type: keyword +example: CA-QC + +Region ISO code. +-- -*`observer.os.platform`*:: +*`observer.geo.region_name`*:: + -- type: keyword -example: darwin - -Operating system platform (such centos, ubuntu, windows). +example: Quebec +Region name. -- -*`observer.os.name`*:: +*`observer.hostname`*:: + -- type: keyword -example: Mac OS X +Hostname of the observer. -Operating system name, without the version. +-- + +*`observer.ip`*:: ++ +-- +type: ip +IP address of the observer. -- -*`observer.os.full`*:: +*`observer.mac`*:: + -- type: keyword -example: Mac OS Mojave - -Operating system name, including the version or code name. - +MAC address of the observer -- @@ -2763,18 +2897,16 @@ example: debian OS family (such as redhat, debian, freebsd, windows). - -- -*`observer.os.version`*:: +*`observer.os.full`*:: + -- type: keyword -example: 10.14.1 - -Operating system version as a raw string. +example: Mac OS Mojave +Operating system name, including the version or code name. -- @@ -2787,138 +2919,102 @@ example: 4.4.0-112-generic Operating system kernel version as a raw string. - --- - -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - -*`observer.geo.location`*:: -+ --- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } - -Longitude and latitude. - - -- -*`observer.geo.continent_name`*:: +*`observer.os.name`*:: + -- type: keyword -example: North America - -Name of the continent. +example: Mac OS X +Operating system name, without the version. -- -*`observer.geo.country_name`*:: +*`observer.os.platform`*:: + -- type: keyword -example: Canada - -Country name. +example: darwin +Operating system platform (such centos, ubuntu, windows). -- -*`observer.geo.region_name`*:: +*`observer.os.version`*:: + -- type: keyword -example: Quebec - -Region name. +example: 10.14.1 +Operating system version as a raw string. -- -*`observer.geo.city_name`*:: +*`observer.serial_number`*:: + -- type: keyword -example: Montreal - -City name. - +Observer serial number. -- -*`observer.geo.country_iso_code`*:: +*`observer.type`*:: + -- type: keyword -example: CA - -Country ISO code. +example: firewall +The type of the observer the data is coming from. +There is no predefined list of observer types. Some examples are `forwarder`, `firewall`, `ids`, `ips`, `proxy`, `poller`, `sensor`, `APM server`. -- -*`observer.geo.region_iso_code`*:: +*`observer.vendor`*:: + -- type: keyword -example: CA-QC - -Region ISO code. - +observer vendor information. -- -*`observer.geo.name`*:: +*`observer.version`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. - +Observer version. -- [float] == organization fields -The organization fields enrich data with information about the company or entity the data is associated with. These fields help you arrange or filter data stored in an index by one or multiple organizations. - +The organization fields enrich data with information about the company or entity the data is associated with. +These fields help you arrange or filter data stored in an index by one or multiple organizations. -*`organization.name`*:: +*`organization.id`*:: + -- type: keyword -Organization name. - +Unique identifier for the organization. -- -*`organization.id`*:: +*`organization.name`*:: + -- type: keyword -Unique identifier for the organization. - +Organization name. -- @@ -2928,93 +3024,99 @@ Unique identifier for the organization. The OS fields contain information about the operating system. - -*`os.platform`*:: +*`os.family`*:: + -- type: keyword -example: darwin - -Operating system platform (such centos, ubuntu, windows). +example: debian +OS family (such as redhat, debian, freebsd, windows). -- -*`os.name`*:: +*`os.full`*:: + -- type: keyword -example: Mac OS X - -Operating system name, without the version. +example: Mac OS Mojave +Operating system name, including the version or code name. -- -*`os.full`*:: +*`os.kernel`*:: + -- type: keyword -example: Mac OS Mojave - -Operating system name, including the version or code name. +example: 4.4.0-112-generic +Operating system kernel version as a raw string. -- -*`os.family`*:: +*`os.name`*:: + -- type: keyword -example: debian - -OS family (such as redhat, debian, freebsd, windows). +example: Mac OS X +Operating system name, without the version. -- -*`os.version`*:: +*`os.platform`*:: + -- type: keyword -example: 10.14.1 - -Operating system version as a raw string. +example: darwin +Operating system platform (such centos, ubuntu, windows). -- -*`os.kernel`*:: +*`os.version`*:: + -- type: keyword -example: 4.4.0-112-generic - -Operating system kernel version as a raw string. +example: 10.14.1 +Operating system version as a raw string. -- [float] == process fields -These fields contain information about a process. These fields can help you correlate metrics information with a process id/name from a log message. The `process.pid` often stays in the metric itself and is copied to the global field for correlation. +These fields contain information about a process. +These fields can help you correlate metrics information with a process id/name from a log message. The `process.pid` often stays in the metric itself and is copied to the global field for correlation. + +*`process.args`*:: ++ +-- +type: keyword +example: ['ssh', '-l', 'user', '10.0.0.16'] -*`process.pid`*:: +Array of process arguments. +May be filtered to protect sensitive information. + +-- + +*`process.executable`*:: + -- -type: long +type: keyword -Process id. +example: /usr/bin/ssh +Absolute path to the process executable. -- @@ -3028,6 +3130,14 @@ example: ssh Process name. Sometimes called program name or similar. +-- + +*`process.pid`*:: ++ +-- +type: long + +Process id. -- @@ -3038,31 +3148,27 @@ type: long Process parent id. - -- -*`process.args`*:: +*`process.start`*:: + -- -type: keyword - -example: ['ssh', '-l', 'user', '10.0.0.16'] +type: date -Process arguments. -May be filtered to protect sensitive information. +example: 2016-05-23T08:05:34.853Z +The time the process started. -- -*`process.executable`*:: +*`process.thread.id`*:: + -- -type: keyword - -example: /usr/bin/ssh +type: long -Absolute path to the process executable. +example: 4242 +Thread ID. -- @@ -3074,133 +3180,180 @@ type: keyword Process title. The proctitle, some times the same as process name. Can also be different: for example a browser setting its title to the web page currently opened. - -- -*`process.thread.id`*:: +*`process.working_directory`*:: + -- -type: long +type: keyword -example: 4242 +example: /home/alice -Thread ID. +The working directory of the process. + +-- + +[float] +== related fields + +This field set is meant to facilitate pivoting around a piece of data. +Some pieces of information can be seen in many places in an ECS event. To facilitate searching for them, store an array of all seen values to their corresponding field in `related.`. +A concrete example is IP addresses, which can be under host, observer, source, destination, client, server, and network.forwarded_ip. If you append all IPs to `related.ip`, you can then search for a given IP trivially, no matter where it appeared, by querying `related.ip:a.b.c.d`. +*`related.ip`*:: ++ -- +type: ip -*`process.start`*:: +All of the IPs seen on your event. + +-- + +[float] +== server fields + +A Server is defined as the responder in a network connection for events regarding sessions, connections, or bidirectional flow records. +For TCP events, the server is the receiver of the initial SYN packet(s) of the TCP connection. For other protocols, the server is generally the responder in the network transaction. Some systems actually use the term "responder" to refer the server in TCP connections. The server fields describe details about the system acting as the server in the network event. Server fields are usually populated in conjunction with client fields. Server fields are generally not populated for packet-level events. +Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. + + +*`server.address`*:: + -- -type: date +type: keyword -example: 2016-05-23T08:05:34.853Z +Some event server addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. -The time the process started. +-- +*`server.bytes`*:: ++ +-- +type: long + +example: 184 + +Bytes sent from the server to the client. -- -*`process.working_directory`*:: +*`server.domain`*:: + -- type: keyword -example: /home/alice - -The working directory of the process. +Server domain. +-- +*`server.geo.city_name`*:: ++ -- +type: keyword -[float] -== related fields - -This field set is meant to facilitate pivoting around a piece of data. Some pieces of information can be seen in many places in ECS. To facilitate searching for them, append values to their corresponding field in `related.`. A concrete example is IP addresses, which can be under host, observer, source, destination, client, server, and network.forwarded_ip. If you append all IPs to `related.ip`, you can then search for a given IP trivially, no matter where it appeared, by querying `related.ip:a.b.c.d`. +example: Montreal +City name. +-- -*`related.ip`*:: +*`server.geo.continent_name`*:: + -- -type: ip +type: keyword -All of the IPs seen on your event. +example: North America +Name of the continent. -- -[float] -== server fields +*`server.geo.country_iso_code`*:: ++ +-- +type: keyword -A Server is defined as the responder in a network connection for events regarding sessions, connections, or bidirectional flow records. For TCP events, the server is the receiver of the initial SYN packet(s) of the TCP connection. For other protocols, the server is generally the responder in the network transaction. Some systems actually use the term "responder" to refer the server in TCP connections. The server fields describe details about the system acting as the server in the network event. Server fields are usually populated in conjunction with client fields. Server fields are generally not populated for packet-level events. -Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. +example: CA +Country ISO code. +-- -*`server.address`*:: +*`server.geo.country_name`*:: + -- type: keyword -Some event server addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. -Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. +example: Canada +Country name. -- -*`server.ip`*:: +*`server.geo.location`*:: + -- -type: ip +type: geo_point -IP address of the server. -Can be one or multiple IPv4 or IPv6 addresses. +example: { "lon": -73.614830, "lat": 45.505918 } +Longitude and latitude. -- -*`server.port`*:: +*`server.geo.name`*:: + -- -type: long +type: keyword -Port of the server. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`server.mac`*:: +*`server.geo.region_iso_code`*:: + -- type: keyword -MAC address of the server. +example: CA-QC +Region ISO code. -- -*`server.domain`*:: +*`server.geo.region_name`*:: + -- type: keyword -Server domain. +example: Quebec +Region name. -- -*`server.bytes`*:: +*`server.ip`*:: + -- -type: long +type: ip -example: 184 +IP address of the server. +Can be one or multiple IPv4 or IPv6 addresses. -format: bytes +-- -Bytes sent from the server to the client. +*`server.mac`*:: ++ +-- +type: keyword +MAC address of the server. -- @@ -3213,120 +3366,103 @@ example: 12 Packets sent from the server to the client. - -- -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - -*`server.geo.location`*:: +*`server.port`*:: + -- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } - -Longitude and latitude. +type: long +Port of the server. -- -*`server.geo.continent_name`*:: +*`server.user.email`*:: + -- type: keyword -example: North America - -Name of the continent. - +User email address. -- -*`server.geo.country_name`*:: +*`server.user.full_name`*:: + -- type: keyword -example: Canada - -Country name. +example: Albert Einstein +User's full name, if available. -- -*`server.geo.region_name`*:: +*`server.user.group.id`*:: + -- type: keyword -example: Quebec - -Region name. - +Unique identifier for the group on the system/platform. -- -*`server.geo.city_name`*:: +*`server.user.group.name`*:: + -- type: keyword -example: Montreal - -City name. - +Name of the group. -- -*`server.geo.country_iso_code`*:: +*`server.user.hash`*:: + -- type: keyword -example: CA - -Country ISO code. - +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -- -*`server.geo.region_iso_code`*:: +*`server.user.id`*:: + -- type: keyword -example: CA-QC - -Region ISO code. - +One or multiple unique identifiers of the user. -- -*`server.geo.name`*:: +*`server.user.name`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +example: albert +Short name or login of the user. -- [float] == service fields -The service fields describe the service for or from which the data was collected. These fields help you find and correlate logs for a specific service and version. +The service fields describe the service for or from which the data was collected. +These fields help you find and correlate logs for a specific service and version. + + +*`service.ephemeral_id`*:: ++ +-- +type: keyword + +example: 8a4f500f +Ephemeral identifier of this service (if one exists). +This id normally changes across restarts, but `service.id` does not. +-- *`service.id`*:: + @@ -3339,7 +3475,6 @@ Unique identifier of the running service. This id should uniquely identify this service. This makes it possible to correlate logs and metrics for one specific service. Example: If you are experiencing issues with one redis instance, you can filter on that id to see metrics and logs for that single instance. - -- *`service.name`*:: @@ -3354,6 +3489,14 @@ The name of the service is normally user given. This allows if two instances of Also it allows for distributed services that run on multiple hosts to correlate the related instances based on the name. In the case of Elasticsearch the service.name could contain the cluster name. For Beats the service.name is by default a copy of the `service.type` field if no name is specified. +-- + +*`service.state`*:: ++ +-- +type: keyword + +Current state of the service. -- @@ -3368,115 +3511,163 @@ The type of the service data is collected from. The type can be used to group and correlate logs and metrics from one service type. Example: If logs or metrics are collected from Elasticsearch, `service.type` would be `elasticsearch`. - -- -*`service.state`*:: +*`service.version`*:: + -- type: keyword -Current state of the service. +example: 3.2.4 +Version of the service the data was collected from. +This allows to look at a data set only for a specific version of a service. -- -*`service.version`*:: +[float] +== source fields + +Source fields describe details about the source of a packet/event. +Source fields are usually populated in conjunction with destination fields. + + +*`source.address`*:: + -- type: keyword -example: 3.2.4 +Some event source addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. -Version of the service the data was collected from. -This allows to look at a data set only for a specific version of a service. +-- + +*`source.bytes`*:: ++ +-- +type: long + +example: 184 +Bytes sent from the source to the destination. -- -*`service.ephemeral_id`*:: +*`source.domain`*:: + -- type: keyword -example: 8a4f500f +Source domain. -Ephemeral identifier of this service (if one exists). -This id normally changes across restarts, but `service.id` does not. +-- + +*`source.geo.city_name`*:: ++ +-- +type: keyword + +example: Montreal +City name. -- -[float] -== source fields +*`source.geo.continent_name`*:: ++ +-- +type: keyword -Source fields describe details about the source of a packet/event. Source fields are usually populated in conjunction with destination fields. +example: North America +Name of the continent. +-- -*`source.address`*:: +*`source.geo.country_iso_code`*:: + -- type: keyword -Some event source addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. -Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. +example: CA +Country ISO code. -- -*`source.ip`*:: +*`source.geo.country_name`*:: + -- -type: ip +type: keyword -IP address of the source. -Can be one or multiple IPv4 or IPv6 addresses. +example: Canada +Country name. -- -*`source.port`*:: +*`source.geo.location`*:: + -- -type: long +type: geo_point -Port of the source. +example: { "lon": -73.614830, "lat": 45.505918 } +Longitude and latitude. -- -*`source.mac`*:: +*`source.geo.name`*:: + -- type: keyword -MAC address of the source. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`source.domain`*:: +*`source.geo.region_iso_code`*:: + -- type: keyword -Source domain. +example: CA-QC +Region ISO code. -- -*`source.bytes`*:: +*`source.geo.region_name`*:: + -- -type: long +type: keyword -example: 184 +example: Quebec + +Region name. + +-- + +*`source.ip`*:: ++ +-- +type: ip + +IP address of the source. +Can be one or multiple IPv4 or IPv6 addresses. -format: bytes +-- -Bytes sent from the source to the destination. +*`source.mac`*:: ++ +-- +type: keyword +MAC address of the source. -- @@ -3489,133 +3680,110 @@ example: 12 Packets sent from the source to the destination. - -- -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - -*`source.geo.location`*:: +*`source.port`*:: + -- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } - -Longitude and latitude. +type: long +Port of the source. -- -*`source.geo.continent_name`*:: +*`source.user.email`*:: + -- type: keyword -example: North America - -Name of the continent. - +User email address. -- -*`source.geo.country_name`*:: +*`source.user.full_name`*:: + -- type: keyword -example: Canada - -Country name. +example: Albert Einstein +User's full name, if available. -- -*`source.geo.region_name`*:: +*`source.user.group.id`*:: + -- type: keyword -example: Quebec - -Region name. - +Unique identifier for the group on the system/platform. -- -*`source.geo.city_name`*:: +*`source.user.group.name`*:: + -- type: keyword -example: Montreal - -City name. - +Name of the group. -- -*`source.geo.country_iso_code`*:: +*`source.user.hash`*:: + -- type: keyword -example: CA - -Country ISO code. - +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -- -*`source.geo.region_iso_code`*:: +*`source.user.id`*:: + -- type: keyword -example: CA-QC - -Region ISO code. - +One or multiple unique identifiers of the user. -- -*`source.geo.name`*:: +*`source.user.name`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +example: albert +Short name or login of the user. -- [float] == url fields -URL fields provide a complete URL, with scheme, host, and path. +URL fields provide support for complete or partial URLs, and supports the breaking down into scheme, domain, path, and so on. - -*`url.original`*:: +*`url.domain`*:: + -- type: keyword -example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch +example: www.elastic.co +Domain of the url, such as "www.elastic.co". +In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. -Unmodified original url as seen in the event source. -Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. -This field is meant to represent the URL as it was observed, complete or not. +-- + +*`url.fragment`*:: ++ +-- +type: keyword +Portion of the url after the `#`, such as "top". +The `#` is not part of the fragment. -- @@ -3628,54 +3796,47 @@ example: https://www.elastic.co:443/search?q=elasticsearch#top If full URLs are important to your use case, they should be stored in `url.full`, whether this field is reconstructed or present in the event source. - -- -*`url.scheme`*:: +*`url.original`*:: + -- type: keyword -example: https - -Scheme of the request, such as "https". -Note: The `:` is not part of the scheme. +example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch +Unmodified original url as seen in the event source. +Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. +This field is meant to represent the URL as it was observed, complete or not. -- -*`url.domain`*:: +*`url.password`*:: + -- type: keyword -example: www.elastic.co - -Domain of the request, such as "www.elastic.co". -In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. - +Password of the request. -- -*`url.port`*:: +*`url.path`*:: + -- -type: integer - -example: 443 - -Port of the request, such as 443. +type: keyword +Path of the request, such as "/search". -- -*`url.path`*:: +*`url.port`*:: + -- -type: keyword +type: long -Path of the request, such as "/search". +example: 443 +Port of the request, such as 443. -- @@ -3687,17 +3848,17 @@ type: keyword The query field describes the query string of the request, such as "q=elasticsearch". The `?` is excluded from the query string. If a URL contains no `?`, there is no query field. If there is a `?` but no query, the query field exists with an empty string. The `exists` query can be used to differentiate between the two cases. - -- -*`url.fragment`*:: +*`url.scheme`*:: + -- type: keyword -Portion of the url after the `#`, such as "top". -The `#` is not part of the fragment. +example: https +Scheme of the request, such as "https". +Note: The `:` is not part of the scheme. -- @@ -3708,67 +3869,50 @@ type: keyword Username of the request. - --- - -*`url.password`*:: -+ --- -type: keyword - -Password of the request. - - -- [float] == user fields -The user fields describe information about the user that is relevant to the event. Fields can have one entry or multiple entries. If a user has more than one id, provide an array that includes all of them. - +The user fields describe information about the user that is relevant to the event. +Fields can have one entry or multiple entries. If a user has more than one id, provide an array that includes all of them. -*`user.id`*:: +*`user.email`*:: + -- type: keyword -One or multiple unique identifiers of the user. - +User email address. -- -*`user.name`*:: +*`user.full_name`*:: + -- type: keyword -example: albert - -Short name or login of the user. +example: Albert Einstein +User's full name, if available. -- -*`user.full_name`*:: +*`user.group.id`*:: + -- type: keyword -example: Albert Einstein - -User's full name, if available. - +Unique identifier for the group on the system/platform. -- -*`user.email`*:: +*`user.group.name`*:: + -- type: keyword -User email address. - +Name of the group. -- @@ -3780,52 +3924,43 @@ type: keyword Unique user hash to correlate information for a user in anonymized form. Useful if `user.id` or `user.name` contain confidential information and cannot be used. - -- -[float] -== group fields - -The group fields are meant to represent groups that are relevant to the event. - - - -*`user.group.id`*:: +*`user.id`*:: + -- type: keyword -Unique identifier for the group on the system/platform. - +One or multiple unique identifiers of the user. -- -*`user.group.name`*:: +*`user.name`*:: + -- type: keyword -Name of the group. +example: albert +Short name or login of the user. -- [float] == user_agent fields -The user_agent fields normally come from a browser request. They often show up in web service logs coming from the parsed user agent string. +The user_agent fields normally come from a browser request. +They often show up in web service logs coming from the parsed user agent string. - -*`user_agent.original`*:: +*`user_agent.device.name`*:: + -- type: keyword -example: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1 - -Unparsed version of the user_agent. +example: iPhone +Name of the device. -- @@ -3838,85 +3973,71 @@ example: Safari Name of the user agent. - -- -*`user_agent.version`*:: +*`user_agent.original`*:: + -- type: keyword -example: 12.0 - -Version of the user agent. +example: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1 +Unparsed version of the user_agent. -- -*`user_agent.device.name`*:: +*`user_agent.os.family`*:: + -- type: keyword -example: iPhone - -Name of the device. +example: debian +OS family (such as redhat, debian, freebsd, windows). -- -[float] -== os fields - -The OS fields contain information about the operating system. - - - -*`user_agent.os.platform`*:: +*`user_agent.os.full`*:: + -- type: keyword -example: darwin - -Operating system platform (such centos, ubuntu, windows). +example: Mac OS Mojave +Operating system name, including the version or code name. -- -*`user_agent.os.name`*:: +*`user_agent.os.kernel`*:: + -- type: keyword -example: Mac OS X - -Operating system name, without the version. +example: 4.4.0-112-generic +Operating system kernel version as a raw string. -- -*`user_agent.os.full`*:: +*`user_agent.os.name`*:: + -- type: keyword -example: Mac OS Mojave - -Operating system name, including the version or code name. +example: Mac OS X +Operating system name, without the version. -- -*`user_agent.os.family`*:: +*`user_agent.os.platform`*:: + -- type: keyword -example: debian - -OS family (such as redhat, debian, freebsd, windows). +example: darwin +Operating system platform (such centos, ubuntu, windows). -- @@ -3929,28 +4050,16 @@ example: 10.14.1 Operating system version as a raw string. - --- - -*`user_agent.os.kernel`*:: -+ --- -type: keyword - -example: 4.4.0-112-generic - -Operating system kernel version as a raw string. - - -- -*`agent.hostname`*:: +*`user_agent.version`*:: + -- type: keyword -Hostname of the agent. +example: 12.0 +Version of the user agent. -- diff --git a/journalbeat/include/fields.go b/journalbeat/include/fields.go index 94d7157dc111..a0a0f320fafb 100644 --- a/journalbeat/include/fields.go +++ b/journalbeat/include/fields.go @@ -32,5 +32,5 @@ func init() { // AssetFieldsYml returns asset data. // This is the base64 encoded gzipped contents of fields.yml. func AssetFieldsYml() string { - return "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" + return "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" } diff --git a/libbeat/_meta/fields.common.yml b/libbeat/_meta/fields.common.yml index a680539de4ea..56ea5b759240 100644 --- a/libbeat/_meta/fields.common.yml +++ b/libbeat/_meta/fields.common.yml @@ -4,6 +4,10 @@ description: > Contains common beat fields available in all event types. fields: + - name: agent.hostname + type: keyword + description: Hostname of the agent. + - name: beat.timezone type: alias path: event.timezone diff --git a/libbeat/_meta/fields.ecs.yml b/libbeat/_meta/fields.ecs.yml index d32aa16c5793..2ecff3ead872 100644 --- a/libbeat/_meta/fields.ecs.yml +++ b/libbeat/_meta/fields.ecs.yml @@ -1,2248 +1,2131 @@ +# WARNING! Do not edit this file directly, it was generated by the ECS project, +# based on ECS version 1.0.0. +# Please visit https://github.com/elastic/ecs to suggest changes to ECS fields. + - key: ecs title: ECS - description: > - ECS fields. + description: ECS Fields. fields: + - name: '@timestamp' + level: core + required: true + type: date + description: 'Date/time when the event originated. + + This is the date/time extracted from the event, typically representing when + the event was generated by the source. + + If the event source has no original timestamp, this value is typically populated + by the first time the event was received by the pipeline. + + Required field for all events.' + example: '2016-05-23T08:05:34.853Z' + - name: labels + level: core + type: object + object_type: keyword + description: 'Custom key/value pairs. + + Can be used to add meta information to events. Should not contain nested objects. + All values are stored as keyword. + + Example: `docker` and `k8s` labels.' + example: + application: foo-bar + env: production + - name: message + level: core + type: text + description: 'For log events the message field contains the log message, optimized + for viewing in a log viewer. + + For structured logs without an original message field, other fields can be concatenated + to form a human-readable summary of the event. + + If multiple messages exist, they can be combined into one message.' + example: Hello World + - name: tags + level: core + type: keyword + ignore_above: 1024 + description: List of keywords used to tag each event. + example: '["production", "env2"]' + - name: agent + title: Agent + group: 2 + description: 'The agent fields contain the data about the software entity, if + any, that collects, detects, or observes events on a host, or takes measurements + on a host. + + Examples include Beats. Agents may also run on observers. ECS agent.* fields + shall be populated with details of the agent running on the host or observer + where the event happened or the measurement was taken.' + footnote: 'Examples: In the case of Beats for logs, the agent.name is filebeat. + For APM, it is the agent running in the app/service. The agent information does + not change if data is sent through queuing systems like Kafka, Redis, or processing + systems such as Logstash or APM Server.' + type: group + fields: + - name: ephemeral_id + level: extended + type: keyword + ignore_above: 1024 + description: 'Ephemeral identifier of this agent (if one exists). - - name: "@timestamp" - type: date + This id normally changes across restarts, but `agent.id` does not.' + example: 8a4f500f + - name: id level: core - required: true - example: "2016-05-23T08:05:34.853Z" - description: > - Date/time when the event originated. + type: keyword + ignore_above: 1024 + description: 'Unique identifier of this agent (if one exists). - For log events this is the date/time when the event was generated, and - not when it was read. + Example: For Beats this would be beat.id.' + example: 8a4f500d + - name: name + level: core + type: keyword + ignore_above: 1024 + description: 'Custom name of the agent. - Required field for all events. + This is a name that can be given to an agent. This can be helpful if for example + two Filebeat instances are running on the same host but a human readable separation + is needed on which Filebeat instance data is coming from. - - name: tags + If no name is given, the name is often left empty.' + example: foo + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'Type of the agent. + + The agent type stays always the same and should be given by the agent used. + In case of Filebeat the agent would always be Filebeat also if two Filebeat + instances are run on the same machine.' + example: filebeat + - name: version + level: core + type: keyword + ignore_above: 1024 + description: Version of the agent. + example: 6.0.0-rc2 + - name: client + title: Client + group: 2 + description: 'A client is defined as the initiator of a network connection for + events regarding sessions, connections, or bidirectional flow records. + + For TCP events, the client is the initiator of the TCP connection that sends + the SYN packet(s). For other protocols, the client is generally the initiator + or requestor in the network transaction. Some systems use the term "originator" + to refer the client in TCP connections. The client fields describe details about + the system acting as the client in the network event. Client fields are usually + populated in conjunction with server fields. Client fields are generally not + populated for packet-level events. + + Client / server representations can add semantic context to an exchange, which + is helpful to visualize the data in certain situations. If your context falls + in that category, you should still ensure that source and destination are filled + appropriately.' + type: group + fields: + - name: address + level: extended + type: keyword + ignore_above: 1024 + description: 'Some event client addresses are defined ambiguously. The event + will sometimes list an IP, a domain or a unix socket. You should always store + the raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one + it is.' + - name: bytes + level: core + type: long + description: Bytes sent from the client to the server. + example: 184 + - name: domain level: core type: keyword - example: "[\"production\", \"env2\"]" - description: > - List of keywords used to tag each event. + ignore_above: 1024 + description: Client domain. + - name: geo.city_name + level: core + type: keyword + ignore_above: 1024 + description: City name. + example: Montreal + - name: geo.continent_name + level: core + type: keyword + ignore_above: 1024 + description: Name of the continent. + example: North America + - name: geo.country_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Country ISO code. + example: CA + - name: geo.country_name + level: core + type: keyword + ignore_above: 1024 + description: Country name. + example: Canada + - name: geo.location + level: core + type: geo_point + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + - name: geo.name + level: extended + type: keyword + ignore_above: 1024 + description: 'User-defined description of a location, at the level of granularity + they care about. - - name: labels + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + - name: geo.region_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Region ISO code. + example: CA-QC + - name: geo.region_name + level: core + type: keyword + ignore_above: 1024 + description: Region name. + example: Quebec + - name: ip + level: core + type: ip + description: 'IP address of the client. + + Can be one or multiple IPv4 or IPv6 addresses.' + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: MAC address of the client. + - name: packets + level: core + type: long + description: Packets sent from the client to the server. + example: 12 + - name: port + level: core + type: long + description: Port of the client. + - name: user.email + level: extended + type: keyword + ignore_above: 1024 + description: User email address. + - name: user.full_name + level: extended + type: keyword + ignore_above: 1024 + description: User's full name, if available. + example: Albert Einstein + - name: user.group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + - name: user.group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + - name: user.hash + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + - name: user.id + level: core + type: keyword + ignore_above: 1024 + description: One or multiple unique identifiers of the user. + - name: user.name + level: core + type: keyword + ignore_above: 1024 + description: Short name or login of the user. + example: albert + - name: cloud + title: Cloud + group: 2 + description: Fields related to the cloud or infrastructure the events are coming + from. + footnote: 'Examples: If Metricbeat is running on an EC2 host and fetches data + from its host, the cloud info contains the data about this machine. If Metricbeat + runs on a remote machine outside the cloud and fetches data from a service running + in the cloud, the field contains cloud data from the machine the service is + running on.' + type: group + fields: + - name: account.id + level: extended + type: keyword + ignore_above: 1024 + description: 'The cloud account or organization id used to identify different + entities in a multi-tenant environment. + + Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.' + example: 666777888999 + - name: availability_zone + level: extended + type: keyword + ignore_above: 1024 + description: Availability zone in which this host is running. + example: us-east-1c + - name: instance.id + level: extended + type: keyword + ignore_above: 1024 + description: Instance ID of the host machine. + example: i-1234567890abcdef0 + - name: instance.name + level: extended + type: keyword + ignore_above: 1024 + description: Instance name of the host machine. + - name: machine.type + level: extended + type: keyword + ignore_above: 1024 + description: Machine type of the host machine. + example: t2.medium + - name: provider + level: extended + type: keyword + ignore_above: 1024 + description: Name of the cloud provider. Example values are aws, azure, gcp, + or digitalocean. + example: aws + - name: region + level: extended + type: keyword + ignore_above: 1024 + description: Region in which this host is running. + example: us-east-1 + - name: container + title: Container + group: 2 + description: 'Container fields are used for meta information about the specific + container that is the source of information. + + These fields help correlate data based containers from any runtime.' + type: group + fields: + - name: id level: core + type: keyword + ignore_above: 1024 + description: Unique container id. + - name: image.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the image the container was built on. + - name: image.tag + level: extended + type: keyword + ignore_above: 1024 + description: Container image tag. + - name: labels + level: extended type: object - example: {env: production, application: foo-bar} - description: > - Key/value pairs. + object_type: keyword + description: Image labels. + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Container name. + - name: runtime + level: extended + type: keyword + ignore_above: 1024 + description: Runtime managing this container. + example: docker + - name: destination + title: Destination + group: 2 + description: 'Destination fields describe details about the destination of a packet/event. + + Destination fields are usually populated in conjunction with source fields.' + type: group + fields: + - name: address + level: extended + type: keyword + ignore_above: 1024 + description: 'Some event destination addresses are defined ambiguously. The + event will sometimes list an IP, a domain or a unix socket. You should always + store the raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one + it is.' + - name: bytes + level: core + type: long + description: Bytes sent from the destination to the source. + example: 184 + - name: domain + level: core + type: keyword + ignore_above: 1024 + description: Destination domain. + - name: geo.city_name + level: core + type: keyword + ignore_above: 1024 + description: City name. + example: Montreal + - name: geo.continent_name + level: core + type: keyword + ignore_above: 1024 + description: Name of the continent. + example: North America + - name: geo.country_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Country ISO code. + example: CA + - name: geo.country_name + level: core + type: keyword + ignore_above: 1024 + description: Country name. + example: Canada + - name: geo.location + level: core + type: geo_point + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + - name: geo.name + level: extended + type: keyword + ignore_above: 1024 + description: 'User-defined description of a location, at the level of granularity + they care about. - Can be used to add meta information to events. Should not contain nested - objects. All values are stored as keyword. + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. - Example: `docker` and `k8s` labels. + Not typically used in automated geolocation.' + example: boston-dc + - name: geo.region_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Region ISO code. + example: CA-QC + - name: geo.region_name + level: core + type: keyword + ignore_above: 1024 + description: Region name. + example: Quebec + - name: ip + level: core + type: ip + description: 'IP address of the destination. + Can be one or multiple IPv4 or IPv6 addresses.' + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: MAC address of the destination. + - name: packets + level: core + type: long + description: Packets sent from the destination to the source. + example: 12 + - name: port + level: core + type: long + description: Port of the destination. + - name: user.email + level: extended + type: keyword + ignore_above: 1024 + description: User email address. + - name: user.full_name + level: extended + type: keyword + ignore_above: 1024 + description: User's full name, if available. + example: Albert Einstein + - name: user.group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + - name: user.group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + - name: user.hash + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + - name: user.id + level: core + type: keyword + ignore_above: 1024 + description: One or multiple unique identifiers of the user. + - name: user.name + level: core + type: keyword + ignore_above: 1024 + description: Short name or login of the user. + example: albert + - name: ecs + title: ECS + group: 2 + description: Meta-information specific to ECS. + type: group + fields: + - name: version + level: core + required: true + type: keyword + ignore_above: 1024 + description: 'ECS version this event conforms to. `ecs.version` is a required + field and must exist in all events. + + When querying across multiple indices -- which may conform to slightly different + ECS versions -- this field lets integrations adjust to the schema version + of the events.' + example: 1.0.0 + - name: error + title: Error + group: 2 + description: 'These fields can represent errors of any kind. + + Use them for errors that happen while fetching events or in cases where the + event itself contains an error.' + type: group + fields: + - name: code + level: core + type: keyword + ignore_above: 1024 + description: Error code describing the error. + - name: id + level: core + type: keyword + ignore_above: 1024 + description: Unique identifier for the error. - name: message level: core type: text - example: "Hello World" - description: > - For log events the message field contains the log message. - - In other use cases the message field can be used to concatenate - different values which are then freely searchable. If multiple - messages exist, they can be combined into one message. - - - name: agent - title: Agent - group: 2 - description: > - The agent fields contain the data about the software entity, if any, that collects, detects, or observes events on a host, or takes measurements on a host. Examples include Beats. Agents may also run on observers. ECS agent.* fields shall be populated with details of the agent running on the host or observer where the event happened or the measurement was taken. - footnote: > - Examples: In the case of Beats for logs, the agent.name is filebeat. For APM, it is the - agent running in the app/service. The agent information does not change if - data is sent through queuing systems like Kafka, Redis, or processing systems - such as Logstash or APM Server. - type: group - fields: - - - name: version - level: core - type: keyword - description: > - Version of the agent. - - example: 6.0.0-rc2 - - - name: name - level: core - type: keyword - description: > - Name of the agent. - - This is a name that can be given to an agent. This can be helpful if - for example two Filebeat instances are running on the same host - but a human readable separation is needed on which Filebeat instance - data is coming from. - - If no name is given, the name is often left empty. - example: foo - - - name: type - level: core - type: keyword - description: > - Type of the agent. - - The agent type stays always the same and should be given by the agent used. - In case of Filebeat the agent would always be Filebeat also if two - Filebeat instances are run on the same machine. - example: filebeat - - - name: id - level: core - type: keyword - description: > - Unique identifier of this agent (if one exists). - - Example: For Beats this would be beat.id. - example: 8a4f500d - - - name: ephemeral_id - level: extended - type: keyword - description: > - Ephemeral identifier of this agent (if one exists). - - This id normally changes across restarts, but `agent.id` does not. - example: 8a4f500f - - - - name: client - title: Client - group: 2 - description: > - A client is defined as the initiator of a network connection for events regarding sessions, connections, or bidirectional flow records. For TCP events, the client is the initiator of the TCP connection that sends the SYN packet(s). For other protocols, the client is generally the initiator or requestor in the network transaction. Some systems use the term "originator" to refer the client in TCP connections. The client fields describe details about the system acting as the client in the network event. Client fields are usually populated in conjunction with server fields. Client fields are generally not populated for packet-level events. - - Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. - type: group - fields: - - - name: address - level: extended - type: keyword - description: > - Some event client addresses are defined ambiguously. The event will - sometimes list an IP, a domain or a unix socket. You should always - store the raw address in the `.address` field. - - Then it should be duplicated to `.ip` or `.domain`, depending on which - one it is. - - - name: ip - level: core - type: ip - description: > - IP address of the client. - - Can be one or multiple IPv4 or IPv6 addresses. - - - name: port - level: core - type: long - description: > - Port of the client. - - - name: mac - level: core - type: keyword - description: > - MAC address of the client. - - - name: domain - level: core - type: keyword - description: > - Client domain. - - # Metrics - - name: bytes - level: core - type: long - format: bytes - example: 184 - description: > - Bytes sent from the client to the server. - - - name: packets - level: core - type: long - example: 12 - description: > - Packets sent from the client to the server. - - - name: geo - title: Geo - group: 2 - description: > - Geo fields can carry data about a specific location related to an event - or geo information derived from an IP field. - type: group - fields: - - - name: location - level: core - type: geo_point - description: > - Longitude and latitude. - example: '{ "lon": -73.614830, "lat": 45.505918 }' - - - name: continent_name - level: core - type: keyword - description: > - Name of the continent. - example: North America - - - name: country_name - level: core - type: keyword - description: > - Country name. - example: Canada - - - name: region_name - level: core - type: keyword - description: > - Region name. - example: Quebec - - - name: city_name - level: core - type: keyword - description: > - City name. - example: Montreal - - - name: country_iso_code - level: core - type: keyword - description: > - Country ISO code. - example: CA - - - name: region_iso_code - level: core - type: keyword - description: > - Region ISO code. - example: CA-QC - - - name: name - level: extended - type: keyword - description: > - User-defined description of a location, at the level of granularity they care about. - - Could be the name of their data centers, the floor number, if this describes - a local physical entity, city names. - - Not typically used in automated geolocation. - example: boston-dc - - - name: cloud - title: Cloud - group: 2 - description: > - Fields related to the cloud or infrastructure the events - are coming from. - footnote: > - Examples: If Metricbeat is running on an EC2 host and fetches data from its - host, the cloud info contains the data about this machine. If Metricbeat - runs on a remote machine outside the cloud and fetches data from a service - running in the cloud, the field contains cloud data from the machine the - service is running on. - type: group - fields: - - name: provider - level: extended - example: ec2 - type: keyword - description: > - Name of the cloud provider. Example values are ec2, gce, or - digitalocean. - - - name: availability_zone - level: extended - example: us-east-1c - type: keyword - description: > - Availability zone in which this host is running. - - - name: region - level: extended - type: keyword - example: us-east-1 - description: > - Region in which this host is running. - - - name: instance.id - level: extended - type: keyword - example: i-1234567890abcdef0 - description: > - Instance ID of the host machine. - - - name: instance.name - level: extended - type: keyword - description: > - Instance name of the host machine. - - - name: machine.type - level: extended - type: keyword - example: t2.medium - description: > - Machine type of the host machine. - - - name: account.id - level: extended - type: keyword - example: 666777888999 - description: > - The cloud account or organization id used to identify different - entities in a multi-tenant environment. - - Examples: AWS account id, Google Cloud ORG Id, or other unique - identifier. - - - name: container - title: Container - group: 2 - description: > - Container fields are used for meta information about the specific container - that is the source of information. These fields help correlate data based - containers from any runtime. - type: group - fields: - - - name: runtime - level: extended - type: keyword - description: > - Runtime managing this container. - example: docker - - - name: id - level: core - type: keyword - description: > - Unique container id. - - - name: image.name - level: extended - type: keyword - description: > - Name of the image the container was built on. - - - name: image.tag - level: extended - type: keyword - description: > - Container image tag. - - - name: name - level: extended - type: keyword - description: > - Container name. - - - name: labels - level: extended - type: object - object_type: keyword - description: > - Image labels. - - - name: destination - title: Destination - group: 2 - description: > - Destination fields describe details about the destination of a packet/event. - Destination fields are usually populated in conjunction with source fields. - type: group - fields: - - - name: address - level: extended - type: keyword - description: > - Some event destination addresses are defined ambiguously. The event will - sometimes list an IP, a domain or a unix socket. You should always - store the raw address in the `.address` field. - - Then it should be duplicated to `.ip` or `.domain`, depending on which - one it is. - - - name: ip - level: core - type: ip - description: > - IP address of the destination. - - Can be one or multiple IPv4 or IPv6 addresses. - - - name: port - level: core - type: long - description: > - Port of the destination. - - - name: mac - level: core - type: keyword - description: > - MAC address of the destination. - - - name: domain - level: core - type: keyword - description: > - Destination domain. - - # Metrics - - name: bytes - level: core - type: long - format: bytes - example: 184 - description: > - Bytes sent from the destination to the source. - - - name: packets - level: core - type: long - example: 12 - description: > - Packets sent from the destination to the source. - - - name: geo - title: Geo - group: 2 - description: > - Geo fields can carry data about a specific location related to an event - or geo information derived from an IP field. - type: group - fields: - - - name: location - level: core - type: geo_point - description: > - Longitude and latitude. - example: '{ "lon": -73.614830, "lat": 45.505918 }' - - - name: continent_name - level: core - type: keyword - description: > - Name of the continent. - example: North America - - - name: country_name - level: core - type: keyword - description: > - Country name. - example: Canada - - - name: region_name - level: core - type: keyword - description: > - Region name. - example: Quebec - - - name: city_name - level: core - type: keyword - description: > - City name. - example: Montreal - - - name: country_iso_code - level: core - type: keyword - description: > - Country ISO code. - example: CA - - - name: region_iso_code - level: core - type: keyword - description: > - Region ISO code. - example: CA-QC - - - name: name - level: extended - type: keyword - description: > - User-defined description of a location, at the level of granularity they care about. - - Could be the name of their data centers, the floor number, if this describes - a local physical entity, city names. - - Not typically used in automated geolocation. - example: boston-dc - - - name: ecs - title: ECS - group: 2 - description: > - Meta-information specific to ECS. - type: group - fields: - - - name: version - level: core - type: keyword - required: true - description: > - ECS version this event conforms to. `ecs.version` is a required field and must exist in all events. - - When querying across multiple indices -- which may conform to slightly - different ECS versions -- this field lets integrations adjust to the - schema version of the events. - - The current version is 1.0.0-beta2 . - example: 1.0.0-beta2 - - - name: error - title: Error - group: 2 - description: > - These fields can represent errors of any kind. Use them for errors that - happen while fetching events or in cases where the event itself contains an error. - - type: group - fields: - - name: id - level: core - type: keyword - description: > - Unique identifier for the error. - - - name: message - level: core - type: text - description: > - Error message. - - - name: code - level: core - type: keyword - description: > - Error code describing the error. - - - name: event - title: Event - group: 2 - description: > - The event fields are used for context information about the log or metric event itself. A log is defined as an event containing details of something that happened. Log events must include the time at which the thing happened. Examples of log events include a process starting on a host, a network packet being sent from a source to a destination, or a network connection between a client and a server being initiated or closed. A metric is defined as an event containing one or more numerical or categorical measurements and the time at which the measurement was taken. Examples of metric events include memory pressure measured on a host, or vulnerabilities measured on a scanned host. - type: group - fields: - - - name: id - level: core - type: keyword - description: > - Unique ID to describe the event. - example: 8a4f500d - - - name: kind - level: extended - type: keyword - description: > - The kind of the event. - - This gives information about what type of information the event - contains, without being specific to the contents of the event. Examples - are `event`, `state`, `alarm`. Warning: In future versions of ECS, we - plan to provide a list of acceptable values for this field, please use - with caution. - example: state - - - name: category - level: core - type: keyword - description: > - Event category. - - This contains high-level information about the contents of the event. It - is more generic than `event.action`, in the sense that typically a - category contains multiple actions. Warning: In future versions of ECS, - we plan to provide a list of acceptable values for this field, please - use with caution. - - example: user-management - - - name: action - level: core - type: keyword - description: > - The action captured by the event. - - This describes the information in the event. It is more specific than - `event.category`. Examples are `group-add`, `process-started`, - `file-created`. The value is normally defined by the implementer. - example: user-password-change - - - name: outcome - level: extended - type: keyword - description: > - The outcome of the event. - - If the event describes an action, this fields contains the outcome of - that action. Examples outcomes are `success` and `failure`. Warning: In - future versions of ECS, we plan to provide a list of acceptable values - for this field, please use with caution. - - example: success - - - name: type - level: core - type: keyword - description: > - Reserved for future usage. - - Please avoid using this field for user data. - - - name: module - level: core - type: keyword - description: > - Name of the module this data is coming from. - - This information is coming from the modules used in Beats or Logstash. - example: mysql - - - name: dataset - level: core - type: keyword - description: > - Name of the dataset. - - The concept of a `dataset` (fileset / metricset) is used in Beats as a - subset of modules. It contains the information which is currently - stored in metricset.name and metricset.module or fileset.name. - example: stats - - - name: severity - level: core - type: long - example: "7" - description: > - Severity describes the severity of the event. What the different - severity values mean can very different between use cases. It's up to - the implementer to make sure severities are consistent across events. - - - name: original - level: core - type: keyword - # Unfortunately this example is not shown correctly yet as | do not work - # in tables well - # Is | is the representation of | it works except for cases where - # used ticks. - example: "Sep 19 08:26:10 host CEF:0|Security| - threatmanager|1.0|100| - worm successfully stopped|10|src=10.0.0.1 - dst=2.1.2.2spt=1232" - description: > - Raw text message of entire event. Used to demonstrate log integrity. - - This field is not indexed and doc_values are disabled. It cannot be - searched, but it can be retrieved from `_source`. - index: false - doc_values: false - - - name: hash - level: extended - type: keyword - example: "123456789012345678901234567890ABCD" - description: > - Hash (perhaps logstash fingerprint) of raw field to be able to - demonstrate log integrity. - - - name: duration - level: core - type: long - format: duration - input_format: nanoseconds - description: > - Duration of the event in nanoseconds. - - If event.start and event.end are known this value should be the - difference between the end and start time. - - - name: timezone - level: extended - type: keyword - description: > - This field should be populated when the event's timestamp does not include - timezone information already (e.g. default Syslog timestamps). It's - optional otherwise. - - Acceptable timezone formats are: a canonical ID (e.g. "Europe/Amsterdam"), - abbreviated (e.g. "EST") or an HH:mm differential (e.g. "-05:00"). - - - name: created - level: core - type: date - description: > - event.created contains the date when the event was created. - - This timestamp is distinct from @timestamp in that @timestamp contains - the processed timestamp. For logs these two timestamps can be different - as the timestamp in the log line and when the event is read for example - by Filebeat are not identical. `@timestamp` must contain the timestamp - extracted from the log line, event.created when the log line is read. - The same could apply to package capturing where @timestamp contains the - timestamp extracted from the network package and event.created when the - event was created. - - In case the two timestamps are identical, @timestamp should be used. - - - name: start - level: extended - type: date - description: > - event.start contains the date when the event started or when the - activity was first observed. - - - name: end - level: extended - type: date - description: > - event.end contains the date when the event ended or when the activity - was last observed. - - - name: risk_score - level: core - type: float - description: > - Risk score or priority of the event (e.g. security solutions). - Use your system's original value here. - - - name: risk_score_norm - level: extended - type: float - description: > - Normalized risk score or priority of the event, on a scale of 0 to 100. - - This is mainly useful if you use more than one system that assigns - risk scores, and you want to see a normalized value across all systems. - - - name: file - group: 2 - title: File - description: > - A file is defined as a set of information that has been created on, or has existed on a filesystem. File objects can be associated with host events, network events, and/or file events (e.g., those produced by File Integrity Monitoring [FIM] products or services). File fields provide details about the affected file associated with the event or metric. - type: group - fields: - - - name: path - level: extended - type: keyword - description: Path to the file. - - - name: target_path - level: extended - type: keyword - description: Target path for symlinks. - - - name: extension - level: extended - type: keyword - description: > - File extension. - - This should allow easy filtering by file extensions. - example: png - - - name: type - level: extended - type: keyword - description: File type (file, dir, or symlink). - - - name: device - level: extended - type: keyword - description: Device that is the source of the file. - - - name: inode - level: extended - type: keyword - description: Inode representing the file in the filesystem. - - - name: uid - level: extended - type: keyword - description: > - The user ID (UID) or security identifier (SID) of the file owner. - - - name: owner - level: extended - type: keyword - description: File owner's username. - - - name: gid - level: extended - type: keyword - description: Primary group ID (GID) of the file. - - - name: group - level: extended - type: keyword - description: Primary group name of the file. - - - name: mode - level: extended - type: keyword - example: 0640 - description: Mode of the file in octal representation. - - - name: size - level: extended - type: long - format: bytes - description: File size in bytes (field is only added when `type` is - `file`). - - - name: mtime - level: extended - type: date - description: Last time file content was modified. - - - name: ctime - level: extended - type: date - description: Last time file metadata changed. + description: Error message. + - name: event + title: Event + group: 2 + description: 'The event fields are used for context information about the log + or metric event itself. + + A log is defined as an event containing details of something that happened. + Log events must include the time at which the thing happened. Examples of log + events include a process starting on a host, a network packet being sent from + a source to a destination, or a network connection between a client and a server + being initiated or closed. A metric is defined as an event containing one or + more numerical or categorical measurements and the time at which the measurement + was taken. Examples of metric events include memory pressure measured on a host, + or vulnerabilities measured on a scanned host.' + type: group + fields: + - name: action + level: core + type: keyword + ignore_above: 1024 + description: 'The action captured by the event. + + This describes the information in the event. It is more specific than `event.category`. + Examples are `group-add`, `process-started`, `file-created`. The value is + normally defined by the implementer.' + example: user-password-change + - name: category + level: core + type: keyword + ignore_above: 1024 + description: 'Event category. + + This contains high-level information about the contents of the event. It is + more generic than `event.action`, in the sense that typically a category contains + multiple actions. Warning: In future versions of ECS, we plan to provide a + list of acceptable values for this field, please use with caution.' + example: user-management + - name: created + level: core + type: date + description: 'event.created contains the date/time when the event was first + read by an agent, or by your pipeline. + + This field is distinct from @timestamp in that @timestamp typically contain + the time extracted from the original event. + + In most situations, these two timestamps will be slightly different. The difference + can be used to calculate the delay between your source generating an event, + and the time when your agent first processed it. This can be used to monitor + your agent''s or pipeline''s ability to keep up with your event source. + + In case the two timestamps are identical, @timestamp should be used.' + - name: dataset + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the dataset. + + The concept of a `dataset` (fileset / metricset) is used in Beats as a subset + of modules. It contains the information which is currently stored in metricset.name + and metricset.module or fileset.name.' + example: stats + - name: duration + level: core + type: long + description: 'Duration of the event in nanoseconds. + + If event.start and event.end are known this value should be the difference + between the end and start time.' + - name: end + level: extended + type: date + description: event.end contains the date when the event ended or when the activity + was last observed. + - name: hash + level: extended + type: keyword + ignore_above: 1024 + description: Hash (perhaps logstash fingerprint) of raw field to be able to + demonstrate log integrity. + example: 123456789012345678901234567890ABCD + - name: id + level: core + type: keyword + ignore_above: 1024 + description: Unique ID to describe the event. + example: 8a4f500d + - name: kind + level: extended + type: keyword + ignore_above: 1024 + description: 'The kind of the event. + + This gives information about what type of information the event contains, + without being specific to the contents of the event. Examples are `event`, + `state`, `alarm`. Warning: In future versions of ECS, we plan to provide a + list of acceptable values for this field, please use with caution.' + example: state + - name: module + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the module this data is coming from. + This information is coming from the modules used in Beats or Logstash.' + example: mysql + - name: original + level: core + type: keyword + ignore_above: 1024 + description: 'Raw text message of entire event. Used to demonstrate log integrity. + + This field is not indexed and doc_values are disabled. It cannot be searched, + but it can be retrieved from `_source`.' + example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| + worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 + - name: outcome + level: extended + type: keyword + ignore_above: 1024 + description: 'The outcome of the event. + + If the event describes an action, this fields contains the outcome of that + action. Examples outcomes are `success` and `failure`. Warning: In future + versions of ECS, we plan to provide a list of acceptable values for this field, + please use with caution.' + example: success + - name: risk_score + level: core + type: float + description: Risk score or priority of the event (e.g. security solutions). + Use your system's original value here. + - name: risk_score_norm + level: extended + type: float + description: 'Normalized risk score or priority of the event, on a scale of + 0 to 100. + + This is mainly useful if you use more than one system that assigns risk scores, + and you want to see a normalized value across all systems.' + - name: severity + level: core + type: long + description: Severity describes the original severity of the event. What the + different severity values mean can very different between use cases. It's + up to the implementer to make sure severities are consistent across events. + example: '7' + - name: start + level: extended + type: date + description: event.start contains the date when the event started or when the + activity was first observed. + - name: timezone + level: extended + type: keyword + ignore_above: 1024 + description: 'This field should be populated when the event''s timestamp does + not include timezone information already (e.g. default Syslog timestamps). + It''s optional otherwise. + + Acceptable timezone formats are: a canonical ID (e.g. "Europe/Amsterdam"), + abbreviated (e.g. "EST") or an HH:mm differential (e.g. "-05:00").' + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'Reserved for future usage. + + Please avoid using this field for user data.' + - name: file + title: File + group: 2 + description: 'A file is defined as a set of information that has been created + on, or has existed on a filesystem. + + File objects can be associated with host events, network events, and/or file + events (e.g., those produced by File Integrity Monitoring [FIM] products or + services). File fields provide details about the affected file associated with + the event or metric.' + type: group + fields: + - name: ctime + level: extended + type: date + description: Last time file metadata changed. + - name: device + level: extended + type: keyword + ignore_above: 1024 + description: Device that is the source of the file. + - name: extension + level: extended + type: keyword + ignore_above: 1024 + description: 'File extension. + + This should allow easy filtering by file extensions.' + example: png + - name: gid + level: extended + type: keyword + ignore_above: 1024 + description: Primary group ID (GID) of the file. - name: group - title: Group - group: 2 - description: > - The group fields are meant to represent groups that are relevant to the - event. - type: group - fields: - - - name: id - level: extended - type: keyword - description: > - Unique identifier for the group on the system/platform. - - - name: name - level: extended - type: keyword - description: > - Name of the group. - - - name: host - title: Host - group: 2 - description: > - A host is defined as a general computing instance. ECS host.* fields should be populated with details about the host on which the event happened, or on which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. - type: group - fields: - - - name: hostname - level: core - type: keyword - description: > - Hostname of the host. - - It normally contains what the `hostname` command returns on the host machine. - - - name: name - level: core - type: keyword - description: > - Name of the host. - - It can contain what `hostname` returns on Unix systems, the fully - qualified domain name, or a name specified by the user. The sender - decides which value to use. - - - name: id - level: core - type: keyword - description: > - Unique host id. - - As hostname is not always unique, use values that are meaningful - in your environment. - - Example: The current usage of `beat.name`. - - name: ip - level: core - type: ip - description: > - Host ip address. - - - name: mac - level: core - type: keyword - description: > - Host mac address. - - - name: type - level: core - type: keyword - description: > - Type of host. - - For Cloud providers this can be the machine type like `t2.medium`. - If vm, this could be the container, for example, or other information - meaningful in your environment. - - - name: architecture - level: core - type: keyword - example: "x86_64" - description: > - Operating system architecture. - - - name: os - title: Operating System - group: 2 - description: > - The OS fields contain information about the operating system. - reusable: - top_level: false - expected: - - observer - - host - - user_agent - type: group - fields: - - - name: platform - level: extended - type: keyword - description: > - Operating system platform (such centos, ubuntu, windows). - example: darwin - - - name: name - level: extended - type: keyword - example: "Mac OS X" - description: > - Operating system name, without the version. - - - name: full - level: extended - type: keyword - example: "Mac OS Mojave" - description: > - Operating system name, including the version or code name. - - - name: family - level: extended - type: keyword - example: "debian" - description: > - OS family (such as redhat, debian, freebsd, windows). - - - name: version - level: extended - type: keyword - example: "10.14.1" - description: > - Operating system version as a raw string. - - - name: kernel - level: extended - type: keyword - example: "4.4.0-112-generic" - description: > - Operating system kernel version as a raw string. - - - name: geo - title: Geo - group: 2 - description: > - Geo fields can carry data about a specific location related to an event - or geo information derived from an IP field. - type: group - fields: - - - name: location - level: core - type: geo_point - description: > - Longitude and latitude. - example: '{ "lon": -73.614830, "lat": 45.505918 }' - - - name: continent_name - level: core - type: keyword - description: > - Name of the continent. - example: North America - - - name: country_name - level: core - type: keyword - description: > - Country name. - example: Canada - - - name: region_name - level: core - type: keyword - description: > - Region name. - example: Quebec - - - name: city_name - level: core - type: keyword - description: > - City name. - example: Montreal - - - name: country_iso_code - level: core - type: keyword - description: > - Country ISO code. - example: CA - - - name: region_iso_code - level: core - type: keyword - description: > - Region ISO code. - example: CA-QC - - - name: name - level: extended - type: keyword - description: > - User-defined description of a location, at the level of granularity they care about. - - Could be the name of their data centers, the floor number, if this describes - a local physical entity, city names. - - Not typically used in automated geolocation. - example: boston-dc - - - name: http - title: HTTP - group: 2 - description: > - Fields related to HTTP activity. - type: group - fields: - - - name: request.method - level: extended - type: keyword - description: > - Http request method. - - The field value must be normalized to lowercase for querying. See - "Lowercase Capitalization" in the "Implementing ECS" section. - example: get, post, put - - - name: request.body.content - level: extended - type: keyword - description: > - The full http request body. - example: Hello world - - - name: request.referrer - level: extended - type: keyword - description: > - Referrer for this HTTP request. - example: https://blog.example.com/ - - - name: response.status_code - level: extended - type: long - description: > - Http response status code. - example: 404 - - - name: response.body.content - level: extended - type: keyword - description: > - The full http response body. - example: Hello world - - - name: version - level: extended - type: keyword - description: > - Http version. - example: 1.1 - - # Metrics - - name: request.bytes - level: extended - type: long - format: bytes - description: > - Total size in bytes of the request (body and headers). - example: 1437 - - - name: request.body.bytes - level: extended - type: long - format: bytes - description: > - Size in bytes of the request body. - example: 887 - - - name: response.bytes - level: extended - type: long - format: bytes - description: > - Total size in bytes of the response (body and headers). - example: 1437 - - - name: response.body.bytes - level: extended - type: long - format: bytes - description: > - Size in bytes of the response body. - example: 887 - - - name: log - title: Log - description: > - Fields which are specific to log events. - type: group - fields: - - - name: level - level: core - type: keyword - description: > - Log level of the log event. - - Some examples are `WARN`, `ERR`, `INFO`. - example: ERR - - - name: original - level: core - type: keyword - example: "Sep 19 08:26:10 localhost My log" - index: false - doc_values: false - description: > - - This is the original log message and contains the full log message - before splitting it up in multiple parts. - - In contrast to the `message` field which can contain an extracted part - of the log message, this field contains the original, full log message. - It can have already some modifications applied like encoding or new - lines removed to clean up the log message. - - This field is not indexed and doc_values are disabled so it can't be - queried but the value can be retrieved from `_source`. - - - name: network - title: Network - group: 2 - description: > - The network is defined as the communication path over which a host or network event happens. The network.* fields should be populated with details about the network activity associated with an event. - type: group - fields: - - - name: name - level: extended - type: keyword - description: > - Name given by operators to sections of their network. - example: Guest Wifi - - - name: type - level: core - type: keyword - description: > - In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc - - The field value must be normalized to lowercase for querying. See - "Lowercase Capitalization" in the "Implementing ECS" section. - example: ipv4 - - - name: iana_number - level: extended - type: keyword - description: > - IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). - Standardized list of protocols. This aligns well with NetFlow and - sFlow related logs which use the IANA Protocol Number. - example: 6 - - - name: transport - level: core - type: keyword - description: > - Same as network.iana_number, but instead using the Keyword name of the - transport layer (udp, tcp, ipv6-icmp, etc.) - - The field value must be normalized to lowercase for querying. See - "Lowercase Capitalization" in the "Implementing ECS" section. - example: tcp - - - name: application - level: extended - type: keyword - description: > - A name given to an application. This can be arbitrarily assigned for - things like microservices, but also apply to things like skype, icq, - facebook, twitter. This would be used in situations where the vendor - or service can be decoded such as from the source/dest IP owners, - ports, or wire format. - - The field value must be normalized to lowercase for querying. See - "Lowercase Capitalization" in the "Implementing ECS" section. - example: aim - - - name: protocol - level: core - type: keyword - description: > - L7 Network protocol name. ex. http, lumberjack, transport protocol. - - The field value must be normalized to lowercase for querying. See - "Lowercase Capitalization" in the "Implementing ECS" section. - example: http - - - name: direction - level: core - type: keyword - description: > - Direction of the network traffic. - - Recommended values are: - * inbound - * outbound - * internal - * external - * unknown - - When mapping events from a host-based monitoring context, populate this - field from the host's point of view. - - When mapping events from a network or perimeter-based monitoring context, - populate this field from the point of view of your network perimeter. - example: inbound - - - name: forwarded_ip - level: core - type: ip - description: > - Host IP address when the source IP address is the proxy. - example: 192.1.1.2 - - - name: community_id - level: extended - type: keyword - description: > - A hash of source and destination IPs and ports, as well as the protocol - used in a communication. This is a tool-agnostic standard to identify - flows. - - Learn more at https://github.com/corelight/community-id-spec. - example: '1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0=' - - # Metrics - - name: bytes - level: core - type: long - format: bytes - description: > - Total bytes transferred in both directions. - - If `source.bytes` and `destination.bytes` are known, `network.bytes` is their sum. - example: 368 - - - name: packets - level: core - type: long - description: > - Total packets transferred in both directions. - - If `source.packets` and `destination.packets` are known, `network.packets` is their sum. - example: 24 - - - name: observer - title: Observer - group: 2 - description: > - An observer is defined as a special network, security, or application device used to detect, observe, or create network, security, or application-related events and metrics. This could be a custom hardware appliance or a server that has been configured to run special network, security, or application software. Examples include firewalls, intrusion detection/prevention systems, network monitoring sensors, web application firewalls, data loss prevention systems, and APM servers. The observer.* fields shall be populated with details of the system, if any, that detects, observes and/or creates a network, security, or application event or metric. Message queues and ETL components used in processing events or metrics are not considered observers in ECS. - type: group - fields: - - name: mac - level: core - type: keyword - description: > - MAC address of the observer - - name: ip - level: core - type: ip - description: > - IP address of the observer. - - name: hostname - level: core - type: keyword - description: > - Hostname of the observer. - - name: vendor - level: core - type: keyword - description: > - observer vendor information. - - name: version - level: core - type: keyword - description: > - Observer version. - - name: serial_number - level: extended - type: keyword - description: > - Observer serial number. - - name: type - level: core - type: keyword - description: > - The type of the observer the data is coming from. - - There is no predefined list of observer types. Some examples are - `forwarder`, `firewall`, `ids`, `ips`, `proxy`, `poller`, `sensor`, `APM server`. - example: firewall - - - name: os - title: Operating System - group: 2 - description: > - The OS fields contain information about the operating system. - reusable: - top_level: false - expected: - - observer - - host - - user_agent - type: group - fields: - - - name: platform - level: extended - type: keyword - description: > - Operating system platform (such centos, ubuntu, windows). - example: darwin - - - name: name - level: extended - type: keyword - example: "Mac OS X" - description: > - Operating system name, without the version. - - - name: full - level: extended - type: keyword - example: "Mac OS Mojave" - description: > - Operating system name, including the version or code name. - - - name: family - level: extended - type: keyword - example: "debian" - description: > - OS family (such as redhat, debian, freebsd, windows). - - - name: version - level: extended - type: keyword - example: "10.14.1" - description: > - Operating system version as a raw string. - - - name: kernel - level: extended - type: keyword - example: "4.4.0-112-generic" - description: > - Operating system kernel version as a raw string. - - - name: geo - title: Geo - group: 2 - description: > - Geo fields can carry data about a specific location related to an event - or geo information derived from an IP field. - type: group - fields: - - - name: location - level: core - type: geo_point - description: > - Longitude and latitude. - example: '{ "lon": -73.614830, "lat": 45.505918 }' - - - name: continent_name - level: core - type: keyword - description: > - Name of the continent. - example: North America - - - name: country_name - level: core - type: keyword - description: > - Country name. - example: Canada - - - name: region_name - level: core - type: keyword - description: > - Region name. - example: Quebec - - - name: city_name - level: core - type: keyword - description: > - City name. - example: Montreal - - - name: country_iso_code - level: core - type: keyword - description: > - Country ISO code. - example: CA - - - name: region_iso_code - level: core - type: keyword - description: > - Region ISO code. - example: CA-QC - - - name: name - level: extended - type: keyword - description: > - User-defined description of a location, at the level of granularity they care about. - - Could be the name of their data centers, the floor number, if this describes - a local physical entity, city names. - - Not typically used in automated geolocation. - example: boston-dc - - - name: organization - title: Organization - group: 2 - description: > - The organization fields enrich data with information about the company or entity - the data is associated with. These fields help you arrange or filter data stored in an index by one or multiple - organizations. - type: group - fields: - - - name: name - level: extended - type: keyword - description: > - Organization name. - - - name: id - level: extended - type: keyword - description: > - Unique identifier for the organization. - - name: os - title: Operating System - group: 2 - description: > - The OS fields contain information about the operating system. - reusable: - top_level: false - expected: - - observer - - host - - user_agent - type: group - fields: - - - name: platform - level: extended - type: keyword - description: > - Operating system platform (such centos, ubuntu, windows). - example: darwin - - - name: name - level: extended - type: keyword - example: "Mac OS X" - description: > - Operating system name, without the version. - - - name: full - level: extended - type: keyword - example: "Mac OS Mojave" - description: > - Operating system name, including the version or code name. - - - name: family - level: extended - type: keyword - example: "debian" - description: > - OS family (such as redhat, debian, freebsd, windows). - - - name: version - level: extended - type: keyword - example: "10.14.1" - description: > - Operating system version as a raw string. - - - name: kernel - level: extended - type: keyword - example: "4.4.0-112-generic" - description: > - Operating system kernel version as a raw string. - - - name: process - title: Process - group: 2 - description: > - These fields contain information about a process. - These fields can help you correlate metrics information with a process id/name - from a log message. The `process.pid` often stays in the metric itself and is - copied to the global field for correlation. - type: group - fields: - - - name: pid - level: core - type: long - description: > - Process id. - exmple: ssh - - - name: name - level: extended - type: keyword - description: > - Process name. - - Sometimes called program name or similar. - example: ssh - - - name: ppid - level: extended - type: long - description: > - Process parent id. - - - name: args - level: extended - type: keyword - description: > - Process arguments. - - May be filtered to protect sensitive information. - example: ["ssh", "-l", "user", "10.0.0.16"] - - - name: executable - level: extended - type: keyword - description: > - Absolute path to the process executable. - example: /usr/bin/ssh - - - name: title - level: extended - type: keyword - description: > - Process title. - - The proctitle, some times the same as process name. Can also be different: - for example a browser setting its title to the web page currently opened. - - - name: thread.id - level: extended - type: long - example: 4242 - description: > - Thread ID. - - - name: start - level: extended - type: date - example: "2016-05-23T08:05:34.853Z" - description: > - The time the process started. - - - name: working_directory - level: extended - type: keyword - example: /home/alice - description: > - The working directory of the process. - - - name: related - title: Related - group: 2 - description: > - This field set is meant to facilitate pivoting around a piece of data. - Some pieces of information can be seen in many places in ECS. To facilitate - searching for them, append values to their corresponding field in - `related.`. - A concrete example is IP addresses, which can be under host, observer, source, destination, client, server, and network.forwarded_ip. If you append all IPs to `related.ip`, you can then search for a given IP trivially, no matter where it appeared, by querying `related.ip:a.b.c.d`. - type: group - fields: - - - name: ip - level: extended - type: ip - description: > - All of the IPs seen on your event. - - - name: server - title: Server - group: 2 - description: > - A Server is defined as the responder in a network connection for events regarding sessions, connections, or bidirectional flow records. For TCP events, the server is the receiver of the initial SYN packet(s) of the TCP connection. For other protocols, the server is generally the responder in the network transaction. Some systems actually use the term "responder" to refer the server in TCP connections. The server fields describe details about the system acting as the server in the network event. Server fields are usually populated in conjunction with client fields. Server fields are generally not populated for packet-level events. - - Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. - type: group - fields: - - - name: address - level: extended - type: keyword - description: > - Some event server addresses are defined ambiguously. The event will - sometimes list an IP, a domain or a unix socket. You should always - store the raw address in the `.address` field. - - Then it should be duplicated to `.ip` or `.domain`, depending on which - one it is. - - - name: ip - level: core - type: ip - description: > - IP address of the server. - - Can be one or multiple IPv4 or IPv6 addresses. - - - name: port - level: core - type: long - description: > - Port of the server. - - - name: mac - level: core - type: keyword - description: > - MAC address of the server. - - - name: domain - level: core - type: keyword - description: > - Server domain. - - # Metrics - - name: bytes - level: core - type: long - format: bytes - example: 184 - description: > - Bytes sent from the server to the client. - - - name: packets - level: core - type: long - example: 12 - description: > - Packets sent from the server to the client. - - - name: geo - title: Geo - group: 2 - description: > - Geo fields can carry data about a specific location related to an event - or geo information derived from an IP field. - type: group - fields: - - - name: location - level: core - type: geo_point - description: > - Longitude and latitude. - example: '{ "lon": -73.614830, "lat": 45.505918 }' - - - name: continent_name - level: core - type: keyword - description: > - Name of the continent. - example: North America - - - name: country_name - level: core - type: keyword - description: > - Country name. - example: Canada - - - name: region_name - level: core - type: keyword - description: > - Region name. - example: Quebec - - - name: city_name - level: core - type: keyword - description: > - City name. - example: Montreal - - - name: country_iso_code - level: core - type: keyword - description: > - Country ISO code. - example: CA - - - name: region_iso_code - level: core - type: keyword - description: > - Region ISO code. - example: CA-QC - - - name: name - level: extended - type: keyword - description: > - User-defined description of a location, at the level of granularity they care about. - - Could be the name of their data centers, the floor number, if this describes - a local physical entity, city names. - - Not typically used in automated geolocation. - example: boston-dc - - - name: service - title: Service - group: 2 - description: > - The service fields describe the service for or from which the data was - collected. These fields help you find and correlate logs for a specific - service and version. - type: group - fields: - - - name: id - level: core - type: keyword - description: > - Unique identifier of the running service. - - This id should uniquely identify this service. This makes it possible - to correlate logs and metrics for one specific service. - - Example: If you are experiencing issues with one redis instance, you - can filter on that id to see metrics and logs for that single instance. - - example: d37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6 - - - name: name - level: core - type: keyword - example: "elasticsearch-metrics" - description: > - Name of the service data is collected from. - - The name of the service is normally user given. This allows if two - instances of the same service are running on the same machine - they can be differentiated by the `service.name`. - - Also it allows for distributed services that run on multiple hosts to - correlate the related instances based on the name. - - In the case of Elasticsearch the service.name could contain the cluster - name. For Beats the service.name is by default a copy of the `service.type` - field if no name is specified. - - - name: type - level: core - type: keyword - example: "elasticsearch" - description: > - The type of the service data is collected from. - - The type can be used to group and correlate logs and metrics from one - service type. - - Example: If logs or metrics are collected from Elasticsearch, `service.type` would be - `elasticsearch`. - - - name: state - level: core - type: keyword - description: > - Current state of the service. - - - name: version - level: core - type: keyword - example: "3.2.4" - description: > - Version of the service the data was collected from. - - This allows to look at a data set only for a specific version of a - service. - - - name: ephemeral_id - level: extended - type: keyword - description: > - Ephemeral identifier of this service (if one exists). - - This id normally changes across restarts, but `service.id` does not. - example: 8a4f500f - - - name: source - title: Source - group: 2 - description: > - Source fields describe details about the source of a packet/event. - Source fields are usually populated in conjunction with destination fields. - type: group - fields: - - - name: address - level: extended - type: keyword - description: > - Some event source addresses are defined ambiguously. The event will - sometimes list an IP, a domain or a unix socket. You should always - store the raw address in the `.address` field. - - Then it should be duplicated to `.ip` or `.domain`, depending on which - one it is. - - - name: ip - level: core - type: ip - description: > - IP address of the source. - - Can be one or multiple IPv4 or IPv6 addresses. - - - name: port - level: core - type: long - description: > - Port of the source. - - - name: mac - level: core - type: keyword - description: > - MAC address of the source. - - - name: domain - level: core - type: keyword - description: > - Source domain. - - # Metrics - - name: bytes - level: core - type: long - format: bytes - example: 184 - description: > - Bytes sent from the source to the destination. - - - name: packets - level: core - type: long - example: 12 - description: > - Packets sent from the source to the destination. - - - name: geo - title: Geo - group: 2 - description: > - Geo fields can carry data about a specific location related to an event - or geo information derived from an IP field. - type: group - fields: - - - name: location - level: core - type: geo_point - description: > - Longitude and latitude. - example: '{ "lon": -73.614830, "lat": 45.505918 }' - - - name: continent_name - level: core - type: keyword - description: > - Name of the continent. - example: North America - - - name: country_name - level: core - type: keyword - description: > - Country name. - example: Canada - - - name: region_name - level: core - type: keyword - description: > - Region name. - example: Quebec - - - name: city_name - level: core - type: keyword - description: > - City name. - example: Montreal - - - name: country_iso_code - level: core - type: keyword - description: > - Country ISO code. - example: CA - - - name: region_iso_code - level: core - type: keyword - description: > - Region ISO code. - example: CA-QC - - - name: name - level: extended - type: keyword - description: > - User-defined description of a location, at the level of granularity they care about. - - Could be the name of their data centers, the floor number, if this describes - a local physical entity, city names. - - Not typically used in automated geolocation. - example: boston-dc - - - - name: url - title: URL - description: > - URL fields provide a complete URL, with scheme, host, and path. - type: group - fields: - - - name: original - level: extended - type: keyword - description: > - Unmodified original url as seen in the event source. - - Note that in network monitoring, the observed URL may be a full URL, - whereas in access logs, the URL is often just represented as a path. - - This field is meant to represent the URL as it was observed, complete - or not. - example: > - https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch - - - name: full - level: extended - type: keyword - description: > - If full URLs are important to your use case, they should be stored in - `url.full`, whether this field is reconstructed or present in the - event source. - example: https://www.elastic.co:443/search?q=elasticsearch#top - - - name: scheme - level: extended - type: keyword - description: > - Scheme of the request, such as "https". - - Note: The `:` is not part of the scheme. - example: https - - - name: domain - level: extended - type: keyword - description: > - Domain of the request, such as "www.elastic.co". - - In some cases a URL may refer to an IP and/or port directly, without a - domain name. In this case, the IP address would go to the `domain` field. - example: www.elastic.co - - - name: port - level: extended - type: integer - description: > - Port of the request, such as 443. - example: 443 - - - name: path - level: extended - type: keyword - description: > - Path of the request, such as "/search". - - - name: query - level: extended - type: keyword - description: > - The query field describes the query string of the request, - such as "q=elasticsearch". - - The `?` is excluded from the query string. If a URL contains - no `?`, there is no query field. If there is a `?` but no query, - the query field exists with an empty string. The `exists` - query can be used to differentiate between the two cases. - - - name: fragment - level: extended - type: keyword - description: > - Portion of the url after the `#`, such as "top". - - The `#` is not part of the fragment. - - - name: username - level: extended - type: keyword - description: > - Username of the request. - - - name: password - level: extended - type: keyword - description: > - Password of the request. - - - name: user - title: User - group: 2 - description: > - The user fields describe information about the user that is relevant - to the event. Fields can have one entry or multiple entries. If a - user has more than one id, provide an array that includes all of - them. - reusable: - top_level: true - expected: - - client - - destination - - host - - server - - source - type: group - fields: - - - name: id - level: core - type: keyword - description: > - One or multiple unique identifiers of the user. - - - name: name - level: core - type: keyword - example: albert - description: > - Short name or login of the user. - - - name: full_name - level: extended - type: keyword - example: Albert Einstein - description: > - User's full name, if available. - - - name: email - level: extended - type: keyword - description: > - User email address. - - - name: hash - level: extended - type: keyword - description: > - Unique user hash to correlate information for a user in anonymized form. - - Useful if `user.id` or `user.name` contain confidential information and - cannot be used. - - - name: group - title: Group - group: 2 - description: > - The group fields are meant to represent groups that are relevant to the - event. - type: group - fields: - - - name: id - level: extended - type: keyword - description: > - Unique identifier for the group on the system/platform. - - - name: name - level: extended - type: keyword - description: > - Name of the group. - - - name: user_agent - title: User agent - group: 2 - description: > - The user_agent fields normally come from a browser request. They often - show up in web service logs coming from the parsed user agent string. - type: group - fields: - - - name: original - level: extended - type: keyword - description: > - Unparsed version of the user_agent. - example: "Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1" - - - name: name - level: extended - type: keyword - example: Safari - description: > - Name of the user agent. - - name: version - level: extended - type: keyword - description: > - Version of the user agent. - example: 12.0 - - - name: device.name - level: extended - type: keyword - example: iPhone - description: > - Name of the device. - - - name: os - title: Operating System - group: 2 - description: > - The OS fields contain information about the operating system. - reusable: - top_level: false - expected: - - observer - - host - - user_agent - type: group - fields: - - - name: platform - level: extended - type: keyword - description: > - Operating system platform (such centos, ubuntu, windows). - example: darwin - - - name: name - level: extended - type: keyword - example: "Mac OS X" - description: > - Operating system name, without the version. - - - name: full - level: extended - type: keyword - example: "Mac OS Mojave" - description: > - Operating system name, including the version or code name. - - - name: family - level: extended - type: keyword - example: "debian" - description: > - OS family (such as redhat, debian, freebsd, windows). - - - name: version - level: extended - type: keyword - example: "10.14.1" - description: > - Operating system version as a raw string. - - - name: kernel - level: extended - type: keyword - example: "4.4.0-112-generic" - description: > - Operating system kernel version as a raw string. - - # This is not in ECS. - # TODO: https://github.com/elastic/ecs/issues/178 - - name: agent.hostname - type: keyword - description: > - Hostname of the agent. + level: extended + type: keyword + ignore_above: 1024 + description: Primary group name of the file. + - name: inode + level: extended + type: keyword + ignore_above: 1024 + description: Inode representing the file in the filesystem. + - name: mode + level: extended + type: keyword + ignore_above: 1024 + description: Mode of the file in octal representation. + example: 416 + - name: mtime + level: extended + type: date + description: Last time file content was modified. + - name: owner + level: extended + type: keyword + ignore_above: 1024 + description: File owner's username. + - name: path + level: extended + type: keyword + ignore_above: 1024 + description: Path to the file. + - name: size + level: extended + type: long + description: File size in bytes (field is only added when `type` is `file`). + - name: target_path + level: extended + type: keyword + ignore_above: 1024 + description: Target path for symlinks. + - name: type + level: extended + type: keyword + ignore_above: 1024 + description: File type (file, dir, or symlink). + - name: uid + level: extended + type: keyword + ignore_above: 1024 + description: The user ID (UID) or security identifier (SID) of the file owner. + - name: geo + title: Geo + group: 2 + description: 'Geo fields can carry data about a specific location related to an + event. + + This geolocation information can be derived from techniques such as Geo IP, + or be user-supplied.' + type: group + fields: + - name: city_name + level: core + type: keyword + ignore_above: 1024 + description: City name. + example: Montreal + - name: continent_name + level: core + type: keyword + ignore_above: 1024 + description: Name of the continent. + example: North America + - name: country_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Country ISO code. + example: CA + - name: country_name + level: core + type: keyword + ignore_above: 1024 + description: Country name. + example: Canada + - name: location + level: core + type: geo_point + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + - name: region_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Region ISO code. + example: CA-QC + - name: region_name + level: core + type: keyword + ignore_above: 1024 + description: Region name. + example: Quebec + - name: group + title: Group + group: 2 + description: The group fields are meant to represent groups that are relevant + to the event. + type: group + fields: + - name: id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + - name: host + title: Host + group: 2 + description: 'A host is defined as a general computing instance. + + ECS host.* fields should be populated with details about the host on which the + event happened, or from which the measurement was taken. Host types include + hardware, virtual machines, Docker containers, and Kubernetes nodes.' + type: group + fields: + - name: architecture + level: core + type: keyword + ignore_above: 1024 + description: Operating system architecture. + example: x86_64 + - name: geo.city_name + level: core + type: keyword + ignore_above: 1024 + description: City name. + example: Montreal + - name: geo.continent_name + level: core + type: keyword + ignore_above: 1024 + description: Name of the continent. + example: North America + - name: geo.country_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Country ISO code. + example: CA + - name: geo.country_name + level: core + type: keyword + ignore_above: 1024 + description: Country name. + example: Canada + - name: geo.location + level: core + type: geo_point + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + - name: geo.name + level: extended + type: keyword + ignore_above: 1024 + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + - name: geo.region_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Region ISO code. + example: CA-QC + - name: geo.region_name + level: core + type: keyword + ignore_above: 1024 + description: Region name. + example: Quebec + - name: hostname + level: core + type: keyword + ignore_above: 1024 + description: 'Hostname of the host. + + It normally contains what the `hostname` command returns on the host machine.' + - name: id + level: core + type: keyword + ignore_above: 1024 + description: 'Unique host id. + + As hostname is not always unique, use values that are meaningful in your environment. + + Example: The current usage of `beat.name`.' + - name: ip + level: core + type: ip + description: Host ip address. + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: Host mac address. + - name: name + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the host. + + It can contain what `hostname` returns on Unix systems, the fully qualified + domain name, or a name specified by the user. The sender decides which value + to use.' + - name: os.family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: os.full + level: extended + type: keyword + ignore_above: 1024 + description: Operating system name, including the version or code name. + example: Mac OS Mojave + - name: os.kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: os.name + level: extended + type: keyword + ignore_above: 1024 + description: Operating system name, without the version. + example: Mac OS X + - name: os.platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: os.version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'Type of host. + + For Cloud providers this can be the machine type like `t2.medium`. If vm, + this could be the container, for example, or other information meaningful + in your environment.' + - name: user.email + level: extended + type: keyword + ignore_above: 1024 + description: User email address. + - name: user.full_name + level: extended + type: keyword + ignore_above: 1024 + description: User's full name, if available. + example: Albert Einstein + - name: user.group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + - name: user.group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + - name: user.hash + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + - name: user.id + level: core + type: keyword + ignore_above: 1024 + description: One or multiple unique identifiers of the user. + - name: user.name + level: core + type: keyword + ignore_above: 1024 + description: Short name or login of the user. + example: albert + - name: http + title: HTTP + group: 2 + description: Fields related to HTTP activity. Use the `url` field set to store + the url of the request. + type: group + fields: + - name: request.body.bytes + level: extended + type: long + description: Size in bytes of the request body. + example: 887 + - name: request.body.content + level: extended + type: keyword + ignore_above: 1024 + description: The full HTTP request body. + example: Hello world + - name: request.bytes + level: extended + type: long + description: Total size in bytes of the request (body and headers). + example: 1437 + - name: request.method + level: extended + type: keyword + ignore_above: 1024 + description: 'HTTP request method. + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: get, post, put + - name: request.referrer + level: extended + type: keyword + ignore_above: 1024 + description: Referrer for this HTTP request. + example: https://blog.example.com/ + - name: response.body.bytes + level: extended + type: long + description: Size in bytes of the response body. + example: 887 + - name: response.body.content + level: extended + type: keyword + ignore_above: 1024 + description: The full HTTP response body. + example: Hello world + - name: response.bytes + level: extended + type: long + description: Total size in bytes of the response (body and headers). + example: 1437 + - name: response.status_code + level: extended + type: long + description: HTTP response status code. + example: 404 + - name: version + level: extended + type: keyword + ignore_above: 1024 + description: HTTP version. + example: 1.1 + - name: log + title: Log + group: 2 + description: Fields which are specific to log events. + type: group + fields: + - name: level + level: core + type: keyword + ignore_above: 1024 + description: 'Original log level of the log event. + + Some examples are `warn`, `error`, `i`.' + example: err + - name: original + level: core + type: keyword + ignore_above: 1024 + description: 'This is the original log message and contains the full log message + before splitting it up in multiple parts. + + In contrast to the `message` field which can contain an extracted part of + the log message, this field contains the original, full log message. It can + have already some modifications applied like encoding or new lines removed + to clean up the log message. + + This field is not indexed and doc_values are disabled so it can''t be queried + but the value can be retrieved from `_source`.' + example: Sep 19 08:26:10 localhost My log + - name: network + title: Network + group: 2 + description: 'The network is defined as the communication path over which a host + or network event happens. + + The network.* fields should be populated with details about the network activity + associated with an event.' + type: group + fields: + - name: application + level: extended + type: keyword + ignore_above: 1024 + description: 'A name given to an application level protocol. This can be arbitrarily + assigned for things like microservices, but also apply to things like skype, + icq, facebook, twitter. This would be used in situations where the vendor + or service can be decoded such as from the source/dest IP owners, ports, or + wire format. + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: aim + - name: bytes + level: core + type: long + description: 'Total bytes transferred in both directions. + + If `source.bytes` and `destination.bytes` are known, `network.bytes` is their + sum.' + example: 368 + - name: community_id + level: extended + type: keyword + ignore_above: 1024 + description: 'A hash of source and destination IPs and ports, as well as the + protocol used in a communication. This is a tool-agnostic standard to identify + flows. + + Learn more at https://github.com/corelight/community-id-spec.' + example: 1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0= + - name: direction + level: core + type: keyword + ignore_above: 1024 + description: "Direction of the network traffic.\nRecommended values are:\n \ + \ * inbound\n * outbound\n * internal\n * external\n * unknown\n\nWhen\ + \ mapping events from a host-based monitoring context, populate this field\ + \ from the host's point of view.\nWhen mapping events from a network or perimeter-based\ + \ monitoring context, populate this field from the point of view of your network\ + \ perimeter." + example: inbound + - name: forwarded_ip + level: core + type: ip + description: Host IP address when the source IP address is the proxy. + example: 192.1.1.2 + - name: iana_number + level: extended + type: keyword + ignore_above: 1024 + description: IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). + Standardized list of protocols. This aligns well with NetFlow and sFlow related + logs which use the IANA Protocol Number. + example: 6 + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Name given by operators to sections of their network. + example: Guest Wifi + - name: packets + level: core + type: long + description: 'Total packets transferred in both directions. + + If `source.packets` and `destination.packets` are known, `network.packets` + is their sum.' + example: 24 + - name: protocol + level: core + type: keyword + ignore_above: 1024 + description: 'L7 Network protocol name. ex. http, lumberjack, transport protocol. + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: http + - name: transport + level: core + type: keyword + ignore_above: 1024 + description: 'Same as network.iana_number, but instead using the Keyword name + of the transport layer (udp, tcp, ipv6-icmp, etc.) + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: tcp + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'In the OSI Model this would be the Network Layer. ipv4, ipv6, + ipsec, pim, etc + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: ipv4 + - name: observer + title: Observer + group: 2 + description: 'An observer is defined as a special network, security, or application + device used to detect, observe, or create network, security, or application-related + events and metrics. + + This could be a custom hardware appliance or a server that has been configured + to run special network, security, or application software. Examples include + firewalls, intrusion detection/prevention systems, network monitoring sensors, + web application firewalls, data loss prevention systems, and APM servers. The + observer.* fields shall be populated with details of the system, if any, that + detects, observes and/or creates a network, security, or application event or + metric. Message queues and ETL components used in processing events or metrics + are not considered observers in ECS.' + type: group + fields: + - name: geo.city_name + level: core + type: keyword + ignore_above: 1024 + description: City name. + example: Montreal + - name: geo.continent_name + level: core + type: keyword + ignore_above: 1024 + description: Name of the continent. + example: North America + - name: geo.country_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Country ISO code. + example: CA + - name: geo.country_name + level: core + type: keyword + ignore_above: 1024 + description: Country name. + example: Canada + - name: geo.location + level: core + type: geo_point + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + - name: geo.name + level: extended + type: keyword + ignore_above: 1024 + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + - name: geo.region_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Region ISO code. + example: CA-QC + - name: geo.region_name + level: core + type: keyword + ignore_above: 1024 + description: Region name. + example: Quebec + - name: hostname + level: core + type: keyword + ignore_above: 1024 + description: Hostname of the observer. + - name: ip + level: core + type: ip + description: IP address of the observer. + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: MAC address of the observer + - name: os.family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: os.full + level: extended + type: keyword + ignore_above: 1024 + description: Operating system name, including the version or code name. + example: Mac OS Mojave + - name: os.kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: os.name + level: extended + type: keyword + ignore_above: 1024 + description: Operating system name, without the version. + example: Mac OS X + - name: os.platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: os.version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: serial_number + level: extended + type: keyword + ignore_above: 1024 + description: Observer serial number. + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'The type of the observer the data is coming from. + + There is no predefined list of observer types. Some examples are `forwarder`, + `firewall`, `ids`, `ips`, `proxy`, `poller`, `sensor`, `APM server`.' + example: firewall + - name: vendor + level: core + type: keyword + ignore_above: 1024 + description: observer vendor information. + - name: version + level: core + type: keyword + ignore_above: 1024 + description: Observer version. + - name: organization + title: Organization + group: 2 + description: 'The organization fields enrich data with information about the company + or entity the data is associated with. + + These fields help you arrange or filter data stored in an index by one or multiple + organizations.' + type: group + fields: + - name: id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the organization. + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Organization name. + - name: os + title: Operating System + group: 2 + description: The OS fields contain information about the operating system. + type: group + fields: + - name: family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: full + level: extended + type: keyword + ignore_above: 1024 + description: Operating system name, including the version or code name. + example: Mac OS Mojave + - name: kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Operating system name, without the version. + example: Mac OS X + - name: platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: process + title: Process + group: 2 + description: 'These fields contain information about a process. + + These fields can help you correlate metrics information with a process id/name + from a log message. The `process.pid` often stays in the metric itself and + is copied to the global field for correlation.' + type: group + fields: + - name: args + level: extended + type: keyword + ignore_above: 1024 + description: 'Array of process arguments. + + May be filtered to protect sensitive information.' + example: + - ssh + - -l + - user + - 10.0.0.16 + - name: executable + level: extended + type: keyword + ignore_above: 1024 + description: Absolute path to the process executable. + example: /usr/bin/ssh + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: 'Process name. + + Sometimes called program name or similar.' + example: ssh + - name: pid + level: core + type: long + description: Process id. + - name: ppid + level: extended + type: long + description: Process parent id. + - name: start + level: extended + type: date + description: The time the process started. + example: '2016-05-23T08:05:34.853Z' + - name: thread.id + level: extended + type: long + description: Thread ID. + example: 4242 + - name: title + level: extended + type: keyword + ignore_above: 1024 + description: 'Process title. + + The proctitle, some times the same as process name. Can also be different: + for example a browser setting its title to the web page currently opened.' + - name: working_directory + level: extended + type: keyword + ignore_above: 1024 + description: The working directory of the process. + example: /home/alice + - name: related + title: Related + group: 2 + description: 'This field set is meant to facilitate pivoting around a piece of + data. + + Some pieces of information can be seen in many places in an ECS event. To facilitate + searching for them, store an array of all seen values to their corresponding + field in `related.`. + + A concrete example is IP addresses, which can be under host, observer, source, + destination, client, server, and network.forwarded_ip. If you append all IPs + to `related.ip`, you can then search for a given IP trivially, no matter where + it appeared, by querying `related.ip:a.b.c.d`.' + type: group + fields: + - name: ip + level: extended + type: ip + description: All of the IPs seen on your event. + - name: server + title: Server + group: 2 + description: 'A Server is defined as the responder in a network connection for + events regarding sessions, connections, or bidirectional flow records. + + For TCP events, the server is the receiver of the initial SYN packet(s) of the + TCP connection. For other protocols, the server is generally the responder in + the network transaction. Some systems actually use the term "responder" to refer + the server in TCP connections. The server fields describe details about the + system acting as the server in the network event. Server fields are usually + populated in conjunction with client fields. Server fields are generally not + populated for packet-level events. + + Client / server representations can add semantic context to an exchange, which + is helpful to visualize the data in certain situations. If your context falls + in that category, you should still ensure that source and destination are filled + appropriately.' + type: group + fields: + - name: address + level: extended + type: keyword + ignore_above: 1024 + description: 'Some event server addresses are defined ambiguously. The event + will sometimes list an IP, a domain or a unix socket. You should always store + the raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one + it is.' + - name: bytes + level: core + type: long + description: Bytes sent from the server to the client. + example: 184 + - name: domain + level: core + type: keyword + ignore_above: 1024 + description: Server domain. + - name: geo.city_name + level: core + type: keyword + ignore_above: 1024 + description: City name. + example: Montreal + - name: geo.continent_name + level: core + type: keyword + ignore_above: 1024 + description: Name of the continent. + example: North America + - name: geo.country_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Country ISO code. + example: CA + - name: geo.country_name + level: core + type: keyword + ignore_above: 1024 + description: Country name. + example: Canada + - name: geo.location + level: core + type: geo_point + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + - name: geo.name + level: extended + type: keyword + ignore_above: 1024 + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + - name: geo.region_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Region ISO code. + example: CA-QC + - name: geo.region_name + level: core + type: keyword + ignore_above: 1024 + description: Region name. + example: Quebec + - name: ip + level: core + type: ip + description: 'IP address of the server. + + Can be one or multiple IPv4 or IPv6 addresses.' + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: MAC address of the server. + - name: packets + level: core + type: long + description: Packets sent from the server to the client. + example: 12 + - name: port + level: core + type: long + description: Port of the server. + - name: user.email + level: extended + type: keyword + ignore_above: 1024 + description: User email address. + - name: user.full_name + level: extended + type: keyword + ignore_above: 1024 + description: User's full name, if available. + example: Albert Einstein + - name: user.group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + - name: user.group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + - name: user.hash + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + - name: user.id + level: core + type: keyword + ignore_above: 1024 + description: One or multiple unique identifiers of the user. + - name: user.name + level: core + type: keyword + ignore_above: 1024 + description: Short name or login of the user. + example: albert + - name: service + title: Service + group: 2 + description: 'The service fields describe the service for or from which the data + was collected. + + These fields help you find and correlate logs for a specific service and version.' + type: group + fields: + - name: ephemeral_id + level: extended + type: keyword + ignore_above: 1024 + description: 'Ephemeral identifier of this service (if one exists). + + This id normally changes across restarts, but `service.id` does not.' + example: 8a4f500f + - name: id + level: core + type: keyword + ignore_above: 1024 + description: 'Unique identifier of the running service. + + This id should uniquely identify this service. This makes it possible to correlate + logs and metrics for one specific service. + + Example: If you are experiencing issues with one redis instance, you can filter + on that id to see metrics and logs for that single instance.' + example: d37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6 + - name: name + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the service data is collected from. + + The name of the service is normally user given. This allows if two instances + of the same service are running on the same machine they can be differentiated + by the `service.name`. + + Also it allows for distributed services that run on multiple hosts to correlate + the related instances based on the name. + + In the case of Elasticsearch the service.name could contain the cluster name. + For Beats the service.name is by default a copy of the `service.type` field + if no name is specified.' + example: elasticsearch-metrics + - name: state + level: core + type: keyword + ignore_above: 1024 + description: Current state of the service. + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'The type of the service data is collected from. + + The type can be used to group and correlate logs and metrics from one service + type. + + Example: If logs or metrics are collected from Elasticsearch, `service.type` + would be `elasticsearch`.' + example: elasticsearch + - name: version + level: core + type: keyword + ignore_above: 1024 + description: 'Version of the service the data was collected from. + + This allows to look at a data set only for a specific version of a service.' + example: 3.2.4 + - name: source + title: Source + group: 2 + description: 'Source fields describe details about the source of a packet/event. + + Source fields are usually populated in conjunction with destination fields.' + type: group + fields: + - name: address + level: extended + type: keyword + ignore_above: 1024 + description: 'Some event source addresses are defined ambiguously. The event + will sometimes list an IP, a domain or a unix socket. You should always store + the raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one + it is.' + - name: bytes + level: core + type: long + description: Bytes sent from the source to the destination. + example: 184 + - name: domain + level: core + type: keyword + ignore_above: 1024 + description: Source domain. + - name: geo.city_name + level: core + type: keyword + ignore_above: 1024 + description: City name. + example: Montreal + - name: geo.continent_name + level: core + type: keyword + ignore_above: 1024 + description: Name of the continent. + example: North America + - name: geo.country_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Country ISO code. + example: CA + - name: geo.country_name + level: core + type: keyword + ignore_above: 1024 + description: Country name. + example: Canada + - name: geo.location + level: core + type: geo_point + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + - name: geo.name + level: extended + type: keyword + ignore_above: 1024 + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + - name: geo.region_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Region ISO code. + example: CA-QC + - name: geo.region_name + level: core + type: keyword + ignore_above: 1024 + description: Region name. + example: Quebec + - name: ip + level: core + type: ip + description: 'IP address of the source. + + Can be one or multiple IPv4 or IPv6 addresses.' + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: MAC address of the source. + - name: packets + level: core + type: long + description: Packets sent from the source to the destination. + example: 12 + - name: port + level: core + type: long + description: Port of the source. + - name: user.email + level: extended + type: keyword + ignore_above: 1024 + description: User email address. + - name: user.full_name + level: extended + type: keyword + ignore_above: 1024 + description: User's full name, if available. + example: Albert Einstein + - name: user.group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + - name: user.group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + - name: user.hash + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + - name: user.id + level: core + type: keyword + ignore_above: 1024 + description: One or multiple unique identifiers of the user. + - name: user.name + level: core + type: keyword + ignore_above: 1024 + description: Short name or login of the user. + example: albert + - name: url + title: URL + group: 2 + description: URL fields provide support for complete or partial URLs, and supports + the breaking down into scheme, domain, path, and so on. + type: group + fields: + - name: domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Domain of the url, such as "www.elastic.co". + + In some cases a URL may refer to an IP and/or port directly, without a domain + name. In this case, the IP address would go to the `domain` field.' + example: www.elastic.co + - name: fragment + level: extended + type: keyword + ignore_above: 1024 + description: 'Portion of the url after the `#`, such as "top". + + The `#` is not part of the fragment.' + - name: full + level: extended + type: keyword + ignore_above: 1024 + description: If full URLs are important to your use case, they should be stored + in `url.full`, whether this field is reconstructed or present in the event + source. + example: https://www.elastic.co:443/search?q=elasticsearch#top + - name: original + level: extended + type: keyword + ignore_above: 1024 + description: 'Unmodified original url as seen in the event source. + + Note that in network monitoring, the observed URL may be a full URL, whereas + in access logs, the URL is often just represented as a path. + + This field is meant to represent the URL as it was observed, complete or not.' + example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch + - name: password + level: extended + type: keyword + ignore_above: 1024 + description: Password of the request. + - name: path + level: extended + type: keyword + ignore_above: 1024 + description: Path of the request, such as "/search". + - name: port + level: extended + type: long + description: Port of the request, such as 443. + example: 443 + - name: query + level: extended + type: keyword + ignore_above: 1024 + description: 'The query field describes the query string of the request, such + as "q=elasticsearch". + + The `?` is excluded from the query string. If a URL contains no `?`, there + is no query field. If there is a `?` but no query, the query field exists + with an empty string. The `exists` query can be used to differentiate between + the two cases.' + - name: scheme + level: extended + type: keyword + ignore_above: 1024 + description: 'Scheme of the request, such as "https". + + Note: The `:` is not part of the scheme.' + example: https + - name: username + level: extended + type: keyword + ignore_above: 1024 + description: Username of the request. + - name: user + title: User + group: 2 + description: 'The user fields describe information about the user that is relevant + to the event. + + Fields can have one entry or multiple entries. If a user has more than one id, + provide an array that includes all of them.' + type: group + fields: + - name: email + level: extended + type: keyword + ignore_above: 1024 + description: User email address. + - name: full_name + level: extended + type: keyword + ignore_above: 1024 + description: User's full name, if available. + example: Albert Einstein + - name: group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + - name: group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + - name: hash + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + - name: id + level: core + type: keyword + ignore_above: 1024 + description: One or multiple unique identifiers of the user. + - name: name + level: core + type: keyword + ignore_above: 1024 + description: Short name or login of the user. + example: albert + - name: user_agent + title: User agent + group: 2 + description: 'The user_agent fields normally come from a browser request. + + They often show up in web service logs coming from the parsed user agent string.' + type: group + fields: + - name: device.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the device. + example: iPhone + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the user agent. + example: Safari + - name: original + level: extended + type: keyword + ignore_above: 1024 + description: Unparsed version of the user_agent. + example: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 + (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1 + - name: os.family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: os.full + level: extended + type: keyword + ignore_above: 1024 + description: Operating system name, including the version or code name. + example: Mac OS Mojave + - name: os.kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: os.name + level: extended + type: keyword + ignore_above: 1024 + description: Operating system name, without the version. + example: Mac OS X + - name: os.platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: os.version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: version + level: extended + type: keyword + ignore_above: 1024 + description: Version of the user agent. + example: 12.0 diff --git a/metricbeat/docs/fields.asciidoc b/metricbeat/docs/fields.asciidoc index 42e2b7da0966..9958378cb320 100644 --- a/metricbeat/docs/fields.asciidoc +++ b/metricbeat/docs/fields.asciidoc @@ -1403,6 +1403,15 @@ Contains common beat fields available in all event types. +*`agent.hostname`*:: ++ +-- +type: keyword + +Hostname of the agent. + +-- + *`beat.timezone`*:: + -- @@ -4517,8 +4526,7 @@ Stats collected from Dropwizard. [[exported-fields-ecs]] == ECS fields -ECS fields. - +ECS Fields. *`@timestamp`*:: @@ -4531,22 +4539,10 @@ example: 2016-05-23T08:05:34.853Z required: True Date/time when the event originated. -For log events this is the date/time when the event was generated, and not when it was read. +This is the date/time extracted from the event, typically representing when the event was generated by the source. +If the event source has no original timestamp, this value is typically populated by the first time the event was received by the pipeline. Required field for all events. - --- - -*`tags`*:: -+ --- -type: keyword - -example: ["production", "env2"] - -List of keywords used to tag each event. - - -- *`labels`*:: @@ -4556,11 +4552,10 @@ type: object example: {'application': 'foo-bar', 'env': 'production'} -Key/value pairs. +Custom key/value pairs. Can be used to add meta information to events. Should not contain nested objects. All values are stored as keyword. Example: `docker` and `k8s` labels. - -- *`message`*:: @@ -4570,28 +4565,51 @@ type: text example: Hello World -For log events the message field contains the log message. -In other use cases the message field can be used to concatenate different values which are then freely searchable. If multiple messages exist, they can be combined into one message. +For log events the message field contains the log message, optimized for viewing in a log viewer. +For structured logs without an original message field, other fields can be concatenated to form a human-readable summary of the event. +If multiple messages exist, they can be combined into one message. + +-- + +*`tags`*:: ++ +-- +type: keyword + +example: ["production", "env2"] +List of keywords used to tag each event. -- [float] == agent fields -The agent fields contain the data about the software entity, if any, that collects, detects, or observes events on a host, or takes measurements on a host. Examples include Beats. Agents may also run on observers. ECS agent.* fields shall be populated with details of the agent running on the host or observer where the event happened or the measurement was taken. +The agent fields contain the data about the software entity, if any, that collects, detects, or observes events on a host, or takes measurements on a host. +Examples include Beats. Agents may also run on observers. ECS agent.* fields shall be populated with details of the agent running on the host or observer where the event happened or the measurement was taken. - -*`agent.version`*:: +*`agent.ephemeral_id`*:: + -- type: keyword -example: 6.0.0-rc2 +example: 8a4f500f -Version of the agent. +Ephemeral identifier of this agent (if one exists). +This id normally changes across restarts, but `agent.id` does not. + +-- + +*`agent.id`*:: ++ +-- +type: keyword + +example: 8a4f500d +Unique identifier of this agent (if one exists). +Example: For Beats this would be beat.id. -- @@ -4602,11 +4620,10 @@ type: keyword example: foo -Name of the agent. +Custom name of the agent. This is a name that can be given to an agent. This can be helpful if for example two Filebeat instances are running on the same host but a human readable separation is needed on which Filebeat instance data is coming from. If no name is given, the name is often left empty. - -- *`agent.type`*:: @@ -4619,43 +4636,27 @@ example: filebeat Type of the agent. The agent type stays always the same and should be given by the agent used. In case of Filebeat the agent would always be Filebeat also if two Filebeat instances are run on the same machine. - --- - -*`agent.id`*:: -+ --- -type: keyword - -example: 8a4f500d - -Unique identifier of this agent (if one exists). -Example: For Beats this would be beat.id. - - -- -*`agent.ephemeral_id`*:: +*`agent.version`*:: + -- type: keyword -example: 8a4f500f - -Ephemeral identifier of this agent (if one exists). -This id normally changes across restarts, but `agent.id` does not. +example: 6.0.0-rc2 +Version of the agent. -- [float] == client fields -A client is defined as the initiator of a network connection for events regarding sessions, connections, or bidirectional flow records. For TCP events, the client is the initiator of the TCP connection that sends the SYN packet(s). For other protocols, the client is generally the initiator or requestor in the network transaction. Some systems use the term "originator" to refer the client in TCP connections. The client fields describe details about the system acting as the client in the network event. Client fields are usually populated in conjunction with server fields. Client fields are generally not populated for packet-level events. +A client is defined as the initiator of a network connection for events regarding sessions, connections, or bidirectional flow records. +For TCP events, the client is the initiator of the TCP connection that sends the SYN packet(s). For other protocols, the client is generally the initiator or requestor in the network transaction. Some systems use the term "originator" to refer the client in TCP connections. The client fields describe details about the system acting as the client in the network event. Client fields are usually populated in conjunction with server fields. Client fields are generally not populated for packet-level events. Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. - *`client.address`*:: + -- @@ -4664,83 +4665,72 @@ type: keyword Some event client addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. - -- -*`client.ip`*:: +*`client.bytes`*:: + -- -type: ip +type: long -IP address of the client. -Can be one or multiple IPv4 or IPv6 addresses. +example: 184 +Bytes sent from the client to the server. -- -*`client.port`*:: +*`client.domain`*:: + -- -type: long - -Port of the client. +type: keyword +Client domain. -- -*`client.mac`*:: +*`client.geo.city_name`*:: + -- type: keyword -MAC address of the client. +example: Montreal +City name. -- -*`client.domain`*:: +*`client.geo.continent_name`*:: + -- type: keyword -Client domain. +example: North America +Name of the continent. -- -*`client.bytes`*:: +*`client.geo.country_iso_code`*:: + -- -type: long - -example: 184 - -format: bytes +type: keyword -Bytes sent from the client to the server. +example: CA +Country ISO code. -- -*`client.packets`*:: +*`client.geo.country_name`*:: + -- -type: long - -example: 12 +type: keyword -Packets sent from the client to the server. +example: Canada +Country name. -- -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - *`client.geo.location`*:: + -- @@ -4750,30 +4740,29 @@ example: { "lon": -73.614830, "lat": 45.505918 } Longitude and latitude. - -- -*`client.geo.continent_name`*:: +*`client.geo.name`*:: + -- type: keyword -example: North America - -Name of the continent. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`client.geo.country_name`*:: +*`client.geo.region_iso_code`*:: + -- type: keyword -example: Canada - -Country name. +example: CA-QC +Region ISO code. -- @@ -4786,274 +4775,274 @@ example: Quebec Region name. - -- -*`client.geo.city_name`*:: +*`client.ip`*:: + -- -type: keyword - -example: Montreal - -City name. +type: ip +IP address of the client. +Can be one or multiple IPv4 or IPv6 addresses. -- -*`client.geo.country_iso_code`*:: +*`client.mac`*:: + -- type: keyword -example: CA - -Country ISO code. - +MAC address of the client. -- -*`client.geo.region_iso_code`*:: +*`client.packets`*:: + -- -type: keyword - -example: CA-QC +type: long -Region ISO code. +example: 12 +Packets sent from the client to the server. -- -*`client.geo.name`*:: +*`client.port`*:: + -- -type: keyword - -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +type: long +Port of the client. -- -[float] -== cloud fields - -Fields related to the cloud or infrastructure the events are coming from. - - - -*`cloud.provider`*:: +*`client.user.email`*:: + -- type: keyword -example: ec2 - -Name of the cloud provider. Example values are ec2, gce, or digitalocean. - +User email address. -- -*`cloud.availability_zone`*:: +*`client.user.full_name`*:: + -- type: keyword -example: us-east-1c - -Availability zone in which this host is running. +example: Albert Einstein +User's full name, if available. -- -*`cloud.region`*:: +*`client.user.group.id`*:: + -- type: keyword -example: us-east-1 - -Region in which this host is running. - +Unique identifier for the group on the system/platform. -- -*`cloud.instance.id`*:: +*`client.user.group.name`*:: + -- type: keyword -example: i-1234567890abcdef0 - -Instance ID of the host machine. - +Name of the group. -- -*`cloud.instance.name`*:: +*`client.user.hash`*:: + -- type: keyword -Instance name of the host machine. - +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -- -*`cloud.machine.type`*:: +*`client.user.id`*:: + -- type: keyword -example: t2.medium - -Machine type of the host machine. - +One or multiple unique identifiers of the user. -- -*`cloud.account.id`*:: +*`client.user.name`*:: + -- type: keyword -example: 666777888999 - -The cloud account or organization id used to identify different entities in a multi-tenant environment. -Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. +example: albert +Short name or login of the user. -- [float] -== container fields - -Container fields are used for meta information about the specific container that is the source of information. These fields help correlate data based containers from any runtime. +== cloud fields +Fields related to the cloud or infrastructure the events are coming from. -*`container.runtime`*:: +*`cloud.account.id`*:: + -- type: keyword -example: docker - -Runtime managing this container. +example: 666777888999 +The cloud account or organization id used to identify different entities in a multi-tenant environment. +Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. -- -*`container.id`*:: +*`cloud.availability_zone`*:: + -- type: keyword -Unique container id. +example: us-east-1c +Availability zone in which this host is running. -- -*`container.image.name`*:: +*`cloud.instance.id`*:: + -- type: keyword -Name of the image the container was built on. +example: i-1234567890abcdef0 +Instance ID of the host machine. -- -*`container.image.tag`*:: +*`cloud.instance.name`*:: + -- type: keyword -Container image tag. +Instance name of the host machine. +-- +*`cloud.machine.type`*:: ++ -- +type: keyword -*`container.name`*:: +example: t2.medium + +Machine type of the host machine. + +-- + +*`cloud.provider`*:: + -- type: keyword -Container name. +example: aws +Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. -- -*`container.labels`*:: +*`cloud.region`*:: + -- -type: object +type: keyword -Image labels. +example: us-east-1 +Region in which this host is running. -- [float] -== destination fields - -Destination fields describe details about the destination of a packet/event. Destination fields are usually populated in conjunction with source fields. +== container fields +Container fields are used for meta information about the specific container that is the source of information. +These fields help correlate data based containers from any runtime. -*`destination.address`*:: +*`container.id`*:: + -- type: keyword -Some event destination addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. -Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. - +Unique container id. -- -*`destination.ip`*:: +*`container.image.name`*:: + -- -type: ip +type: keyword -IP address of the destination. -Can be one or multiple IPv4 or IPv6 addresses. +Name of the image the container was built on. +-- +*`container.image.tag`*:: ++ -- +type: keyword -*`destination.port`*:: +Container image tag. + +-- + +*`container.labels`*:: + -- -type: long +type: object -Port of the destination. +Image labels. + +-- + +*`container.name`*:: ++ +-- +type: keyword +Container name. -- -*`destination.mac`*:: +*`container.runtime`*:: + -- type: keyword -MAC address of the destination. +example: docker +Runtime managing this container. -- -*`destination.domain`*:: +[float] +== destination fields + +Destination fields describe details about the destination of a packet/event. +Destination fields are usually populated in conjunction with source fields. + + +*`destination.address`*:: + -- type: keyword -Destination domain. - +Some event destination addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. -- @@ -5064,31 +5053,62 @@ type: long example: 184 -format: bytes - Bytes sent from the destination to the source. +-- + +*`destination.domain`*:: ++ +-- +type: keyword + +Destination domain. -- -*`destination.packets`*:: +*`destination.geo.city_name`*:: + -- -type: long +type: keyword -example: 12 +example: Montreal -Packets sent from the destination to the source. +City name. +-- +*`destination.geo.continent_name`*:: ++ -- +type: keyword -[float] -== geo fields +example: North America + +Name of the continent. + +-- + +*`destination.geo.country_iso_code`*:: ++ +-- +type: keyword + +example: CA + +Country ISO code. + +-- -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. +*`destination.geo.country_name`*:: ++ +-- +type: keyword +example: Canada +Country name. + +-- *`destination.geo.location`*:: + @@ -5099,30 +5119,29 @@ example: { "lon": -73.614830, "lat": 45.505918 } Longitude and latitude. - -- -*`destination.geo.continent_name`*:: +*`destination.geo.name`*:: + -- type: keyword -example: North America - -Name of the continent. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`destination.geo.country_name`*:: +*`destination.geo.region_iso_code`*:: + -- type: keyword -example: Canada - -Country name. +example: CA-QC +Region ISO code. -- @@ -5135,56 +5154,112 @@ example: Quebec Region name. +-- +*`destination.ip`*:: ++ -- +type: ip -*`destination.geo.city_name`*:: +IP address of the destination. +Can be one or multiple IPv4 or IPv6 addresses. + +-- + +*`destination.mac`*:: + -- type: keyword -example: Montreal +MAC address of the destination. -City name. +-- + +*`destination.packets`*:: ++ +-- +type: long + +example: 12 +Packets sent from the destination to the source. -- -*`destination.geo.country_iso_code`*:: +*`destination.port`*:: ++ +-- +type: long + +Port of the destination. + +-- + +*`destination.user.email`*:: + -- type: keyword -example: CA +User email address. -Country ISO code. +-- +*`destination.user.full_name`*:: ++ +-- +type: keyword + +example: Albert Einstein + +User's full name, if available. -- -*`destination.geo.region_iso_code`*:: +*`destination.user.group.id`*:: + -- type: keyword -example: CA-QC +Unique identifier for the group on the system/platform. -Region ISO code. +-- +*`destination.user.group.name`*:: ++ +-- +type: keyword + +Name of the group. -- -*`destination.geo.name`*:: +*`destination.user.hash`*:: + -- type: keyword -example: boston-dc +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +-- +*`destination.user.id`*:: ++ +-- +type: keyword + +One or multiple unique identifiers of the user. + +-- + +*`destination.user.name`*:: ++ +-- +type: keyword + +example: albert + +Short name or login of the user. -- @@ -5194,29 +5269,35 @@ Not typically used in automated geolocation. Meta-information specific to ECS. - *`ecs.version`*:: + -- type: keyword -example: 1.0.0-beta2 +example: 1.0.0 required: True ECS version this event conforms to. `ecs.version` is a required field and must exist in all events. When querying across multiple indices -- which may conform to slightly different ECS versions -- this field lets integrations adjust to the schema version of the events. -The current version is 1.0.0-beta2 . - -- [float] == error fields -These fields can represent errors of any kind. Use them for errors that happen while fetching events or in cases where the event itself contains an error. +These fields can represent errors of any kind. +Use them for errors that happen while fetching events or in cases where the event itself contains an error. + + +*`error.code`*:: ++ +-- +type: keyword +Error code describing the error. +-- *`error.id`*:: + @@ -5225,7 +5306,6 @@ type: keyword Unique identifier for the error. - -- *`error.message`*:: @@ -5235,98 +5315,113 @@ type: text Error message. - -- -*`error.code`*:: +[float] +== event fields + +The event fields are used for context information about the log or metric event itself. +A log is defined as an event containing details of something that happened. Log events must include the time at which the thing happened. Examples of log events include a process starting on a host, a network packet being sent from a source to a destination, or a network connection between a client and a server being initiated or closed. A metric is defined as an event containing one or more numerical or categorical measurements and the time at which the measurement was taken. Examples of metric events include memory pressure measured on a host, or vulnerabilities measured on a scanned host. + + +*`event.action`*:: + -- type: keyword -Error code describing the error. +example: user-password-change +The action captured by the event. +This describes the information in the event. It is more specific than `event.category`. Examples are `group-add`, `process-started`, `file-created`. The value is normally defined by the implementer. -- -[float] -== event fields +*`event.category`*:: ++ +-- +type: keyword -The event fields are used for context information about the log or metric event itself. A log is defined as an event containing details of something that happened. Log events must include the time at which the thing happened. Examples of log events include a process starting on a host, a network packet being sent from a source to a destination, or a network connection between a client and a server being initiated or closed. A metric is defined as an event containing one or more numerical or categorical measurements and the time at which the measurement was taken. Examples of metric events include memory pressure measured on a host, or vulnerabilities measured on a scanned host. +example: user-management +Event category. +This contains high-level information about the contents of the event. It is more generic than `event.action`, in the sense that typically a category contains multiple actions. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +-- -*`event.id`*:: +*`event.created`*:: + -- -type: keyword - -example: 8a4f500d - -Unique ID to describe the event. +type: date +event.created contains the date/time when the event was first read by an agent, or by your pipeline. +This field is distinct from @timestamp in that @timestamp typically contain the time extracted from the original event. +In most situations, these two timestamps will be slightly different. The difference can be used to calculate the delay between your source generating an event, and the time when your agent first processed it. This can be used to monitor your agent's or pipeline's ability to keep up with your event source. +In case the two timestamps are identical, @timestamp should be used. -- -*`event.kind`*:: +*`event.dataset`*:: + -- type: keyword -example: state - -The kind of the event. -This gives information about what type of information the event contains, without being specific to the contents of the event. Examples are `event`, `state`, `alarm`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +example: stats +Name of the dataset. +The concept of a `dataset` (fileset / metricset) is used in Beats as a subset of modules. It contains the information which is currently stored in metricset.name and metricset.module or fileset.name. -- -*`event.category`*:: +*`event.duration`*:: + -- -type: keyword +type: long -example: user-management +Duration of the event in nanoseconds. +If event.start and event.end are known this value should be the difference between the end and start time. -Event category. -This contains high-level information about the contents of the event. It is more generic than `event.action`, in the sense that typically a category contains multiple actions. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +-- +*`event.end`*:: ++ +-- +type: date + +event.end contains the date when the event ended or when the activity was last observed. -- -*`event.action`*:: +*`event.hash`*:: + -- type: keyword -example: user-password-change - -The action captured by the event. -This describes the information in the event. It is more specific than `event.category`. Examples are `group-add`, `process-started`, `file-created`. The value is normally defined by the implementer. +example: 123456789012345678901234567890ABCD +Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate log integrity. -- -*`event.outcome`*:: +*`event.id`*:: + -- type: keyword -example: success - -The outcome of the event. -If the event describes an action, this fields contains the outcome of that action. Examples outcomes are `success` and `failure`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +example: 8a4f500d +Unique ID to describe the event. -- -*`event.type`*:: +*`event.kind`*:: + -- type: keyword -Reserved for future usage. -Please avoid using this field for user data. +example: state +The kind of the event. +This gives information about what type of information the event contains, without being specific to the contents of the event. Examples are `event`, `state`, `alarm`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. -- @@ -5340,71 +5435,68 @@ example: mysql Name of the module this data is coming from. This information is coming from the modules used in Beats or Logstash. - -- -*`event.dataset`*:: +*`event.original`*:: + -- type: keyword -example: stats - -Name of the dataset. -The concept of a `dataset` (fileset / metricset) is used in Beats as a subset of modules. It contains the information which is currently stored in metricset.name and metricset.module or fileset.name. +example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 +Raw text message of entire event. Used to demonstrate log integrity. +This field is not indexed and doc_values are disabled. It cannot be searched, but it can be retrieved from `_source`. -- -*`event.severity`*:: +*`event.outcome`*:: + -- -type: long - -example: 7 +type: keyword -Severity describes the severity of the event. What the different severity values mean can very different between use cases. It's up to the implementer to make sure severities are consistent across events. +example: success +The outcome of the event. +If the event describes an action, this fields contains the outcome of that action. Examples outcomes are `success` and `failure`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. -- -*`event.original`*:: +*`event.risk_score`*:: + -- -type: keyword +type: float -example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 +Risk score or priority of the event (e.g. security solutions). Use your system's original value here. -Raw text message of entire event. Used to demonstrate log integrity. -This field is not indexed and doc_values are disabled. It cannot be searched, but it can be retrieved from `_source`. +-- +*`event.risk_score_norm`*:: ++ +-- +type: float -Field is not indexed. +Normalized risk score or priority of the event, on a scale of 0 to 100. +This is mainly useful if you use more than one system that assigns risk scores, and you want to see a normalized value across all systems. -- -*`event.hash`*:: +*`event.severity`*:: + -- -type: keyword - -example: 123456789012345678901234567890ABCD +type: long -Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate log integrity. +example: 7 +Severity describes the original severity of the event. What the different severity values mean can very different between use cases. It's up to the implementer to make sure severities are consistent across events. -- -*`event.duration`*:: +*`event.start`*:: + -- -type: long - -format: duration - -Duration of the event in nanoseconds. -If event.start and event.end are known this value should be the difference between the end and start time. +type: date +event.start contains the date when the event started or when the activity was first observed. -- @@ -5416,68 +5508,110 @@ type: keyword This field should be populated when the event's timestamp does not include timezone information already (e.g. default Syslog timestamps). It's optional otherwise. Acceptable timezone formats are: a canonical ID (e.g. "Europe/Amsterdam"), abbreviated (e.g. "EST") or an HH:mm differential (e.g. "-05:00"). +-- +*`event.type`*:: ++ -- +type: keyword -*`event.created`*:: +Reserved for future usage. +Please avoid using this field for user data. + +-- + +[float] +== file fields + +A file is defined as a set of information that has been created on, or has existed on a filesystem. +File objects can be associated with host events, network events, and/or file events (e.g., those produced by File Integrity Monitoring [FIM] products or services). File fields provide details about the affected file associated with the event or metric. + + +*`file.ctime`*:: + -- type: date -event.created contains the date when the event was created. -This timestamp is distinct from @timestamp in that @timestamp contains the processed timestamp. For logs these two timestamps can be different as the timestamp in the log line and when the event is read for example by Filebeat are not identical. `@timestamp` must contain the timestamp extracted from the log line, event.created when the log line is read. The same could apply to package capturing where @timestamp contains the timestamp extracted from the network package and event.created when the event was created. -In case the two timestamps are identical, @timestamp should be used. +Last time file metadata changed. +-- +*`file.device`*:: ++ -- +type: keyword -*`event.start`*:: +Device that is the source of the file. + +-- + +*`file.extension`*:: + -- -type: date +type: keyword -event.start contains the date when the event started or when the activity was first observed. +example: png +File extension. +This should allow easy filtering by file extensions. -- -*`event.end`*:: +*`file.gid`*:: + -- -type: date - -event.end contains the date when the event ended or when the activity was last observed. +type: keyword +Primary group ID (GID) of the file. -- -*`event.risk_score`*:: +*`file.group`*:: + -- -type: float +type: keyword -Risk score or priority of the event (e.g. security solutions). Use your system's original value here. +Primary group name of the file. +-- +*`file.inode`*:: ++ -- +type: keyword -*`event.risk_score_norm`*:: +Inode representing the file in the filesystem. + +-- + +*`file.mode`*:: + -- -type: float +type: keyword -Normalized risk score or priority of the event, on a scale of 0 to 100. -This is mainly useful if you use more than one system that assigns risk scores, and you want to see a normalized value across all systems. +example: 416 +Mode of the file in octal representation. -- -[float] -== file fields +*`file.mtime`*:: ++ +-- +type: date + +Last time file content was modified. + +-- -A file is defined as a set of information that has been created on, or has existed on a filesystem. File objects can be associated with host events, network events, and/or file events (e.g., those produced by File Integrity Monitoring [FIM] products or services). File fields provide details about the affected file associated with the event or metric. +*`file.owner`*:: ++ +-- +type: keyword +File owner's username. +-- *`file.path`*:: + @@ -5488,25 +5622,21 @@ Path to the file. -- -*`file.target_path`*:: +*`file.size`*:: + -- -type: keyword +type: long -Target path for symlinks. +File size in bytes (field is only added when `type` is `file`). -- -*`file.extension`*:: +*`file.target_path`*:: + -- type: keyword -example: png - -File extension. -This should allow easy filtering by file extensions. - +Target path for symlinks. -- @@ -5519,98 +5649,109 @@ File type (file, dir, or symlink). -- -*`file.device`*:: +*`file.uid`*:: + -- type: keyword -Device that is the source of the file. +The user ID (UID) or security identifier (SID) of the file owner. -- -*`file.inode`*:: -+ --- -type: keyword +[float] +== geo fields -Inode representing the file in the filesystem. +Geo fields can carry data about a specific location related to an event. +This geolocation information can be derived from techniques such as Geo IP, or be user-supplied. --- -*`file.uid`*:: +*`geo.city_name`*:: + -- type: keyword -The user ID (UID) or security identifier (SID) of the file owner. +example: Montreal +City name. -- -*`file.owner`*:: +*`geo.continent_name`*:: + -- type: keyword -File owner's username. +example: North America + +Name of the continent. -- -*`file.gid`*:: +*`geo.country_iso_code`*:: + -- type: keyword -Primary group ID (GID) of the file. +example: CA + +Country ISO code. -- -*`file.group`*:: +*`geo.country_name`*:: + -- type: keyword -Primary group name of the file. +example: Canada + +Country name. -- -*`file.mode`*:: +*`geo.location`*:: + -- -type: keyword +type: geo_point -example: 416 +example: { "lon": -73.614830, "lat": 45.505918 } -Mode of the file in octal representation. +Longitude and latitude. -- -*`file.size`*:: +*`geo.name`*:: + -- -type: long +type: keyword -format: bytes +example: boston-dc -File size in bytes (field is only added when `type` is `file`). +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`file.mtime`*:: +*`geo.region_iso_code`*:: + -- -type: date +type: keyword -Last time file content was modified. +example: CA-QC + +Region ISO code. -- -*`file.ctime`*:: +*`geo.region_name`*:: + -- -type: date +type: keyword -Last time file metadata changed. +example: Quebec + +Region name. -- @@ -5620,7 +5761,6 @@ Last time file metadata changed. The group fields are meant to represent groups that are relevant to the event. - *`group.id`*:: + -- @@ -5628,7 +5768,6 @@ type: keyword Unique identifier for the group on the system/platform. - -- *`group.name`*:: @@ -5638,133 +5777,162 @@ type: keyword Name of the group. - -- [float] == host fields -A host is defined as a general computing instance. ECS host.* fields should be populated with details about the host on which the event happened, or on which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. - +A host is defined as a general computing instance. +ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. -*`host.hostname`*:: +*`host.architecture`*:: + -- type: keyword -Hostname of the host. -It normally contains what the `hostname` command returns on the host machine. +example: x86_64 +Operating system architecture. -- -*`host.name`*:: +*`host.geo.city_name`*:: + -- type: keyword -Name of the host. -It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. +example: Montreal +City name. -- -*`host.id`*:: +*`host.geo.continent_name`*:: + -- type: keyword -Unique host id. -As hostname is not always unique, use values that are meaningful in your environment. -Example: The current usage of `beat.name`. +example: North America +Name of the continent. -- -*`host.ip`*:: +*`host.geo.country_iso_code`*:: + -- -type: ip +type: keyword -Host ip address. +example: CA +Country ISO code. -- -*`host.mac`*:: +*`host.geo.country_name`*:: + -- type: keyword -Host mac address. +example: Canada +Country name. -- -*`host.type`*:: +*`host.geo.location`*:: + -- -type: keyword +type: geo_point -Type of host. -For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. +example: { "lon": -73.614830, "lat": 45.505918 } +Longitude and latitude. -- -*`host.architecture`*:: +*`host.geo.name`*:: + -- type: keyword -example: x86_64 - -Operating system architecture. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -[float] -== os fields +*`host.geo.region_iso_code`*:: ++ +-- +type: keyword -The OS fields contain information about the operating system. +example: CA-QC +Region ISO code. +-- -*`host.os.platform`*:: +*`host.geo.region_name`*:: + -- type: keyword -example: darwin +example: Quebec -Operating system platform (such centos, ubuntu, windows). +Region name. + +-- +*`host.hostname`*:: ++ +-- +type: keyword + +Hostname of the host. +It normally contains what the `hostname` command returns on the host machine. -- -*`host.os.name`*:: +*`host.id`*:: + -- type: keyword -example: Mac OS X +Unique host id. +As hostname is not always unique, use values that are meaningful in your environment. +Example: The current usage of `beat.name`. -Operating system name, without the version. +-- + +*`host.ip`*:: ++ +-- +type: ip +Host ip address. -- -*`host.os.full`*:: +*`host.mac`*:: + -- type: keyword -example: Mac OS Mojave +Host mac address. -Operating system name, including the version or code name. +-- + +*`host.name`*:: ++ +-- +type: keyword +Name of the host. +It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. -- @@ -5777,18 +5945,16 @@ example: debian OS family (such as redhat, debian, freebsd, windows). - -- -*`host.os.version`*:: +*`host.os.full`*:: + -- type: keyword -example: 10.14.1 - -Operating system version as a raw string. +example: Mac OS Mojave +Operating system name, including the version or code name. -- @@ -5801,131 +5967,133 @@ example: 4.4.0-112-generic Operating system kernel version as a raw string. - -- -[float] -== geo fields +*`host.os.name`*:: ++ +-- +type: keyword -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. +example: Mac OS X +Operating system name, without the version. +-- -*`host.geo.location`*:: +*`host.os.platform`*:: + -- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } +type: keyword -Longitude and latitude. +example: darwin +Operating system platform (such centos, ubuntu, windows). -- -*`host.geo.continent_name`*:: +*`host.os.version`*:: + -- type: keyword -example: North America - -Name of the continent. +example: 10.14.1 +Operating system version as a raw string. -- -*`host.geo.country_name`*:: +*`host.type`*:: + -- type: keyword -example: Canada +Type of host. +For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. -Country name. +-- + +*`host.user.email`*:: ++ +-- +type: keyword +User email address. -- -*`host.geo.region_name`*:: +*`host.user.full_name`*:: + -- type: keyword -example: Quebec - -Region name. +example: Albert Einstein +User's full name, if available. -- -*`host.geo.city_name`*:: +*`host.user.group.id`*:: + -- type: keyword -example: Montreal - -City name. - +Unique identifier for the group on the system/platform. -- -*`host.geo.country_iso_code`*:: +*`host.user.group.name`*:: + -- type: keyword -example: CA +Name of the group. -Country ISO code. +-- + +*`host.user.hash`*:: ++ +-- +type: keyword +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -- -*`host.geo.region_iso_code`*:: +*`host.user.id`*:: + -- type: keyword -example: CA-QC - -Region ISO code. - +One or multiple unique identifiers of the user. -- -*`host.geo.name`*:: +*`host.user.name`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +example: albert +Short name or login of the user. -- [float] == http fields -Fields related to HTTP activity. - +Fields related to HTTP activity. Use the `url` field set to store the url of the request. -*`http.request.method`*:: +*`http.request.body.bytes`*:: + -- -type: keyword - -example: get, post, put +type: long -Http request method. -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: 887 +Size in bytes of the request body. -- @@ -5936,84 +6104,63 @@ type: keyword example: Hello world -The full http request body. - - --- - -*`http.request.referrer`*:: -+ --- -type: keyword - -example: https://blog.example.com/ - -Referrer for this HTTP request. - +The full HTTP request body. -- -*`http.response.status_code`*:: +*`http.request.bytes`*:: + -- type: long -example: 404 - -Http response status code. +example: 1437 +Total size in bytes of the request (body and headers). -- -*`http.response.body.content`*:: +*`http.request.method`*:: + -- type: keyword -example: Hello world - -The full http response body. +example: get, post, put +HTTP request method. +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`http.version`*:: +*`http.request.referrer`*:: + -- type: keyword -example: 1.1 - -Http version. +example: https://blog.example.com/ +Referrer for this HTTP request. -- -*`http.request.bytes`*:: +*`http.response.body.bytes`*:: + -- type: long -example: 1437 - -format: bytes - -Total size in bytes of the request (body and headers). +example: 887 +Size in bytes of the response body. -- -*`http.request.body.bytes`*:: +*`http.response.body.content`*:: + -- -type: long - -example: 887 - -format: bytes +type: keyword -Size in bytes of the request body. +example: Hello world +The full HTTP response body. -- @@ -6024,24 +6171,29 @@ type: long example: 1437 -format: bytes - Total size in bytes of the response (body and headers). - -- -*`http.response.body.bytes`*:: +*`http.response.status_code`*:: + -- type: long -example: 887 +example: 404 -format: bytes +HTTP response status code. -Size in bytes of the response body. +-- + +*`http.version`*:: ++ +-- +type: keyword + +example: 1.1 +HTTP version. -- @@ -6051,17 +6203,15 @@ Size in bytes of the response body. Fields which are specific to log events. - *`log.level`*:: + -- type: keyword -example: ERR - -Log level of the log event. -Some examples are `WARN`, `ERR`, `INFO`. +example: err +Original log level of the log event. +Some examples are `warn`, `error`, `i`. -- @@ -6072,96 +6222,52 @@ type: keyword example: Sep 19 08:26:10 localhost My log - This is the original log message and contains the full log message before splitting it up in multiple parts. In contrast to the `message` field which can contain an extracted part of the log message, this field contains the original, full log message. It can have already some modifications applied like encoding or new lines removed to clean up the log message. This field is not indexed and doc_values are disabled so it can't be queried but the value can be retrieved from `_source`. - -Field is not indexed. - -- [float] == network fields -The network is defined as the communication path over which a host or network event happens. The network.* fields should be populated with details about the network activity associated with an event. - - - -*`network.name`*:: -+ --- -type: keyword - -example: Guest Wifi - -Name given by operators to sections of their network. - - --- - -*`network.type`*:: -+ --- -type: keyword - -example: ipv4 - -In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. - - --- - -*`network.iana_number`*:: -+ --- -type: keyword - -example: 6 - -IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). Standardized list of protocols. This aligns well with NetFlow and sFlow related logs which use the IANA Protocol Number. - +The network is defined as the communication path over which a host or network event happens. +The network.* fields should be populated with details about the network activity associated with an event. --- -*`network.transport`*:: +*`network.application`*:: + -- type: keyword -example: tcp - -Same as network.iana_number, but instead using the Keyword name of the transport layer (udp, tcp, ipv6-icmp, etc.) -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: aim +A name given to an application level protocol. This can be arbitrarily assigned for things like microservices, but also apply to things like skype, icq, facebook, twitter. This would be used in situations where the vendor or service can be decoded such as from the source/dest IP owners, ports, or wire format. +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`network.application`*:: +*`network.bytes`*:: + -- -type: keyword - -example: aim +type: long -A name given to an application. This can be arbitrarily assigned for things like microservices, but also apply to things like skype, icq, facebook, twitter. This would be used in situations where the vendor or service can be decoded such as from the source/dest IP owners, ports, or wire format. -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: 368 +Total bytes transferred in both directions. +If `source.bytes` and `destination.bytes` are known, `network.bytes` is their sum. -- -*`network.protocol`*:: +*`network.community_id`*:: + -- type: keyword -example: http - -L7 Network protocol name. ex. http, lumberjack, transport protocol. -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: 1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0= +A hash of source and destination IPs and ports, as well as the protocol used in a communication. This is a tool-agnostic standard to identify flows. +Learn more at https://github.com/corelight/community-id-spec. -- @@ -6183,7 +6289,6 @@ Recommended values are: When mapping events from a host-based monitoring context, populate this field from the host's point of view. When mapping events from a network or perimeter-based monitoring context, populate this field from the point of view of your network perimeter. - -- *`network.forwarded_ip`*:: @@ -6195,34 +6300,27 @@ example: 192.1.1.2 Host IP address when the source IP address is the proxy. - -- -*`network.community_id`*:: +*`network.iana_number`*:: + -- type: keyword -example: 1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0= - -A hash of source and destination IPs and ports, as well as the protocol used in a communication. This is a tool-agnostic standard to identify flows. -Learn more at https://github.com/corelight/community-id-spec. +example: 6 +IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). Standardized list of protocols. This aligns well with NetFlow and sFlow related logs which use the IANA Protocol Number. -- -*`network.bytes`*:: +*`network.name`*:: + -- -type: long - -example: 368 - -format: bytes +type: keyword -Total bytes transferred in both directions. -If `source.bytes` and `destination.bytes` are known, `network.bytes` is their sum. +example: Guest Wifi +Name given by operators to sections of their network. -- @@ -6236,129 +6334,165 @@ example: 24 Total packets transferred in both directions. If `source.packets` and `destination.packets` are known, `network.packets` is their sum. - -- -[float] -== observer fields +*`network.protocol`*:: ++ +-- +type: keyword -An observer is defined as a special network, security, or application device used to detect, observe, or create network, security, or application-related events and metrics. This could be a custom hardware appliance or a server that has been configured to run special network, security, or application software. Examples include firewalls, intrusion detection/prevention systems, network monitoring sensors, web application firewalls, data loss prevention systems, and APM servers. The observer.* fields shall be populated with details of the system, if any, that detects, observes and/or creates a network, security, or application event or metric. Message queues and ETL components used in processing events or metrics are not considered observers in ECS. +example: http +L7 Network protocol name. ex. http, lumberjack, transport protocol. +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". +-- -*`observer.mac`*:: +*`network.transport`*:: + -- type: keyword -MAC address of the observer +example: tcp +Same as network.iana_number, but instead using the Keyword name of the transport layer (udp, tcp, ipv6-icmp, etc.) +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`observer.ip`*:: +*`network.type`*:: + -- -type: ip +type: keyword -IP address of the observer. +example: ipv4 +In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`observer.hostname`*:: +[float] +== observer fields + +An observer is defined as a special network, security, or application device used to detect, observe, or create network, security, or application-related events and metrics. +This could be a custom hardware appliance or a server that has been configured to run special network, security, or application software. Examples include firewalls, intrusion detection/prevention systems, network monitoring sensors, web application firewalls, data loss prevention systems, and APM servers. The observer.* fields shall be populated with details of the system, if any, that detects, observes and/or creates a network, security, or application event or metric. Message queues and ETL components used in processing events or metrics are not considered observers in ECS. + + +*`observer.geo.city_name`*:: + -- type: keyword -Hostname of the observer. +example: Montreal +City name. -- -*`observer.vendor`*:: +*`observer.geo.continent_name`*:: + -- type: keyword -observer vendor information. +example: North America +Name of the continent. -- -*`observer.version`*:: +*`observer.geo.country_iso_code`*:: + -- type: keyword -Observer version. +example: CA +Country ISO code. -- -*`observer.serial_number`*:: +*`observer.geo.country_name`*:: + -- type: keyword -Observer serial number. +example: Canada +Country name. -- -*`observer.type`*:: +*`observer.geo.location`*:: + -- -type: keyword - -example: firewall +type: geo_point -The type of the observer the data is coming from. -There is no predefined list of observer types. Some examples are `forwarder`, `firewall`, `ids`, `ips`, `proxy`, `poller`, `sensor`, `APM server`. +example: { "lon": -73.614830, "lat": 45.505918 } +Longitude and latitude. -- -[float] -== os fields +*`observer.geo.name`*:: ++ +-- +type: keyword -The OS fields contain information about the operating system. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. +-- -*`observer.os.platform`*:: +*`observer.geo.region_iso_code`*:: + -- type: keyword -example: darwin +example: CA-QC + +Region ISO code. + +-- + +*`observer.geo.region_name`*:: ++ +-- +type: keyword -Operating system platform (such centos, ubuntu, windows). +example: Quebec +Region name. -- -*`observer.os.name`*:: +*`observer.hostname`*:: + -- type: keyword -example: Mac OS X +Hostname of the observer. -Operating system name, without the version. +-- + +*`observer.ip`*:: ++ +-- +type: ip +IP address of the observer. -- -*`observer.os.full`*:: +*`observer.mac`*:: + -- type: keyword -example: Mac OS Mojave - -Operating system name, including the version or code name. - +MAC address of the observer -- @@ -6371,18 +6505,16 @@ example: debian OS family (such as redhat, debian, freebsd, windows). - -- -*`observer.os.version`*:: +*`observer.os.full`*:: + -- type: keyword -example: 10.14.1 - -Operating system version as a raw string. +example: Mac OS Mojave +Operating system name, including the version or code name. -- @@ -6395,138 +6527,102 @@ example: 4.4.0-112-generic Operating system kernel version as a raw string. - -- -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - -*`observer.geo.location`*:: -+ --- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } - -Longitude and latitude. - - --- - -*`observer.geo.continent_name`*:: +*`observer.os.name`*:: + -- type: keyword -example: North America - -Name of the continent. +example: Mac OS X +Operating system name, without the version. -- -*`observer.geo.country_name`*:: +*`observer.os.platform`*:: + -- type: keyword -example: Canada - -Country name. +example: darwin +Operating system platform (such centos, ubuntu, windows). -- -*`observer.geo.region_name`*:: +*`observer.os.version`*:: + -- type: keyword -example: Quebec - -Region name. +example: 10.14.1 +Operating system version as a raw string. -- -*`observer.geo.city_name`*:: +*`observer.serial_number`*:: + -- type: keyword -example: Montreal - -City name. - +Observer serial number. -- -*`observer.geo.country_iso_code`*:: +*`observer.type`*:: + -- type: keyword -example: CA - -Country ISO code. +example: firewall +The type of the observer the data is coming from. +There is no predefined list of observer types. Some examples are `forwarder`, `firewall`, `ids`, `ips`, `proxy`, `poller`, `sensor`, `APM server`. -- -*`observer.geo.region_iso_code`*:: +*`observer.vendor`*:: + -- type: keyword -example: CA-QC - -Region ISO code. - +observer vendor information. -- -*`observer.geo.name`*:: +*`observer.version`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. - +Observer version. -- [float] == organization fields -The organization fields enrich data with information about the company or entity the data is associated with. These fields help you arrange or filter data stored in an index by one or multiple organizations. +The organization fields enrich data with information about the company or entity the data is associated with. +These fields help you arrange or filter data stored in an index by one or multiple organizations. - -*`organization.name`*:: +*`organization.id`*:: + -- type: keyword -Organization name. - +Unique identifier for the organization. -- -*`organization.id`*:: +*`organization.name`*:: + -- type: keyword -Unique identifier for the organization. - +Organization name. -- @@ -6536,93 +6632,99 @@ Unique identifier for the organization. The OS fields contain information about the operating system. - -*`os.platform`*:: +*`os.family`*:: + -- type: keyword -example: darwin - -Operating system platform (such centos, ubuntu, windows). +example: debian +OS family (such as redhat, debian, freebsd, windows). -- -*`os.name`*:: +*`os.full`*:: + -- type: keyword -example: Mac OS X - -Operating system name, without the version. +example: Mac OS Mojave +Operating system name, including the version or code name. -- -*`os.full`*:: +*`os.kernel`*:: + -- type: keyword -example: Mac OS Mojave - -Operating system name, including the version or code name. +example: 4.4.0-112-generic +Operating system kernel version as a raw string. -- -*`os.family`*:: +*`os.name`*:: + -- type: keyword -example: debian - -OS family (such as redhat, debian, freebsd, windows). +example: Mac OS X +Operating system name, without the version. -- -*`os.version`*:: +*`os.platform`*:: + -- type: keyword -example: 10.14.1 - -Operating system version as a raw string. +example: darwin +Operating system platform (such centos, ubuntu, windows). -- -*`os.kernel`*:: +*`os.version`*:: + -- type: keyword -example: 4.4.0-112-generic - -Operating system kernel version as a raw string. +example: 10.14.1 +Operating system version as a raw string. -- [float] == process fields -These fields contain information about a process. These fields can help you correlate metrics information with a process id/name from a log message. The `process.pid` often stays in the metric itself and is copied to the global field for correlation. +These fields contain information about a process. +These fields can help you correlate metrics information with a process id/name from a log message. The `process.pid` often stays in the metric itself and is copied to the global field for correlation. + + +*`process.args`*:: ++ +-- +type: keyword + +example: ['ssh', '-l', 'user', '10.0.0.16'] +Array of process arguments. +May be filtered to protect sensitive information. +-- -*`process.pid`*:: +*`process.executable`*:: + -- -type: long +type: keyword -Process id. +example: /usr/bin/ssh +Absolute path to the process executable. -- @@ -6636,6 +6738,14 @@ example: ssh Process name. Sometimes called program name or similar. +-- + +*`process.pid`*:: ++ +-- +type: long + +Process id. -- @@ -6646,31 +6756,27 @@ type: long Process parent id. - -- -*`process.args`*:: +*`process.start`*:: + -- -type: keyword - -example: ['ssh', '-l', 'user', '10.0.0.16'] +type: date -Process arguments. -May be filtered to protect sensitive information. +example: 2016-05-23T08:05:34.853Z +The time the process started. -- -*`process.executable`*:: +*`process.thread.id`*:: + -- -type: keyword - -example: /usr/bin/ssh +type: long -Absolute path to the process executable. +example: 4242 +Thread ID. -- @@ -6682,133 +6788,180 @@ type: keyword Process title. The proctitle, some times the same as process name. Can also be different: for example a browser setting its title to the web page currently opened. - -- -*`process.thread.id`*:: +*`process.working_directory`*:: + -- -type: long - -example: 4242 +type: keyword -Thread ID. +example: /home/alice +The working directory of the process. -- -*`process.start`*:: +[float] +== related fields + +This field set is meant to facilitate pivoting around a piece of data. +Some pieces of information can be seen in many places in an ECS event. To facilitate searching for them, store an array of all seen values to their corresponding field in `related.`. +A concrete example is IP addresses, which can be under host, observer, source, destination, client, server, and network.forwarded_ip. If you append all IPs to `related.ip`, you can then search for a given IP trivially, no matter where it appeared, by querying `related.ip:a.b.c.d`. + + +*`related.ip`*:: + -- -type: date +type: ip -example: 2016-05-23T08:05:34.853Z +All of the IPs seen on your event. -The time the process started. +-- + +[float] +== server fields +A Server is defined as the responder in a network connection for events regarding sessions, connections, or bidirectional flow records. +For TCP events, the server is the receiver of the initial SYN packet(s) of the TCP connection. For other protocols, the server is generally the responder in the network transaction. Some systems actually use the term "responder" to refer the server in TCP connections. The server fields describe details about the system acting as the server in the network event. Server fields are usually populated in conjunction with client fields. Server fields are generally not populated for packet-level events. +Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. --- -*`process.working_directory`*:: +*`server.address`*:: + -- type: keyword -example: /home/alice +Some event server addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. -The working directory of the process. +-- + +*`server.bytes`*:: ++ +-- +type: long +example: 184 + +Bytes sent from the server to the client. -- -[float] -== related fields +*`server.domain`*:: ++ +-- +type: keyword + +Server domain. + +-- + +*`server.geo.city_name`*:: ++ +-- +type: keyword -This field set is meant to facilitate pivoting around a piece of data. Some pieces of information can be seen in many places in ECS. To facilitate searching for them, append values to their corresponding field in `related.`. A concrete example is IP addresses, which can be under host, observer, source, destination, client, server, and network.forwarded_ip. If you append all IPs to `related.ip`, you can then search for a given IP trivially, no matter where it appeared, by querying `related.ip:a.b.c.d`. +example: Montreal +City name. +-- -*`related.ip`*:: +*`server.geo.continent_name`*:: + -- -type: ip +type: keyword -All of the IPs seen on your event. +example: North America +Name of the continent. -- -[float] -== server fields +*`server.geo.country_iso_code`*:: ++ +-- +type: keyword -A Server is defined as the responder in a network connection for events regarding sessions, connections, or bidirectional flow records. For TCP events, the server is the receiver of the initial SYN packet(s) of the TCP connection. For other protocols, the server is generally the responder in the network transaction. Some systems actually use the term "responder" to refer the server in TCP connections. The server fields describe details about the system acting as the server in the network event. Server fields are usually populated in conjunction with client fields. Server fields are generally not populated for packet-level events. -Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. +example: CA +Country ISO code. +-- -*`server.address`*:: +*`server.geo.country_name`*:: + -- type: keyword -Some event server addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. -Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. +example: Canada +Country name. -- -*`server.ip`*:: +*`server.geo.location`*:: + -- -type: ip +type: geo_point -IP address of the server. -Can be one or multiple IPv4 or IPv6 addresses. +example: { "lon": -73.614830, "lat": 45.505918 } +Longitude and latitude. -- -*`server.port`*:: +*`server.geo.name`*:: + -- -type: long +type: keyword -Port of the server. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`server.mac`*:: +*`server.geo.region_iso_code`*:: + -- type: keyword -MAC address of the server. +example: CA-QC +Region ISO code. -- -*`server.domain`*:: +*`server.geo.region_name`*:: + -- type: keyword -Server domain. +example: Quebec +Region name. -- -*`server.bytes`*:: +*`server.ip`*:: + -- -type: long +type: ip -example: 184 +IP address of the server. +Can be one or multiple IPv4 or IPv6 addresses. -format: bytes +-- -Bytes sent from the server to the client. +*`server.mac`*:: ++ +-- +type: keyword +MAC address of the server. -- @@ -6821,120 +6974,103 @@ example: 12 Packets sent from the server to the client. - -- -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - -*`server.geo.location`*:: +*`server.port`*:: + -- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } - -Longitude and latitude. +type: long +Port of the server. -- -*`server.geo.continent_name`*:: +*`server.user.email`*:: + -- type: keyword -example: North America - -Name of the continent. - +User email address. -- -*`server.geo.country_name`*:: +*`server.user.full_name`*:: + -- type: keyword -example: Canada - -Country name. +example: Albert Einstein +User's full name, if available. -- -*`server.geo.region_name`*:: +*`server.user.group.id`*:: + -- type: keyword -example: Quebec - -Region name. - +Unique identifier for the group on the system/platform. -- -*`server.geo.city_name`*:: +*`server.user.group.name`*:: + -- type: keyword -example: Montreal - -City name. - +Name of the group. -- -*`server.geo.country_iso_code`*:: +*`server.user.hash`*:: + -- type: keyword -example: CA - -Country ISO code. - +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -- -*`server.geo.region_iso_code`*:: +*`server.user.id`*:: + -- type: keyword -example: CA-QC - -Region ISO code. - +One or multiple unique identifiers of the user. -- -*`server.geo.name`*:: +*`server.user.name`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +example: albert +Short name or login of the user. -- [float] == service fields -The service fields describe the service for or from which the data was collected. These fields help you find and correlate logs for a specific service and version. +The service fields describe the service for or from which the data was collected. +These fields help you find and correlate logs for a specific service and version. + + +*`service.ephemeral_id`*:: ++ +-- +type: keyword + +example: 8a4f500f +Ephemeral identifier of this service (if one exists). +This id normally changes across restarts, but `service.id` does not. +-- *`service.id`*:: + @@ -6947,7 +7083,6 @@ Unique identifier of the running service. This id should uniquely identify this service. This makes it possible to correlate logs and metrics for one specific service. Example: If you are experiencing issues with one redis instance, you can filter on that id to see metrics and logs for that single instance. - -- *`service.name`*:: @@ -6962,6 +7097,14 @@ The name of the service is normally user given. This allows if two instances of Also it allows for distributed services that run on multiple hosts to correlate the related instances based on the name. In the case of Elasticsearch the service.name could contain the cluster name. For Beats the service.name is by default a copy of the `service.type` field if no name is specified. +-- + +*`service.state`*:: ++ +-- +type: keyword + +Current state of the service. -- @@ -6976,115 +7119,163 @@ The type of the service data is collected from. The type can be used to group and correlate logs and metrics from one service type. Example: If logs or metrics are collected from Elasticsearch, `service.type` would be `elasticsearch`. - -- -*`service.state`*:: +*`service.version`*:: + -- type: keyword -Current state of the service. +example: 3.2.4 +Version of the service the data was collected from. +This allows to look at a data set only for a specific version of a service. -- -*`service.version`*:: +[float] +== source fields + +Source fields describe details about the source of a packet/event. +Source fields are usually populated in conjunction with destination fields. + + +*`source.address`*:: + -- type: keyword -example: 3.2.4 +Some event source addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. -Version of the service the data was collected from. -This allows to look at a data set only for a specific version of a service. +-- + +*`source.bytes`*:: ++ +-- +type: long +example: 184 + +Bytes sent from the source to the destination. -- -*`service.ephemeral_id`*:: +*`source.domain`*:: + -- type: keyword -example: 8a4f500f +Source domain. -Ephemeral identifier of this service (if one exists). -This id normally changes across restarts, but `service.id` does not. +-- + +*`source.geo.city_name`*:: ++ +-- +type: keyword + +example: Montreal +City name. -- -[float] -== source fields +*`source.geo.continent_name`*:: ++ +-- +type: keyword -Source fields describe details about the source of a packet/event. Source fields are usually populated in conjunction with destination fields. +example: North America +Name of the continent. +-- -*`source.address`*:: +*`source.geo.country_iso_code`*:: + -- type: keyword -Some event source addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. -Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. +example: CA +Country ISO code. -- -*`source.ip`*:: +*`source.geo.country_name`*:: + -- -type: ip +type: keyword -IP address of the source. -Can be one or multiple IPv4 or IPv6 addresses. +example: Canada +Country name. -- -*`source.port`*:: +*`source.geo.location`*:: + -- -type: long +type: geo_point -Port of the source. +example: { "lon": -73.614830, "lat": 45.505918 } + +Longitude and latitude. +-- +*`source.geo.name`*:: ++ -- +type: keyword -*`source.mac`*:: +example: boston-dc + +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. + +-- + +*`source.geo.region_iso_code`*:: + -- type: keyword -MAC address of the source. +example: CA-QC +Region ISO code. -- -*`source.domain`*:: +*`source.geo.region_name`*:: + -- type: keyword -Source domain. +example: Quebec +Region name. -- -*`source.bytes`*:: +*`source.ip`*:: + -- -type: long +type: ip -example: 184 +IP address of the source. +Can be one or multiple IPv4 or IPv6 addresses. -format: bytes +-- -Bytes sent from the source to the destination. +*`source.mac`*:: ++ +-- +type: keyword +MAC address of the source. -- @@ -7097,133 +7288,110 @@ example: 12 Packets sent from the source to the destination. - -- -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - -*`source.geo.location`*:: +*`source.port`*:: + -- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } - -Longitude and latitude. +type: long +Port of the source. -- -*`source.geo.continent_name`*:: +*`source.user.email`*:: + -- type: keyword -example: North America - -Name of the continent. - +User email address. -- -*`source.geo.country_name`*:: +*`source.user.full_name`*:: + -- type: keyword -example: Canada - -Country name. +example: Albert Einstein +User's full name, if available. -- -*`source.geo.region_name`*:: +*`source.user.group.id`*:: + -- type: keyword -example: Quebec - -Region name. - +Unique identifier for the group on the system/platform. -- -*`source.geo.city_name`*:: +*`source.user.group.name`*:: + -- type: keyword -example: Montreal - -City name. - +Name of the group. -- -*`source.geo.country_iso_code`*:: +*`source.user.hash`*:: + -- type: keyword -example: CA - -Country ISO code. - +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -- -*`source.geo.region_iso_code`*:: +*`source.user.id`*:: + -- type: keyword -example: CA-QC - -Region ISO code. - +One or multiple unique identifiers of the user. -- -*`source.geo.name`*:: +*`source.user.name`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +example: albert +Short name or login of the user. -- [float] == url fields -URL fields provide a complete URL, with scheme, host, and path. - +URL fields provide support for complete or partial URLs, and supports the breaking down into scheme, domain, path, and so on. -*`url.original`*:: +*`url.domain`*:: + -- type: keyword -example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch +example: www.elastic.co +Domain of the url, such as "www.elastic.co". +In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. -Unmodified original url as seen in the event source. -Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. -This field is meant to represent the URL as it was observed, complete or not. +-- + +*`url.fragment`*:: ++ +-- +type: keyword +Portion of the url after the `#`, such as "top". +The `#` is not part of the fragment. -- @@ -7236,54 +7404,47 @@ example: https://www.elastic.co:443/search?q=elasticsearch#top If full URLs are important to your use case, they should be stored in `url.full`, whether this field is reconstructed or present in the event source. - -- -*`url.scheme`*:: +*`url.original`*:: + -- type: keyword -example: https - -Scheme of the request, such as "https". -Note: The `:` is not part of the scheme. +example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch +Unmodified original url as seen in the event source. +Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. +This field is meant to represent the URL as it was observed, complete or not. -- -*`url.domain`*:: +*`url.password`*:: + -- type: keyword -example: www.elastic.co - -Domain of the request, such as "www.elastic.co". -In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. - +Password of the request. -- -*`url.port`*:: +*`url.path`*:: + -- -type: integer - -example: 443 - -Port of the request, such as 443. +type: keyword +Path of the request, such as "/search". -- -*`url.path`*:: +*`url.port`*:: + -- -type: keyword +type: long -Path of the request, such as "/search". +example: 443 +Port of the request, such as 443. -- @@ -7295,17 +7456,17 @@ type: keyword The query field describes the query string of the request, such as "q=elasticsearch". The `?` is excluded from the query string. If a URL contains no `?`, there is no query field. If there is a `?` but no query, the query field exists with an empty string. The `exists` query can be used to differentiate between the two cases. - -- -*`url.fragment`*:: +*`url.scheme`*:: + -- type: keyword -Portion of the url after the `#`, such as "top". -The `#` is not part of the fragment. +example: https +Scheme of the request, such as "https". +Note: The `:` is not part of the scheme. -- @@ -7316,67 +7477,50 @@ type: keyword Username of the request. - --- - -*`url.password`*:: -+ --- -type: keyword - -Password of the request. - - -- [float] == user fields -The user fields describe information about the user that is relevant to the event. Fields can have one entry or multiple entries. If a user has more than one id, provide an array that includes all of them. - +The user fields describe information about the user that is relevant to the event. +Fields can have one entry or multiple entries. If a user has more than one id, provide an array that includes all of them. -*`user.id`*:: +*`user.email`*:: + -- type: keyword -One or multiple unique identifiers of the user. - +User email address. -- -*`user.name`*:: +*`user.full_name`*:: + -- type: keyword -example: albert - -Short name or login of the user. +example: Albert Einstein +User's full name, if available. -- -*`user.full_name`*:: +*`user.group.id`*:: + -- type: keyword -example: Albert Einstein - -User's full name, if available. - +Unique identifier for the group on the system/platform. -- -*`user.email`*:: +*`user.group.name`*:: + -- type: keyword -User email address. - +Name of the group. -- @@ -7388,52 +7532,43 @@ type: keyword Unique user hash to correlate information for a user in anonymized form. Useful if `user.id` or `user.name` contain confidential information and cannot be used. - -- -[float] -== group fields - -The group fields are meant to represent groups that are relevant to the event. - - - -*`user.group.id`*:: +*`user.id`*:: + -- type: keyword -Unique identifier for the group on the system/platform. - +One or multiple unique identifiers of the user. -- -*`user.group.name`*:: +*`user.name`*:: + -- type: keyword -Name of the group. +example: albert +Short name or login of the user. -- [float] == user_agent fields -The user_agent fields normally come from a browser request. They often show up in web service logs coming from the parsed user agent string. +The user_agent fields normally come from a browser request. +They often show up in web service logs coming from the parsed user agent string. - -*`user_agent.original`*:: +*`user_agent.device.name`*:: + -- type: keyword -example: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1 - -Unparsed version of the user_agent. +example: iPhone +Name of the device. -- @@ -7446,85 +7581,71 @@ example: Safari Name of the user agent. - -- -*`user_agent.version`*:: +*`user_agent.original`*:: + -- type: keyword -example: 12.0 - -Version of the user agent. +example: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1 +Unparsed version of the user_agent. -- -*`user_agent.device.name`*:: +*`user_agent.os.family`*:: + -- type: keyword -example: iPhone - -Name of the device. +example: debian +OS family (such as redhat, debian, freebsd, windows). -- -[float] -== os fields - -The OS fields contain information about the operating system. - - - -*`user_agent.os.platform`*:: +*`user_agent.os.full`*:: + -- type: keyword -example: darwin - -Operating system platform (such centos, ubuntu, windows). +example: Mac OS Mojave +Operating system name, including the version or code name. -- -*`user_agent.os.name`*:: +*`user_agent.os.kernel`*:: + -- type: keyword -example: Mac OS X - -Operating system name, without the version. +example: 4.4.0-112-generic +Operating system kernel version as a raw string. -- -*`user_agent.os.full`*:: +*`user_agent.os.name`*:: + -- type: keyword -example: Mac OS Mojave - -Operating system name, including the version or code name. +example: Mac OS X +Operating system name, without the version. -- -*`user_agent.os.family`*:: +*`user_agent.os.platform`*:: + -- type: keyword -example: debian - -OS family (such as redhat, debian, freebsd, windows). +example: darwin +Operating system platform (such centos, ubuntu, windows). -- @@ -7537,28 +7658,16 @@ example: 10.14.1 Operating system version as a raw string. - --- - -*`user_agent.os.kernel`*:: -+ --- -type: keyword - -example: 4.4.0-112-generic - -Operating system kernel version as a raw string. - - -- -*`agent.hostname`*:: +*`user_agent.version`*:: + -- type: keyword -Hostname of the agent. +example: 12.0 +Version of the user agent. -- diff --git a/metricbeat/include/fields/fields.go b/metricbeat/include/fields/fields.go index 219787ef175a..53c56d4fb62f 100644 --- a/metricbeat/include/fields/fields.go +++ b/metricbeat/include/fields/fields.go @@ -32,5 +32,5 @@ func init() { // AssetLibbeatFieldsYml returns asset data. // This is the base64 encoded gzipped contents of ../libbeat/fields.yml. func AssetLibbeatFieldsYml() string { - return "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" + return "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" } diff --git a/packetbeat/docs/fields.asciidoc b/packetbeat/docs/fields.asciidoc index 09ce8a053a93..660b353d06d6 100644 --- a/packetbeat/docs/fields.asciidoc +++ b/packetbeat/docs/fields.asciidoc @@ -448,6 +448,15 @@ Contains common beat fields available in all event types. +*`agent.hostname`*:: ++ +-- +type: keyword + +Hostname of the agent. + +-- + *`beat.timezone`*:: + -- @@ -2234,8 +2243,7 @@ Image labels. [[exported-fields-ecs]] == ECS fields -ECS fields. - +ECS Fields. *`@timestamp`*:: @@ -2248,22 +2256,10 @@ example: 2016-05-23T08:05:34.853Z required: True Date/time when the event originated. -For log events this is the date/time when the event was generated, and not when it was read. +This is the date/time extracted from the event, typically representing when the event was generated by the source. +If the event source has no original timestamp, this value is typically populated by the first time the event was received by the pipeline. Required field for all events. - --- - -*`tags`*:: -+ --- -type: keyword - -example: ["production", "env2"] - -List of keywords used to tag each event. - - -- *`labels`*:: @@ -2273,11 +2269,10 @@ type: object example: {'application': 'foo-bar', 'env': 'production'} -Key/value pairs. +Custom key/value pairs. Can be used to add meta information to events. Should not contain nested objects. All values are stored as keyword. Example: `docker` and `k8s` labels. - -- *`message`*:: @@ -2287,28 +2282,51 @@ type: text example: Hello World -For log events the message field contains the log message. -In other use cases the message field can be used to concatenate different values which are then freely searchable. If multiple messages exist, they can be combined into one message. +For log events the message field contains the log message, optimized for viewing in a log viewer. +For structured logs without an original message field, other fields can be concatenated to form a human-readable summary of the event. +If multiple messages exist, they can be combined into one message. + +-- + +*`tags`*:: ++ +-- +type: keyword + +example: ["production", "env2"] +List of keywords used to tag each event. -- [float] == agent fields -The agent fields contain the data about the software entity, if any, that collects, detects, or observes events on a host, or takes measurements on a host. Examples include Beats. Agents may also run on observers. ECS agent.* fields shall be populated with details of the agent running on the host or observer where the event happened or the measurement was taken. +The agent fields contain the data about the software entity, if any, that collects, detects, or observes events on a host, or takes measurements on a host. +Examples include Beats. Agents may also run on observers. ECS agent.* fields shall be populated with details of the agent running on the host or observer where the event happened or the measurement was taken. - -*`agent.version`*:: +*`agent.ephemeral_id`*:: + -- type: keyword -example: 6.0.0-rc2 +example: 8a4f500f -Version of the agent. +Ephemeral identifier of this agent (if one exists). +This id normally changes across restarts, but `agent.id` does not. + +-- + +*`agent.id`*:: ++ +-- +type: keyword + +example: 8a4f500d +Unique identifier of this agent (if one exists). +Example: For Beats this would be beat.id. -- @@ -2319,11 +2337,10 @@ type: keyword example: foo -Name of the agent. +Custom name of the agent. This is a name that can be given to an agent. This can be helpful if for example two Filebeat instances are running on the same host but a human readable separation is needed on which Filebeat instance data is coming from. If no name is given, the name is often left empty. - -- *`agent.type`*:: @@ -2336,43 +2353,27 @@ example: filebeat Type of the agent. The agent type stays always the same and should be given by the agent used. In case of Filebeat the agent would always be Filebeat also if two Filebeat instances are run on the same machine. - --- - -*`agent.id`*:: -+ --- -type: keyword - -example: 8a4f500d - -Unique identifier of this agent (if one exists). -Example: For Beats this would be beat.id. - - -- -*`agent.ephemeral_id`*:: +*`agent.version`*:: + -- type: keyword -example: 8a4f500f - -Ephemeral identifier of this agent (if one exists). -This id normally changes across restarts, but `agent.id` does not. +example: 6.0.0-rc2 +Version of the agent. -- [float] == client fields -A client is defined as the initiator of a network connection for events regarding sessions, connections, or bidirectional flow records. For TCP events, the client is the initiator of the TCP connection that sends the SYN packet(s). For other protocols, the client is generally the initiator or requestor in the network transaction. Some systems use the term "originator" to refer the client in TCP connections. The client fields describe details about the system acting as the client in the network event. Client fields are usually populated in conjunction with server fields. Client fields are generally not populated for packet-level events. +A client is defined as the initiator of a network connection for events regarding sessions, connections, or bidirectional flow records. +For TCP events, the client is the initiator of the TCP connection that sends the SYN packet(s). For other protocols, the client is generally the initiator or requestor in the network transaction. Some systems use the term "originator" to refer the client in TCP connections. The client fields describe details about the system acting as the client in the network event. Client fields are usually populated in conjunction with server fields. Client fields are generally not populated for packet-level events. Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. - *`client.address`*:: + -- @@ -2381,83 +2382,72 @@ type: keyword Some event client addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. - -- -*`client.ip`*:: +*`client.bytes`*:: + -- -type: ip +type: long -IP address of the client. -Can be one or multiple IPv4 or IPv6 addresses. +example: 184 +Bytes sent from the client to the server. -- -*`client.port`*:: +*`client.domain`*:: + -- -type: long - -Port of the client. +type: keyword +Client domain. -- -*`client.mac`*:: +*`client.geo.city_name`*:: + -- type: keyword -MAC address of the client. +example: Montreal +City name. -- -*`client.domain`*:: +*`client.geo.continent_name`*:: + -- type: keyword -Client domain. +example: North America +Name of the continent. -- -*`client.bytes`*:: +*`client.geo.country_iso_code`*:: + -- -type: long - -example: 184 - -format: bytes +type: keyword -Bytes sent from the client to the server. +example: CA +Country ISO code. -- -*`client.packets`*:: +*`client.geo.country_name`*:: + -- -type: long - -example: 12 +type: keyword -Packets sent from the client to the server. +example: Canada +Country name. -- -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - *`client.geo.location`*:: + -- @@ -2467,30 +2457,29 @@ example: { "lon": -73.614830, "lat": 45.505918 } Longitude and latitude. - -- -*`client.geo.continent_name`*:: +*`client.geo.name`*:: + -- type: keyword -example: North America - -Name of the continent. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`client.geo.country_name`*:: +*`client.geo.region_iso_code`*:: + -- type: keyword -example: Canada - -Country name. +example: CA-QC +Region ISO code. -- @@ -2503,274 +2492,274 @@ example: Quebec Region name. - -- -*`client.geo.city_name`*:: +*`client.ip`*:: + -- -type: keyword - -example: Montreal - -City name. +type: ip +IP address of the client. +Can be one or multiple IPv4 or IPv6 addresses. -- -*`client.geo.country_iso_code`*:: +*`client.mac`*:: + -- type: keyword -example: CA - -Country ISO code. - +MAC address of the client. -- -*`client.geo.region_iso_code`*:: +*`client.packets`*:: + -- -type: keyword - -example: CA-QC +type: long -Region ISO code. +example: 12 +Packets sent from the client to the server. -- -*`client.geo.name`*:: +*`client.port`*:: + -- -type: keyword - -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +type: long +Port of the client. -- -[float] -== cloud fields - -Fields related to the cloud or infrastructure the events are coming from. - - - -*`cloud.provider`*:: +*`client.user.email`*:: + -- type: keyword -example: ec2 - -Name of the cloud provider. Example values are ec2, gce, or digitalocean. - +User email address. -- -*`cloud.availability_zone`*:: +*`client.user.full_name`*:: + -- type: keyword -example: us-east-1c - -Availability zone in which this host is running. +example: Albert Einstein +User's full name, if available. -- -*`cloud.region`*:: +*`client.user.group.id`*:: + -- type: keyword -example: us-east-1 - -Region in which this host is running. - +Unique identifier for the group on the system/platform. -- -*`cloud.instance.id`*:: +*`client.user.group.name`*:: + -- type: keyword -example: i-1234567890abcdef0 - -Instance ID of the host machine. - +Name of the group. -- -*`cloud.instance.name`*:: +*`client.user.hash`*:: + -- type: keyword -Instance name of the host machine. - +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -- -*`cloud.machine.type`*:: +*`client.user.id`*:: + -- type: keyword -example: t2.medium - -Machine type of the host machine. - +One or multiple unique identifiers of the user. -- -*`cloud.account.id`*:: +*`client.user.name`*:: + -- type: keyword -example: 666777888999 - -The cloud account or organization id used to identify different entities in a multi-tenant environment. -Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. +example: albert +Short name or login of the user. -- [float] -== container fields - -Container fields are used for meta information about the specific container that is the source of information. These fields help correlate data based containers from any runtime. +== cloud fields +Fields related to the cloud or infrastructure the events are coming from. -*`container.runtime`*:: +*`cloud.account.id`*:: + -- type: keyword -example: docker - -Runtime managing this container. +example: 666777888999 +The cloud account or organization id used to identify different entities in a multi-tenant environment. +Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. -- -*`container.id`*:: +*`cloud.availability_zone`*:: + -- type: keyword -Unique container id. +example: us-east-1c +Availability zone in which this host is running. -- -*`container.image.name`*:: +*`cloud.instance.id`*:: + -- type: keyword -Name of the image the container was built on. +example: i-1234567890abcdef0 +Instance ID of the host machine. -- -*`container.image.tag`*:: +*`cloud.instance.name`*:: + -- type: keyword -Container image tag. +Instance name of the host machine. +-- +*`cloud.machine.type`*:: ++ -- +type: keyword -*`container.name`*:: +example: t2.medium + +Machine type of the host machine. + +-- + +*`cloud.provider`*:: + -- type: keyword -Container name. +example: aws +Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. -- -*`container.labels`*:: +*`cloud.region`*:: + -- -type: object +type: keyword -Image labels. +example: us-east-1 +Region in which this host is running. -- [float] -== destination fields - -Destination fields describe details about the destination of a packet/event. Destination fields are usually populated in conjunction with source fields. +== container fields +Container fields are used for meta information about the specific container that is the source of information. +These fields help correlate data based containers from any runtime. -*`destination.address`*:: +*`container.id`*:: + -- type: keyword -Some event destination addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. -Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. - +Unique container id. -- -*`destination.ip`*:: +*`container.image.name`*:: + -- -type: ip +type: keyword -IP address of the destination. -Can be one or multiple IPv4 or IPv6 addresses. +Name of the image the container was built on. +-- +*`container.image.tag`*:: ++ -- +type: keyword -*`destination.port`*:: +Container image tag. + +-- + +*`container.labels`*:: + -- -type: long +type: object -Port of the destination. +Image labels. + +-- + +*`container.name`*:: ++ +-- +type: keyword +Container name. -- -*`destination.mac`*:: +*`container.runtime`*:: + -- type: keyword -MAC address of the destination. +example: docker +Runtime managing this container. -- -*`destination.domain`*:: +[float] +== destination fields + +Destination fields describe details about the destination of a packet/event. +Destination fields are usually populated in conjunction with source fields. + + +*`destination.address`*:: + -- type: keyword -Destination domain. - +Some event destination addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. -- @@ -2781,31 +2770,62 @@ type: long example: 184 -format: bytes - Bytes sent from the destination to the source. +-- + +*`destination.domain`*:: ++ +-- +type: keyword + +Destination domain. -- -*`destination.packets`*:: +*`destination.geo.city_name`*:: + -- -type: long +type: keyword -example: 12 +example: Montreal -Packets sent from the destination to the source. +City name. +-- +*`destination.geo.continent_name`*:: ++ -- +type: keyword -[float] -== geo fields +example: North America -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. +Name of the continent. +-- +*`destination.geo.country_iso_code`*:: ++ +-- +type: keyword + +example: CA + +Country ISO code. + +-- + +*`destination.geo.country_name`*:: ++ +-- +type: keyword + +example: Canada + +Country name. + +-- *`destination.geo.location`*:: + @@ -2816,30 +2836,29 @@ example: { "lon": -73.614830, "lat": 45.505918 } Longitude and latitude. - -- -*`destination.geo.continent_name`*:: +*`destination.geo.name`*:: + -- type: keyword -example: North America - -Name of the continent. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`destination.geo.country_name`*:: +*`destination.geo.region_iso_code`*:: + -- type: keyword -example: Canada - -Country name. +example: CA-QC +Region ISO code. -- @@ -2852,56 +2871,112 @@ example: Quebec Region name. +-- +*`destination.ip`*:: ++ -- +type: ip -*`destination.geo.city_name`*:: +IP address of the destination. +Can be one or multiple IPv4 or IPv6 addresses. + +-- + +*`destination.mac`*:: + -- type: keyword -example: Montreal +MAC address of the destination. -City name. +-- +*`destination.packets`*:: ++ +-- +type: long + +example: 12 + +Packets sent from the destination to the source. -- -*`destination.geo.country_iso_code`*:: +*`destination.port`*:: ++ +-- +type: long + +Port of the destination. + +-- + +*`destination.user.email`*:: + -- type: keyword -example: CA +User email address. -Country ISO code. +-- +*`destination.user.full_name`*:: ++ +-- +type: keyword + +example: Albert Einstein + +User's full name, if available. -- -*`destination.geo.region_iso_code`*:: +*`destination.user.group.id`*:: + -- type: keyword -example: CA-QC +Unique identifier for the group on the system/platform. -Region ISO code. +-- +*`destination.user.group.name`*:: ++ +-- +type: keyword + +Name of the group. -- -*`destination.geo.name`*:: +*`destination.user.hash`*:: + -- type: keyword -example: boston-dc +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +-- +*`destination.user.id`*:: ++ +-- +type: keyword + +One or multiple unique identifiers of the user. + +-- + +*`destination.user.name`*:: ++ +-- +type: keyword + +example: albert + +Short name or login of the user. -- @@ -2911,29 +2986,35 @@ Not typically used in automated geolocation. Meta-information specific to ECS. - *`ecs.version`*:: + -- type: keyword -example: 1.0.0-beta2 +example: 1.0.0 required: True ECS version this event conforms to. `ecs.version` is a required field and must exist in all events. When querying across multiple indices -- which may conform to slightly different ECS versions -- this field lets integrations adjust to the schema version of the events. -The current version is 1.0.0-beta2 . - -- [float] == error fields -These fields can represent errors of any kind. Use them for errors that happen while fetching events or in cases where the event itself contains an error. +These fields can represent errors of any kind. +Use them for errors that happen while fetching events or in cases where the event itself contains an error. + + +*`error.code`*:: ++ +-- +type: keyword +Error code describing the error. +-- *`error.id`*:: + @@ -2942,7 +3023,6 @@ type: keyword Unique identifier for the error. - -- *`error.message`*:: @@ -2952,98 +3032,113 @@ type: text Error message. - -- -*`error.code`*:: +[float] +== event fields + +The event fields are used for context information about the log or metric event itself. +A log is defined as an event containing details of something that happened. Log events must include the time at which the thing happened. Examples of log events include a process starting on a host, a network packet being sent from a source to a destination, or a network connection between a client and a server being initiated or closed. A metric is defined as an event containing one or more numerical or categorical measurements and the time at which the measurement was taken. Examples of metric events include memory pressure measured on a host, or vulnerabilities measured on a scanned host. + + +*`event.action`*:: + -- type: keyword -Error code describing the error. +example: user-password-change +The action captured by the event. +This describes the information in the event. It is more specific than `event.category`. Examples are `group-add`, `process-started`, `file-created`. The value is normally defined by the implementer. -- -[float] -== event fields +*`event.category`*:: ++ +-- +type: keyword -The event fields are used for context information about the log or metric event itself. A log is defined as an event containing details of something that happened. Log events must include the time at which the thing happened. Examples of log events include a process starting on a host, a network packet being sent from a source to a destination, or a network connection between a client and a server being initiated or closed. A metric is defined as an event containing one or more numerical or categorical measurements and the time at which the measurement was taken. Examples of metric events include memory pressure measured on a host, or vulnerabilities measured on a scanned host. +example: user-management +Event category. +This contains high-level information about the contents of the event. It is more generic than `event.action`, in the sense that typically a category contains multiple actions. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +-- -*`event.id`*:: +*`event.created`*:: + -- -type: keyword - -example: 8a4f500d - -Unique ID to describe the event. +type: date +event.created contains the date/time when the event was first read by an agent, or by your pipeline. +This field is distinct from @timestamp in that @timestamp typically contain the time extracted from the original event. +In most situations, these two timestamps will be slightly different. The difference can be used to calculate the delay between your source generating an event, and the time when your agent first processed it. This can be used to monitor your agent's or pipeline's ability to keep up with your event source. +In case the two timestamps are identical, @timestamp should be used. -- -*`event.kind`*:: +*`event.dataset`*:: + -- type: keyword -example: state - -The kind of the event. -This gives information about what type of information the event contains, without being specific to the contents of the event. Examples are `event`, `state`, `alarm`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +example: stats +Name of the dataset. +The concept of a `dataset` (fileset / metricset) is used in Beats as a subset of modules. It contains the information which is currently stored in metricset.name and metricset.module or fileset.name. -- -*`event.category`*:: +*`event.duration`*:: + -- -type: keyword +type: long -example: user-management +Duration of the event in nanoseconds. +If event.start and event.end are known this value should be the difference between the end and start time. -Event category. -This contains high-level information about the contents of the event. It is more generic than `event.action`, in the sense that typically a category contains multiple actions. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +-- +*`event.end`*:: ++ +-- +type: date + +event.end contains the date when the event ended or when the activity was last observed. -- -*`event.action`*:: +*`event.hash`*:: + -- type: keyword -example: user-password-change - -The action captured by the event. -This describes the information in the event. It is more specific than `event.category`. Examples are `group-add`, `process-started`, `file-created`. The value is normally defined by the implementer. +example: 123456789012345678901234567890ABCD +Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate log integrity. -- -*`event.outcome`*:: +*`event.id`*:: + -- type: keyword -example: success - -The outcome of the event. -If the event describes an action, this fields contains the outcome of that action. Examples outcomes are `success` and `failure`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +example: 8a4f500d +Unique ID to describe the event. -- -*`event.type`*:: +*`event.kind`*:: + -- type: keyword -Reserved for future usage. -Please avoid using this field for user data. +example: state +The kind of the event. +This gives information about what type of information the event contains, without being specific to the contents of the event. Examples are `event`, `state`, `alarm`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. -- @@ -3057,71 +3152,68 @@ example: mysql Name of the module this data is coming from. This information is coming from the modules used in Beats or Logstash. - -- -*`event.dataset`*:: +*`event.original`*:: + -- type: keyword -example: stats - -Name of the dataset. -The concept of a `dataset` (fileset / metricset) is used in Beats as a subset of modules. It contains the information which is currently stored in metricset.name and metricset.module or fileset.name. +example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 +Raw text message of entire event. Used to demonstrate log integrity. +This field is not indexed and doc_values are disabled. It cannot be searched, but it can be retrieved from `_source`. -- -*`event.severity`*:: +*`event.outcome`*:: + -- -type: long - -example: 7 +type: keyword -Severity describes the severity of the event. What the different severity values mean can very different between use cases. It's up to the implementer to make sure severities are consistent across events. +example: success +The outcome of the event. +If the event describes an action, this fields contains the outcome of that action. Examples outcomes are `success` and `failure`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. -- -*`event.original`*:: +*`event.risk_score`*:: + -- -type: keyword +type: float -example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 +Risk score or priority of the event (e.g. security solutions). Use your system's original value here. -Raw text message of entire event. Used to demonstrate log integrity. -This field is not indexed and doc_values are disabled. It cannot be searched, but it can be retrieved from `_source`. +-- +*`event.risk_score_norm`*:: ++ +-- +type: float -Field is not indexed. +Normalized risk score or priority of the event, on a scale of 0 to 100. +This is mainly useful if you use more than one system that assigns risk scores, and you want to see a normalized value across all systems. -- -*`event.hash`*:: +*`event.severity`*:: + -- -type: keyword - -example: 123456789012345678901234567890ABCD +type: long -Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate log integrity. +example: 7 +Severity describes the original severity of the event. What the different severity values mean can very different between use cases. It's up to the implementer to make sure severities are consistent across events. -- -*`event.duration`*:: +*`event.start`*:: + -- -type: long - -format: duration - -Duration of the event in nanoseconds. -If event.start and event.end are known this value should be the difference between the end and start time. +type: date +event.start contains the date when the event started or when the activity was first observed. -- @@ -3133,68 +3225,110 @@ type: keyword This field should be populated when the event's timestamp does not include timezone information already (e.g. default Syslog timestamps). It's optional otherwise. Acceptable timezone formats are: a canonical ID (e.g. "Europe/Amsterdam"), abbreviated (e.g. "EST") or an HH:mm differential (e.g. "-05:00"). +-- +*`event.type`*:: ++ -- +type: keyword -*`event.created`*:: +Reserved for future usage. +Please avoid using this field for user data. + +-- + +[float] +== file fields + +A file is defined as a set of information that has been created on, or has existed on a filesystem. +File objects can be associated with host events, network events, and/or file events (e.g., those produced by File Integrity Monitoring [FIM] products or services). File fields provide details about the affected file associated with the event or metric. + + +*`file.ctime`*:: + -- type: date -event.created contains the date when the event was created. -This timestamp is distinct from @timestamp in that @timestamp contains the processed timestamp. For logs these two timestamps can be different as the timestamp in the log line and when the event is read for example by Filebeat are not identical. `@timestamp` must contain the timestamp extracted from the log line, event.created when the log line is read. The same could apply to package capturing where @timestamp contains the timestamp extracted from the network package and event.created when the event was created. -In case the two timestamps are identical, @timestamp should be used. +Last time file metadata changed. +-- +*`file.device`*:: ++ -- +type: keyword -*`event.start`*:: +Device that is the source of the file. + +-- + +*`file.extension`*:: + -- -type: date +type: keyword -event.start contains the date when the event started or when the activity was first observed. +example: png +File extension. +This should allow easy filtering by file extensions. -- -*`event.end`*:: +*`file.gid`*:: + -- -type: date - -event.end contains the date when the event ended or when the activity was last observed. +type: keyword +Primary group ID (GID) of the file. -- -*`event.risk_score`*:: +*`file.group`*:: + -- -type: float +type: keyword -Risk score or priority of the event (e.g. security solutions). Use your system's original value here. +Primary group name of the file. +-- +*`file.inode`*:: ++ -- +type: keyword -*`event.risk_score_norm`*:: +Inode representing the file in the filesystem. + +-- + +*`file.mode`*:: + -- -type: float +type: keyword -Normalized risk score or priority of the event, on a scale of 0 to 100. -This is mainly useful if you use more than one system that assigns risk scores, and you want to see a normalized value across all systems. +example: 416 +Mode of the file in octal representation. -- -[float] -== file fields +*`file.mtime`*:: ++ +-- +type: date + +Last time file content was modified. -A file is defined as a set of information that has been created on, or has existed on a filesystem. File objects can be associated with host events, network events, and/or file events (e.g., those produced by File Integrity Monitoring [FIM] products or services). File fields provide details about the affected file associated with the event or metric. +-- + +*`file.owner`*:: ++ +-- +type: keyword +File owner's username. +-- *`file.path`*:: + @@ -3205,25 +3339,21 @@ Path to the file. -- -*`file.target_path`*:: +*`file.size`*:: + -- -type: keyword +type: long -Target path for symlinks. +File size in bytes (field is only added when `type` is `file`). -- -*`file.extension`*:: +*`file.target_path`*:: + -- type: keyword -example: png - -File extension. -This should allow easy filtering by file extensions. - +Target path for symlinks. -- @@ -3236,98 +3366,109 @@ File type (file, dir, or symlink). -- -*`file.device`*:: +*`file.uid`*:: + -- type: keyword -Device that is the source of the file. +The user ID (UID) or security identifier (SID) of the file owner. -- -*`file.inode`*:: -+ --- -type: keyword +[float] +== geo fields -Inode representing the file in the filesystem. +Geo fields can carry data about a specific location related to an event. +This geolocation information can be derived from techniques such as Geo IP, or be user-supplied. --- -*`file.uid`*:: +*`geo.city_name`*:: + -- type: keyword -The user ID (UID) or security identifier (SID) of the file owner. +example: Montreal +City name. -- -*`file.owner`*:: +*`geo.continent_name`*:: + -- type: keyword -File owner's username. +example: North America + +Name of the continent. -- -*`file.gid`*:: +*`geo.country_iso_code`*:: + -- type: keyword -Primary group ID (GID) of the file. +example: CA + +Country ISO code. -- -*`file.group`*:: +*`geo.country_name`*:: + -- type: keyword -Primary group name of the file. +example: Canada + +Country name. -- -*`file.mode`*:: +*`geo.location`*:: + -- -type: keyword +type: geo_point -example: 416 +example: { "lon": -73.614830, "lat": 45.505918 } -Mode of the file in octal representation. +Longitude and latitude. -- -*`file.size`*:: +*`geo.name`*:: + -- -type: long +type: keyword -format: bytes +example: boston-dc -File size in bytes (field is only added when `type` is `file`). +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`file.mtime`*:: +*`geo.region_iso_code`*:: + -- -type: date +type: keyword -Last time file content was modified. +example: CA-QC + +Region ISO code. -- -*`file.ctime`*:: +*`geo.region_name`*:: + -- -type: date +type: keyword -Last time file metadata changed. +example: Quebec + +Region name. -- @@ -3337,7 +3478,6 @@ Last time file metadata changed. The group fields are meant to represent groups that are relevant to the event. - *`group.id`*:: + -- @@ -3345,7 +3485,6 @@ type: keyword Unique identifier for the group on the system/platform. - -- *`group.name`*:: @@ -3355,133 +3494,162 @@ type: keyword Name of the group. - -- [float] == host fields -A host is defined as a general computing instance. ECS host.* fields should be populated with details about the host on which the event happened, or on which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. +A host is defined as a general computing instance. +ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. - -*`host.hostname`*:: +*`host.architecture`*:: + -- type: keyword -Hostname of the host. -It normally contains what the `hostname` command returns on the host machine. +example: x86_64 +Operating system architecture. -- -*`host.name`*:: +*`host.geo.city_name`*:: + -- type: keyword -Name of the host. -It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. +example: Montreal +City name. -- -*`host.id`*:: +*`host.geo.continent_name`*:: + -- type: keyword -Unique host id. -As hostname is not always unique, use values that are meaningful in your environment. -Example: The current usage of `beat.name`. +example: North America +Name of the continent. -- -*`host.ip`*:: +*`host.geo.country_iso_code`*:: + -- -type: ip +type: keyword -Host ip address. +example: CA +Country ISO code. -- -*`host.mac`*:: +*`host.geo.country_name`*:: + -- type: keyword -Host mac address. +example: Canada +Country name. -- -*`host.type`*:: +*`host.geo.location`*:: + -- -type: keyword +type: geo_point -Type of host. -For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. +example: { "lon": -73.614830, "lat": 45.505918 } +Longitude and latitude. -- -*`host.architecture`*:: +*`host.geo.name`*:: + -- type: keyword -example: x86_64 - -Operating system architecture. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -[float] -== os fields +*`host.geo.region_iso_code`*:: ++ +-- +type: keyword -The OS fields contain information about the operating system. +example: CA-QC +Region ISO code. +-- -*`host.os.platform`*:: +*`host.geo.region_name`*:: + -- type: keyword -example: darwin +example: Quebec -Operating system platform (such centos, ubuntu, windows). +Region name. +-- +*`host.hostname`*:: ++ -- +type: keyword -*`host.os.name`*:: +Hostname of the host. +It normally contains what the `hostname` command returns on the host machine. + +-- + +*`host.id`*:: + -- type: keyword -example: Mac OS X +Unique host id. +As hostname is not always unique, use values that are meaningful in your environment. +Example: The current usage of `beat.name`. -Operating system name, without the version. +-- +*`host.ip`*:: ++ +-- +type: ip + +Host ip address. -- -*`host.os.full`*:: +*`host.mac`*:: + -- type: keyword -example: Mac OS Mojave +Host mac address. -Operating system name, including the version or code name. +-- + +*`host.name`*:: ++ +-- +type: keyword +Name of the host. +It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. -- @@ -3494,18 +3662,16 @@ example: debian OS family (such as redhat, debian, freebsd, windows). - -- -*`host.os.version`*:: +*`host.os.full`*:: + -- type: keyword -example: 10.14.1 - -Operating system version as a raw string. +example: Mac OS Mojave +Operating system name, including the version or code name. -- @@ -3518,131 +3684,133 @@ example: 4.4.0-112-generic Operating system kernel version as a raw string. - -- -[float] -== geo fields +*`host.os.name`*:: ++ +-- +type: keyword -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. +example: Mac OS X +Operating system name, without the version. +-- -*`host.geo.location`*:: +*`host.os.platform`*:: + -- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } +type: keyword -Longitude and latitude. +example: darwin +Operating system platform (such centos, ubuntu, windows). -- -*`host.geo.continent_name`*:: +*`host.os.version`*:: + -- type: keyword -example: North America - -Name of the continent. +example: 10.14.1 +Operating system version as a raw string. -- -*`host.geo.country_name`*:: +*`host.type`*:: + -- type: keyword -example: Canada +Type of host. +For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. -Country name. +-- + +*`host.user.email`*:: ++ +-- +type: keyword +User email address. -- -*`host.geo.region_name`*:: +*`host.user.full_name`*:: + -- type: keyword -example: Quebec - -Region name. +example: Albert Einstein +User's full name, if available. -- -*`host.geo.city_name`*:: +*`host.user.group.id`*:: + -- type: keyword -example: Montreal - -City name. - +Unique identifier for the group on the system/platform. -- -*`host.geo.country_iso_code`*:: +*`host.user.group.name`*:: + -- type: keyword -example: CA +Name of the group. -Country ISO code. +-- + +*`host.user.hash`*:: ++ +-- +type: keyword +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -- -*`host.geo.region_iso_code`*:: +*`host.user.id`*:: + -- type: keyword -example: CA-QC - -Region ISO code. - +One or multiple unique identifiers of the user. -- -*`host.geo.name`*:: +*`host.user.name`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +example: albert +Short name or login of the user. -- [float] == http fields -Fields related to HTTP activity. +Fields related to HTTP activity. Use the `url` field set to store the url of the request. - -*`http.request.method`*:: +*`http.request.body.bytes`*:: + -- -type: keyword - -example: get, post, put +type: long -Http request method. -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: 887 +Size in bytes of the request body. -- @@ -3653,84 +3821,63 @@ type: keyword example: Hello world -The full http request body. - - --- - -*`http.request.referrer`*:: -+ --- -type: keyword - -example: https://blog.example.com/ - -Referrer for this HTTP request. - +The full HTTP request body. -- -*`http.response.status_code`*:: +*`http.request.bytes`*:: + -- type: long -example: 404 - -Http response status code. +example: 1437 +Total size in bytes of the request (body and headers). -- -*`http.response.body.content`*:: +*`http.request.method`*:: + -- type: keyword -example: Hello world - -The full http response body. +example: get, post, put +HTTP request method. +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`http.version`*:: +*`http.request.referrer`*:: + -- type: keyword -example: 1.1 - -Http version. +example: https://blog.example.com/ +Referrer for this HTTP request. -- -*`http.request.bytes`*:: +*`http.response.body.bytes`*:: + -- type: long -example: 1437 - -format: bytes - -Total size in bytes of the request (body and headers). +example: 887 +Size in bytes of the response body. -- -*`http.request.body.bytes`*:: +*`http.response.body.content`*:: + -- -type: long - -example: 887 - -format: bytes +type: keyword -Size in bytes of the request body. +example: Hello world +The full HTTP response body. -- @@ -3741,24 +3888,29 @@ type: long example: 1437 -format: bytes - Total size in bytes of the response (body and headers). - -- -*`http.response.body.bytes`*:: +*`http.response.status_code`*:: + -- type: long -example: 887 +example: 404 -format: bytes +HTTP response status code. -Size in bytes of the response body. +-- + +*`http.version`*:: ++ +-- +type: keyword + +example: 1.1 +HTTP version. -- @@ -3768,17 +3920,15 @@ Size in bytes of the response body. Fields which are specific to log events. - *`log.level`*:: + -- type: keyword -example: ERR - -Log level of the log event. -Some examples are `WARN`, `ERR`, `INFO`. +example: err +Original log level of the log event. +Some examples are `warn`, `error`, `i`. -- @@ -3789,96 +3939,52 @@ type: keyword example: Sep 19 08:26:10 localhost My log - This is the original log message and contains the full log message before splitting it up in multiple parts. In contrast to the `message` field which can contain an extracted part of the log message, this field contains the original, full log message. It can have already some modifications applied like encoding or new lines removed to clean up the log message. This field is not indexed and doc_values are disabled so it can't be queried but the value can be retrieved from `_source`. - -Field is not indexed. - -- [float] == network fields -The network is defined as the communication path over which a host or network event happens. The network.* fields should be populated with details about the network activity associated with an event. - - - -*`network.name`*:: -+ --- -type: keyword - -example: Guest Wifi - -Name given by operators to sections of their network. - - --- - -*`network.type`*:: -+ --- -type: keyword - -example: ipv4 - -In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. - - --- - -*`network.iana_number`*:: -+ --- -type: keyword - -example: 6 - -IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). Standardized list of protocols. This aligns well with NetFlow and sFlow related logs which use the IANA Protocol Number. - +The network is defined as the communication path over which a host or network event happens. +The network.* fields should be populated with details about the network activity associated with an event. --- -*`network.transport`*:: +*`network.application`*:: + -- type: keyword -example: tcp - -Same as network.iana_number, but instead using the Keyword name of the transport layer (udp, tcp, ipv6-icmp, etc.) -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: aim +A name given to an application level protocol. This can be arbitrarily assigned for things like microservices, but also apply to things like skype, icq, facebook, twitter. This would be used in situations where the vendor or service can be decoded such as from the source/dest IP owners, ports, or wire format. +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`network.application`*:: +*`network.bytes`*:: + -- -type: keyword - -example: aim +type: long -A name given to an application. This can be arbitrarily assigned for things like microservices, but also apply to things like skype, icq, facebook, twitter. This would be used in situations where the vendor or service can be decoded such as from the source/dest IP owners, ports, or wire format. -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: 368 +Total bytes transferred in both directions. +If `source.bytes` and `destination.bytes` are known, `network.bytes` is their sum. -- -*`network.protocol`*:: +*`network.community_id`*:: + -- type: keyword -example: http - -L7 Network protocol name. ex. http, lumberjack, transport protocol. -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: 1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0= +A hash of source and destination IPs and ports, as well as the protocol used in a communication. This is a tool-agnostic standard to identify flows. +Learn more at https://github.com/corelight/community-id-spec. -- @@ -3900,7 +4006,6 @@ Recommended values are: When mapping events from a host-based monitoring context, populate this field from the host's point of view. When mapping events from a network or perimeter-based monitoring context, populate this field from the point of view of your network perimeter. - -- *`network.forwarded_ip`*:: @@ -3912,34 +4017,27 @@ example: 192.1.1.2 Host IP address when the source IP address is the proxy. - -- -*`network.community_id`*:: +*`network.iana_number`*:: + -- type: keyword -example: 1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0= - -A hash of source and destination IPs and ports, as well as the protocol used in a communication. This is a tool-agnostic standard to identify flows. -Learn more at https://github.com/corelight/community-id-spec. +example: 6 +IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). Standardized list of protocols. This aligns well with NetFlow and sFlow related logs which use the IANA Protocol Number. -- -*`network.bytes`*:: +*`network.name`*:: + -- -type: long - -example: 368 - -format: bytes +type: keyword -Total bytes transferred in both directions. -If `source.bytes` and `destination.bytes` are known, `network.bytes` is their sum. +example: Guest Wifi +Name given by operators to sections of their network. -- @@ -3953,129 +4051,165 @@ example: 24 Total packets transferred in both directions. If `source.packets` and `destination.packets` are known, `network.packets` is their sum. - -- -[float] -== observer fields +*`network.protocol`*:: ++ +-- +type: keyword -An observer is defined as a special network, security, or application device used to detect, observe, or create network, security, or application-related events and metrics. This could be a custom hardware appliance or a server that has been configured to run special network, security, or application software. Examples include firewalls, intrusion detection/prevention systems, network monitoring sensors, web application firewalls, data loss prevention systems, and APM servers. The observer.* fields shall be populated with details of the system, if any, that detects, observes and/or creates a network, security, or application event or metric. Message queues and ETL components used in processing events or metrics are not considered observers in ECS. +example: http +L7 Network protocol name. ex. http, lumberjack, transport protocol. +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". +-- -*`observer.mac`*:: +*`network.transport`*:: + -- type: keyword -MAC address of the observer +example: tcp +Same as network.iana_number, but instead using the Keyword name of the transport layer (udp, tcp, ipv6-icmp, etc.) +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`observer.ip`*:: +*`network.type`*:: + -- -type: ip +type: keyword -IP address of the observer. +example: ipv4 +In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`observer.hostname`*:: +[float] +== observer fields + +An observer is defined as a special network, security, or application device used to detect, observe, or create network, security, or application-related events and metrics. +This could be a custom hardware appliance or a server that has been configured to run special network, security, or application software. Examples include firewalls, intrusion detection/prevention systems, network monitoring sensors, web application firewalls, data loss prevention systems, and APM servers. The observer.* fields shall be populated with details of the system, if any, that detects, observes and/or creates a network, security, or application event or metric. Message queues and ETL components used in processing events or metrics are not considered observers in ECS. + + +*`observer.geo.city_name`*:: + -- type: keyword -Hostname of the observer. +example: Montreal +City name. -- -*`observer.vendor`*:: +*`observer.geo.continent_name`*:: + -- type: keyword -observer vendor information. +example: North America +Name of the continent. -- -*`observer.version`*:: +*`observer.geo.country_iso_code`*:: + -- type: keyword -Observer version. +example: CA +Country ISO code. -- -*`observer.serial_number`*:: +*`observer.geo.country_name`*:: + -- type: keyword -Observer serial number. +example: Canada +Country name. -- -*`observer.type`*:: +*`observer.geo.location`*:: + -- -type: keyword +type: geo_point -example: firewall +example: { "lon": -73.614830, "lat": 45.505918 } -The type of the observer the data is coming from. -There is no predefined list of observer types. Some examples are `forwarder`, `firewall`, `ids`, `ips`, `proxy`, `poller`, `sensor`, `APM server`. +Longitude and latitude. +-- +*`observer.geo.name`*:: ++ -- +type: keyword -[float] -== os fields +example: boston-dc -The OS fields contain information about the operating system. +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. + +-- + +*`observer.geo.region_iso_code`*:: ++ +-- +type: keyword + +example: CA-QC +Region ISO code. +-- -*`observer.os.platform`*:: +*`observer.geo.region_name`*:: + -- type: keyword -example: darwin - -Operating system platform (such centos, ubuntu, windows). +example: Quebec +Region name. -- -*`observer.os.name`*:: +*`observer.hostname`*:: + -- type: keyword -example: Mac OS X +Hostname of the observer. -Operating system name, without the version. +-- + +*`observer.ip`*:: ++ +-- +type: ip +IP address of the observer. -- -*`observer.os.full`*:: +*`observer.mac`*:: + -- type: keyword -example: Mac OS Mojave - -Operating system name, including the version or code name. - +MAC address of the observer -- @@ -4088,18 +4222,16 @@ example: debian OS family (such as redhat, debian, freebsd, windows). - -- -*`observer.os.version`*:: +*`observer.os.full`*:: + -- type: keyword -example: 10.14.1 - -Operating system version as a raw string. +example: Mac OS Mojave +Operating system name, including the version or code name. -- @@ -4112,138 +4244,102 @@ example: 4.4.0-112-generic Operating system kernel version as a raw string. - --- - -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - -*`observer.geo.location`*:: -+ --- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } - -Longitude and latitude. - - -- -*`observer.geo.continent_name`*:: +*`observer.os.name`*:: + -- type: keyword -example: North America - -Name of the continent. +example: Mac OS X +Operating system name, without the version. -- -*`observer.geo.country_name`*:: +*`observer.os.platform`*:: + -- type: keyword -example: Canada - -Country name. +example: darwin +Operating system platform (such centos, ubuntu, windows). -- -*`observer.geo.region_name`*:: +*`observer.os.version`*:: + -- type: keyword -example: Quebec - -Region name. +example: 10.14.1 +Operating system version as a raw string. -- -*`observer.geo.city_name`*:: +*`observer.serial_number`*:: + -- type: keyword -example: Montreal - -City name. - +Observer serial number. -- -*`observer.geo.country_iso_code`*:: +*`observer.type`*:: + -- type: keyword -example: CA - -Country ISO code. +example: firewall +The type of the observer the data is coming from. +There is no predefined list of observer types. Some examples are `forwarder`, `firewall`, `ids`, `ips`, `proxy`, `poller`, `sensor`, `APM server`. -- -*`observer.geo.region_iso_code`*:: +*`observer.vendor`*:: + -- type: keyword -example: CA-QC - -Region ISO code. - +observer vendor information. -- -*`observer.geo.name`*:: +*`observer.version`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. - +Observer version. -- [float] == organization fields -The organization fields enrich data with information about the company or entity the data is associated with. These fields help you arrange or filter data stored in an index by one or multiple organizations. - +The organization fields enrich data with information about the company or entity the data is associated with. +These fields help you arrange or filter data stored in an index by one or multiple organizations. -*`organization.name`*:: +*`organization.id`*:: + -- type: keyword -Organization name. - +Unique identifier for the organization. -- -*`organization.id`*:: +*`organization.name`*:: + -- type: keyword -Unique identifier for the organization. - +Organization name. -- @@ -4253,93 +4349,99 @@ Unique identifier for the organization. The OS fields contain information about the operating system. - -*`os.platform`*:: +*`os.family`*:: + -- type: keyword -example: darwin - -Operating system platform (such centos, ubuntu, windows). +example: debian +OS family (such as redhat, debian, freebsd, windows). -- -*`os.name`*:: +*`os.full`*:: + -- type: keyword -example: Mac OS X - -Operating system name, without the version. +example: Mac OS Mojave +Operating system name, including the version or code name. -- -*`os.full`*:: +*`os.kernel`*:: + -- type: keyword -example: Mac OS Mojave - -Operating system name, including the version or code name. +example: 4.4.0-112-generic +Operating system kernel version as a raw string. -- -*`os.family`*:: +*`os.name`*:: + -- type: keyword -example: debian - -OS family (such as redhat, debian, freebsd, windows). +example: Mac OS X +Operating system name, without the version. -- -*`os.version`*:: +*`os.platform`*:: + -- type: keyword -example: 10.14.1 - -Operating system version as a raw string. +example: darwin +Operating system platform (such centos, ubuntu, windows). -- -*`os.kernel`*:: +*`os.version`*:: + -- type: keyword -example: 4.4.0-112-generic - -Operating system kernel version as a raw string. +example: 10.14.1 +Operating system version as a raw string. -- [float] == process fields -These fields contain information about a process. These fields can help you correlate metrics information with a process id/name from a log message. The `process.pid` often stays in the metric itself and is copied to the global field for correlation. +These fields contain information about a process. +These fields can help you correlate metrics information with a process id/name from a log message. The `process.pid` often stays in the metric itself and is copied to the global field for correlation. + + +*`process.args`*:: ++ +-- +type: keyword + +example: ['ssh', '-l', 'user', '10.0.0.16'] +Array of process arguments. +May be filtered to protect sensitive information. +-- -*`process.pid`*:: +*`process.executable`*:: + -- -type: long +type: keyword -Process id. +example: /usr/bin/ssh +Absolute path to the process executable. -- @@ -4353,6 +4455,14 @@ example: ssh Process name. Sometimes called program name or similar. +-- + +*`process.pid`*:: ++ +-- +type: long + +Process id. -- @@ -4363,31 +4473,27 @@ type: long Process parent id. - -- -*`process.args`*:: +*`process.start`*:: + -- -type: keyword - -example: ['ssh', '-l', 'user', '10.0.0.16'] +type: date -Process arguments. -May be filtered to protect sensitive information. +example: 2016-05-23T08:05:34.853Z +The time the process started. -- -*`process.executable`*:: +*`process.thread.id`*:: + -- -type: keyword - -example: /usr/bin/ssh +type: long -Absolute path to the process executable. +example: 4242 +Thread ID. -- @@ -4399,133 +4505,180 @@ type: keyword Process title. The proctitle, some times the same as process name. Can also be different: for example a browser setting its title to the web page currently opened. - -- -*`process.thread.id`*:: +*`process.working_directory`*:: + -- -type: long - -example: 4242 +type: keyword -Thread ID. +example: /home/alice +The working directory of the process. -- -*`process.start`*:: +[float] +== related fields + +This field set is meant to facilitate pivoting around a piece of data. +Some pieces of information can be seen in many places in an ECS event. To facilitate searching for them, store an array of all seen values to their corresponding field in `related.`. +A concrete example is IP addresses, which can be under host, observer, source, destination, client, server, and network.forwarded_ip. If you append all IPs to `related.ip`, you can then search for a given IP trivially, no matter where it appeared, by querying `related.ip:a.b.c.d`. + + +*`related.ip`*:: + -- -type: date +type: ip -example: 2016-05-23T08:05:34.853Z +All of the IPs seen on your event. -The time the process started. +-- +[float] +== server fields --- +A Server is defined as the responder in a network connection for events regarding sessions, connections, or bidirectional flow records. +For TCP events, the server is the receiver of the initial SYN packet(s) of the TCP connection. For other protocols, the server is generally the responder in the network transaction. Some systems actually use the term "responder" to refer the server in TCP connections. The server fields describe details about the system acting as the server in the network event. Server fields are usually populated in conjunction with client fields. Server fields are generally not populated for packet-level events. +Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. -*`process.working_directory`*:: + +*`server.address`*:: + -- type: keyword -example: /home/alice +Some event server addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. -The working directory of the process. +-- + +*`server.bytes`*:: ++ +-- +type: long + +example: 184 +Bytes sent from the server to the client. -- -[float] -== related fields +*`server.domain`*:: ++ +-- +type: keyword + +Server domain. + +-- + +*`server.geo.city_name`*:: ++ +-- +type: keyword -This field set is meant to facilitate pivoting around a piece of data. Some pieces of information can be seen in many places in ECS. To facilitate searching for them, append values to their corresponding field in `related.`. A concrete example is IP addresses, which can be under host, observer, source, destination, client, server, and network.forwarded_ip. If you append all IPs to `related.ip`, you can then search for a given IP trivially, no matter where it appeared, by querying `related.ip:a.b.c.d`. +example: Montreal +City name. +-- -*`related.ip`*:: +*`server.geo.continent_name`*:: + -- -type: ip +type: keyword -All of the IPs seen on your event. +example: North America +Name of the continent. -- -[float] -== server fields +*`server.geo.country_iso_code`*:: ++ +-- +type: keyword -A Server is defined as the responder in a network connection for events regarding sessions, connections, or bidirectional flow records. For TCP events, the server is the receiver of the initial SYN packet(s) of the TCP connection. For other protocols, the server is generally the responder in the network transaction. Some systems actually use the term "responder" to refer the server in TCP connections. The server fields describe details about the system acting as the server in the network event. Server fields are usually populated in conjunction with client fields. Server fields are generally not populated for packet-level events. -Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. +example: CA +Country ISO code. +-- -*`server.address`*:: +*`server.geo.country_name`*:: + -- type: keyword -Some event server addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. -Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. +example: Canada +Country name. -- -*`server.ip`*:: +*`server.geo.location`*:: + -- -type: ip +type: geo_point -IP address of the server. -Can be one or multiple IPv4 or IPv6 addresses. +example: { "lon": -73.614830, "lat": 45.505918 } +Longitude and latitude. -- -*`server.port`*:: +*`server.geo.name`*:: + -- -type: long +type: keyword -Port of the server. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`server.mac`*:: +*`server.geo.region_iso_code`*:: + -- type: keyword -MAC address of the server. +example: CA-QC +Region ISO code. -- -*`server.domain`*:: +*`server.geo.region_name`*:: + -- type: keyword -Server domain. +example: Quebec +Region name. -- -*`server.bytes`*:: +*`server.ip`*:: + -- -type: long +type: ip -example: 184 +IP address of the server. +Can be one or multiple IPv4 or IPv6 addresses. -format: bytes +-- -Bytes sent from the server to the client. +*`server.mac`*:: ++ +-- +type: keyword +MAC address of the server. -- @@ -4538,120 +4691,103 @@ example: 12 Packets sent from the server to the client. - -- -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - -*`server.geo.location`*:: +*`server.port`*:: + -- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } - -Longitude and latitude. +type: long +Port of the server. -- -*`server.geo.continent_name`*:: +*`server.user.email`*:: + -- type: keyword -example: North America - -Name of the continent. - +User email address. -- -*`server.geo.country_name`*:: +*`server.user.full_name`*:: + -- type: keyword -example: Canada - -Country name. +example: Albert Einstein +User's full name, if available. -- -*`server.geo.region_name`*:: +*`server.user.group.id`*:: + -- type: keyword -example: Quebec - -Region name. - +Unique identifier for the group on the system/platform. -- -*`server.geo.city_name`*:: +*`server.user.group.name`*:: + -- type: keyword -example: Montreal - -City name. - +Name of the group. -- -*`server.geo.country_iso_code`*:: +*`server.user.hash`*:: + -- type: keyword -example: CA - -Country ISO code. - +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -- -*`server.geo.region_iso_code`*:: +*`server.user.id`*:: + -- type: keyword -example: CA-QC - -Region ISO code. - +One or multiple unique identifiers of the user. -- -*`server.geo.name`*:: +*`server.user.name`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +example: albert +Short name or login of the user. -- [float] == service fields -The service fields describe the service for or from which the data was collected. These fields help you find and correlate logs for a specific service and version. +The service fields describe the service for or from which the data was collected. +These fields help you find and correlate logs for a specific service and version. + + +*`service.ephemeral_id`*:: ++ +-- +type: keyword + +example: 8a4f500f +Ephemeral identifier of this service (if one exists). +This id normally changes across restarts, but `service.id` does not. +-- *`service.id`*:: + @@ -4664,7 +4800,6 @@ Unique identifier of the running service. This id should uniquely identify this service. This makes it possible to correlate logs and metrics for one specific service. Example: If you are experiencing issues with one redis instance, you can filter on that id to see metrics and logs for that single instance. - -- *`service.name`*:: @@ -4679,6 +4814,14 @@ The name of the service is normally user given. This allows if two instances of Also it allows for distributed services that run on multiple hosts to correlate the related instances based on the name. In the case of Elasticsearch the service.name could contain the cluster name. For Beats the service.name is by default a copy of the `service.type` field if no name is specified. +-- + +*`service.state`*:: ++ +-- +type: keyword + +Current state of the service. -- @@ -4693,115 +4836,163 @@ The type of the service data is collected from. The type can be used to group and correlate logs and metrics from one service type. Example: If logs or metrics are collected from Elasticsearch, `service.type` would be `elasticsearch`. - -- -*`service.state`*:: +*`service.version`*:: + -- type: keyword -Current state of the service. +example: 3.2.4 +Version of the service the data was collected from. +This allows to look at a data set only for a specific version of a service. -- -*`service.version`*:: +[float] +== source fields + +Source fields describe details about the source of a packet/event. +Source fields are usually populated in conjunction with destination fields. + + +*`source.address`*:: + -- type: keyword -example: 3.2.4 +Some event source addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. -Version of the service the data was collected from. -This allows to look at a data set only for a specific version of a service. +-- + +*`source.bytes`*:: ++ +-- +type: long + +example: 184 +Bytes sent from the source to the destination. -- -*`service.ephemeral_id`*:: +*`source.domain`*:: + -- type: keyword -example: 8a4f500f +Source domain. -Ephemeral identifier of this service (if one exists). -This id normally changes across restarts, but `service.id` does not. +-- + +*`source.geo.city_name`*:: ++ +-- +type: keyword +example: Montreal + +City name. -- -[float] -== source fields +*`source.geo.continent_name`*:: ++ +-- +type: keyword -Source fields describe details about the source of a packet/event. Source fields are usually populated in conjunction with destination fields. +example: North America +Name of the continent. +-- -*`source.address`*:: +*`source.geo.country_iso_code`*:: + -- type: keyword -Some event source addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. -Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. +example: CA +Country ISO code. -- -*`source.ip`*:: +*`source.geo.country_name`*:: + -- -type: ip +type: keyword -IP address of the source. -Can be one or multiple IPv4 or IPv6 addresses. +example: Canada +Country name. -- -*`source.port`*:: +*`source.geo.location`*:: + -- -type: long +type: geo_point -Port of the source. +example: { "lon": -73.614830, "lat": 45.505918 } +Longitude and latitude. -- -*`source.mac`*:: +*`source.geo.name`*:: + -- type: keyword -MAC address of the source. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`source.domain`*:: +*`source.geo.region_iso_code`*:: + -- type: keyword -Source domain. +example: CA-QC +Region ISO code. -- -*`source.bytes`*:: +*`source.geo.region_name`*:: + -- -type: long +type: keyword -example: 184 +example: Quebec -format: bytes +Region name. + +-- + +*`source.ip`*:: ++ +-- +type: ip + +IP address of the source. +Can be one or multiple IPv4 or IPv6 addresses. + +-- -Bytes sent from the source to the destination. +*`source.mac`*:: ++ +-- +type: keyword +MAC address of the source. -- @@ -4814,133 +5005,110 @@ example: 12 Packets sent from the source to the destination. - -- -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - -*`source.geo.location`*:: +*`source.port`*:: + -- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } - -Longitude and latitude. +type: long +Port of the source. -- -*`source.geo.continent_name`*:: +*`source.user.email`*:: + -- type: keyword -example: North America - -Name of the continent. - +User email address. -- -*`source.geo.country_name`*:: +*`source.user.full_name`*:: + -- type: keyword -example: Canada - -Country name. +example: Albert Einstein +User's full name, if available. -- -*`source.geo.region_name`*:: +*`source.user.group.id`*:: + -- type: keyword -example: Quebec - -Region name. - +Unique identifier for the group on the system/platform. -- -*`source.geo.city_name`*:: +*`source.user.group.name`*:: + -- type: keyword -example: Montreal - -City name. - +Name of the group. -- -*`source.geo.country_iso_code`*:: +*`source.user.hash`*:: + -- type: keyword -example: CA - -Country ISO code. - +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -- -*`source.geo.region_iso_code`*:: +*`source.user.id`*:: + -- type: keyword -example: CA-QC - -Region ISO code. - +One or multiple unique identifiers of the user. -- -*`source.geo.name`*:: +*`source.user.name`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +example: albert +Short name or login of the user. -- [float] == url fields -URL fields provide a complete URL, with scheme, host, and path. +URL fields provide support for complete or partial URLs, and supports the breaking down into scheme, domain, path, and so on. - -*`url.original`*:: +*`url.domain`*:: + -- type: keyword -example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch +example: www.elastic.co +Domain of the url, such as "www.elastic.co". +In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. -Unmodified original url as seen in the event source. -Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. -This field is meant to represent the URL as it was observed, complete or not. +-- + +*`url.fragment`*:: ++ +-- +type: keyword +Portion of the url after the `#`, such as "top". +The `#` is not part of the fragment. -- @@ -4953,54 +5121,47 @@ example: https://www.elastic.co:443/search?q=elasticsearch#top If full URLs are important to your use case, they should be stored in `url.full`, whether this field is reconstructed or present in the event source. - -- -*`url.scheme`*:: +*`url.original`*:: + -- type: keyword -example: https - -Scheme of the request, such as "https". -Note: The `:` is not part of the scheme. +example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch +Unmodified original url as seen in the event source. +Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. +This field is meant to represent the URL as it was observed, complete or not. -- -*`url.domain`*:: +*`url.password`*:: + -- type: keyword -example: www.elastic.co - -Domain of the request, such as "www.elastic.co". -In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. - +Password of the request. -- -*`url.port`*:: +*`url.path`*:: + -- -type: integer - -example: 443 - -Port of the request, such as 443. +type: keyword +Path of the request, such as "/search". -- -*`url.path`*:: +*`url.port`*:: + -- -type: keyword +type: long -Path of the request, such as "/search". +example: 443 +Port of the request, such as 443. -- @@ -5012,17 +5173,17 @@ type: keyword The query field describes the query string of the request, such as "q=elasticsearch". The `?` is excluded from the query string. If a URL contains no `?`, there is no query field. If there is a `?` but no query, the query field exists with an empty string. The `exists` query can be used to differentiate between the two cases. - -- -*`url.fragment`*:: +*`url.scheme`*:: + -- type: keyword -Portion of the url after the `#`, such as "top". -The `#` is not part of the fragment. +example: https +Scheme of the request, such as "https". +Note: The `:` is not part of the scheme. -- @@ -5033,67 +5194,50 @@ type: keyword Username of the request. - --- - -*`url.password`*:: -+ --- -type: keyword - -Password of the request. - - -- [float] == user fields -The user fields describe information about the user that is relevant to the event. Fields can have one entry or multiple entries. If a user has more than one id, provide an array that includes all of them. - +The user fields describe information about the user that is relevant to the event. +Fields can have one entry or multiple entries. If a user has more than one id, provide an array that includes all of them. -*`user.id`*:: +*`user.email`*:: + -- type: keyword -One or multiple unique identifiers of the user. - +User email address. -- -*`user.name`*:: +*`user.full_name`*:: + -- type: keyword -example: albert - -Short name or login of the user. +example: Albert Einstein +User's full name, if available. -- -*`user.full_name`*:: +*`user.group.id`*:: + -- type: keyword -example: Albert Einstein - -User's full name, if available. - +Unique identifier for the group on the system/platform. -- -*`user.email`*:: +*`user.group.name`*:: + -- type: keyword -User email address. - +Name of the group. -- @@ -5105,52 +5249,43 @@ type: keyword Unique user hash to correlate information for a user in anonymized form. Useful if `user.id` or `user.name` contain confidential information and cannot be used. - -- -[float] -== group fields - -The group fields are meant to represent groups that are relevant to the event. - - - -*`user.group.id`*:: +*`user.id`*:: + -- type: keyword -Unique identifier for the group on the system/platform. - +One or multiple unique identifiers of the user. -- -*`user.group.name`*:: +*`user.name`*:: + -- type: keyword -Name of the group. +example: albert +Short name or login of the user. -- [float] == user_agent fields -The user_agent fields normally come from a browser request. They often show up in web service logs coming from the parsed user agent string. +The user_agent fields normally come from a browser request. +They often show up in web service logs coming from the parsed user agent string. - -*`user_agent.original`*:: +*`user_agent.device.name`*:: + -- type: keyword -example: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1 - -Unparsed version of the user_agent. +example: iPhone +Name of the device. -- @@ -5163,85 +5298,71 @@ example: Safari Name of the user agent. - -- -*`user_agent.version`*:: +*`user_agent.original`*:: + -- type: keyword -example: 12.0 - -Version of the user agent. +example: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1 +Unparsed version of the user_agent. -- -*`user_agent.device.name`*:: +*`user_agent.os.family`*:: + -- type: keyword -example: iPhone - -Name of the device. +example: debian +OS family (such as redhat, debian, freebsd, windows). -- -[float] -== os fields - -The OS fields contain information about the operating system. - - - -*`user_agent.os.platform`*:: +*`user_agent.os.full`*:: + -- type: keyword -example: darwin - -Operating system platform (such centos, ubuntu, windows). +example: Mac OS Mojave +Operating system name, including the version or code name. -- -*`user_agent.os.name`*:: +*`user_agent.os.kernel`*:: + -- type: keyword -example: Mac OS X - -Operating system name, without the version. +example: 4.4.0-112-generic +Operating system kernel version as a raw string. -- -*`user_agent.os.full`*:: +*`user_agent.os.name`*:: + -- type: keyword -example: Mac OS Mojave - -Operating system name, including the version or code name. +example: Mac OS X +Operating system name, without the version. -- -*`user_agent.os.family`*:: +*`user_agent.os.platform`*:: + -- type: keyword -example: debian - -OS family (such as redhat, debian, freebsd, windows). +example: darwin +Operating system platform (such centos, ubuntu, windows). -- @@ -5254,28 +5375,16 @@ example: 10.14.1 Operating system version as a raw string. - --- - -*`user_agent.os.kernel`*:: -+ --- -type: keyword - -example: 4.4.0-112-generic - -Operating system kernel version as a raw string. - - -- -*`agent.hostname`*:: +*`user_agent.version`*:: + -- type: keyword -Hostname of the agent. +example: 12.0 +Version of the user agent. -- diff --git a/packetbeat/include/fields.go b/packetbeat/include/fields.go index 4515fd43b790..484cb6c0d009 100644 --- a/packetbeat/include/fields.go +++ b/packetbeat/include/fields.go @@ -32,5 +32,5 @@ func init() { // AssetFieldsYml returns asset data. // This is the base64 encoded gzipped contents of fields.yml. func AssetFieldsYml() string { - return "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" + return "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" } diff --git a/winlogbeat/docs/fields.asciidoc b/winlogbeat/docs/fields.asciidoc index c9bbf7b60622..045af28b4f9f 100644 --- a/winlogbeat/docs/fields.asciidoc +++ b/winlogbeat/docs/fields.asciidoc @@ -30,6 +30,15 @@ Contains common beat fields available in all event types. +*`agent.hostname`*:: ++ +-- +type: keyword + +Hostname of the agent. + +-- + *`beat.timezone`*:: + -- @@ -212,8 +221,7 @@ Image labels. [[exported-fields-ecs]] == ECS fields -ECS fields. - +ECS Fields. *`@timestamp`*:: @@ -226,22 +234,10 @@ example: 2016-05-23T08:05:34.853Z required: True Date/time when the event originated. -For log events this is the date/time when the event was generated, and not when it was read. +This is the date/time extracted from the event, typically representing when the event was generated by the source. +If the event source has no original timestamp, this value is typically populated by the first time the event was received by the pipeline. Required field for all events. - --- - -*`tags`*:: -+ --- -type: keyword - -example: ["production", "env2"] - -List of keywords used to tag each event. - - -- *`labels`*:: @@ -251,11 +247,10 @@ type: object example: {'application': 'foo-bar', 'env': 'production'} -Key/value pairs. +Custom key/value pairs. Can be used to add meta information to events. Should not contain nested objects. All values are stored as keyword. Example: `docker` and `k8s` labels. - -- *`message`*:: @@ -265,28 +260,51 @@ type: text example: Hello World -For log events the message field contains the log message. -In other use cases the message field can be used to concatenate different values which are then freely searchable. If multiple messages exist, they can be combined into one message. +For log events the message field contains the log message, optimized for viewing in a log viewer. +For structured logs without an original message field, other fields can be concatenated to form a human-readable summary of the event. +If multiple messages exist, they can be combined into one message. + +-- + +*`tags`*:: ++ +-- +type: keyword + +example: ["production", "env2"] +List of keywords used to tag each event. -- [float] == agent fields -The agent fields contain the data about the software entity, if any, that collects, detects, or observes events on a host, or takes measurements on a host. Examples include Beats. Agents may also run on observers. ECS agent.* fields shall be populated with details of the agent running on the host or observer where the event happened or the measurement was taken. +The agent fields contain the data about the software entity, if any, that collects, detects, or observes events on a host, or takes measurements on a host. +Examples include Beats. Agents may also run on observers. ECS agent.* fields shall be populated with details of the agent running on the host or observer where the event happened or the measurement was taken. - -*`agent.version`*:: +*`agent.ephemeral_id`*:: + -- type: keyword -example: 6.0.0-rc2 +example: 8a4f500f -Version of the agent. +Ephemeral identifier of this agent (if one exists). +This id normally changes across restarts, but `agent.id` does not. + +-- + +*`agent.id`*:: ++ +-- +type: keyword + +example: 8a4f500d +Unique identifier of this agent (if one exists). +Example: For Beats this would be beat.id. -- @@ -297,11 +315,10 @@ type: keyword example: foo -Name of the agent. +Custom name of the agent. This is a name that can be given to an agent. This can be helpful if for example two Filebeat instances are running on the same host but a human readable separation is needed on which Filebeat instance data is coming from. If no name is given, the name is often left empty. - -- *`agent.type`*:: @@ -314,43 +331,27 @@ example: filebeat Type of the agent. The agent type stays always the same and should be given by the agent used. In case of Filebeat the agent would always be Filebeat also if two Filebeat instances are run on the same machine. - --- - -*`agent.id`*:: -+ --- -type: keyword - -example: 8a4f500d - -Unique identifier of this agent (if one exists). -Example: For Beats this would be beat.id. - - -- -*`agent.ephemeral_id`*:: +*`agent.version`*:: + -- type: keyword -example: 8a4f500f - -Ephemeral identifier of this agent (if one exists). -This id normally changes across restarts, but `agent.id` does not. +example: 6.0.0-rc2 +Version of the agent. -- [float] == client fields -A client is defined as the initiator of a network connection for events regarding sessions, connections, or bidirectional flow records. For TCP events, the client is the initiator of the TCP connection that sends the SYN packet(s). For other protocols, the client is generally the initiator or requestor in the network transaction. Some systems use the term "originator" to refer the client in TCP connections. The client fields describe details about the system acting as the client in the network event. Client fields are usually populated in conjunction with server fields. Client fields are generally not populated for packet-level events. +A client is defined as the initiator of a network connection for events regarding sessions, connections, or bidirectional flow records. +For TCP events, the client is the initiator of the TCP connection that sends the SYN packet(s). For other protocols, the client is generally the initiator or requestor in the network transaction. Some systems use the term "originator" to refer the client in TCP connections. The client fields describe details about the system acting as the client in the network event. Client fields are usually populated in conjunction with server fields. Client fields are generally not populated for packet-level events. Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. - *`client.address`*:: + -- @@ -359,83 +360,72 @@ type: keyword Some event client addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. - -- -*`client.ip`*:: +*`client.bytes`*:: + -- -type: ip +type: long -IP address of the client. -Can be one or multiple IPv4 or IPv6 addresses. +example: 184 +Bytes sent from the client to the server. -- -*`client.port`*:: +*`client.domain`*:: + -- -type: long - -Port of the client. +type: keyword +Client domain. -- -*`client.mac`*:: +*`client.geo.city_name`*:: + -- type: keyword -MAC address of the client. +example: Montreal +City name. -- -*`client.domain`*:: +*`client.geo.continent_name`*:: + -- type: keyword -Client domain. +example: North America +Name of the continent. -- -*`client.bytes`*:: +*`client.geo.country_iso_code`*:: + -- -type: long - -example: 184 - -format: bytes +type: keyword -Bytes sent from the client to the server. +example: CA +Country ISO code. -- -*`client.packets`*:: +*`client.geo.country_name`*:: + -- -type: long - -example: 12 +type: keyword -Packets sent from the client to the server. +example: Canada +Country name. -- -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - *`client.geo.location`*:: + -- @@ -445,30 +435,29 @@ example: { "lon": -73.614830, "lat": 45.505918 } Longitude and latitude. - -- -*`client.geo.continent_name`*:: +*`client.geo.name`*:: + -- type: keyword -example: North America - -Name of the continent. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`client.geo.country_name`*:: +*`client.geo.region_iso_code`*:: + -- type: keyword -example: Canada - -Country name. +example: CA-QC +Region ISO code. -- @@ -481,274 +470,274 @@ example: Quebec Region name. - -- -*`client.geo.city_name`*:: +*`client.ip`*:: + -- -type: keyword - -example: Montreal - -City name. +type: ip +IP address of the client. +Can be one or multiple IPv4 or IPv6 addresses. -- -*`client.geo.country_iso_code`*:: +*`client.mac`*:: + -- type: keyword -example: CA - -Country ISO code. - +MAC address of the client. -- -*`client.geo.region_iso_code`*:: +*`client.packets`*:: + -- -type: keyword - -example: CA-QC +type: long -Region ISO code. +example: 12 +Packets sent from the client to the server. -- -*`client.geo.name`*:: +*`client.port`*:: + -- -type: keyword - -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +type: long +Port of the client. -- -[float] -== cloud fields - -Fields related to the cloud or infrastructure the events are coming from. - - - -*`cloud.provider`*:: +*`client.user.email`*:: + -- type: keyword -example: ec2 - -Name of the cloud provider. Example values are ec2, gce, or digitalocean. - +User email address. -- -*`cloud.availability_zone`*:: +*`client.user.full_name`*:: + -- type: keyword -example: us-east-1c - -Availability zone in which this host is running. +example: Albert Einstein +User's full name, if available. -- -*`cloud.region`*:: +*`client.user.group.id`*:: + -- type: keyword -example: us-east-1 - -Region in which this host is running. - +Unique identifier for the group on the system/platform. -- -*`cloud.instance.id`*:: +*`client.user.group.name`*:: + -- type: keyword -example: i-1234567890abcdef0 - -Instance ID of the host machine. - +Name of the group. -- -*`cloud.instance.name`*:: +*`client.user.hash`*:: + -- type: keyword -Instance name of the host machine. - +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -- -*`cloud.machine.type`*:: +*`client.user.id`*:: + -- type: keyword -example: t2.medium - -Machine type of the host machine. - +One or multiple unique identifiers of the user. -- -*`cloud.account.id`*:: +*`client.user.name`*:: + -- type: keyword -example: 666777888999 - -The cloud account or organization id used to identify different entities in a multi-tenant environment. -Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. +example: albert +Short name or login of the user. -- [float] -== container fields - -Container fields are used for meta information about the specific container that is the source of information. These fields help correlate data based containers from any runtime. +== cloud fields +Fields related to the cloud or infrastructure the events are coming from. -*`container.runtime`*:: +*`cloud.account.id`*:: + -- type: keyword -example: docker - -Runtime managing this container. +example: 666777888999 +The cloud account or organization id used to identify different entities in a multi-tenant environment. +Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. -- -*`container.id`*:: +*`cloud.availability_zone`*:: + -- type: keyword -Unique container id. +example: us-east-1c +Availability zone in which this host is running. -- -*`container.image.name`*:: +*`cloud.instance.id`*:: + -- type: keyword -Name of the image the container was built on. +example: i-1234567890abcdef0 +Instance ID of the host machine. -- -*`container.image.tag`*:: +*`cloud.instance.name`*:: + -- type: keyword -Container image tag. +Instance name of the host machine. +-- +*`cloud.machine.type`*:: ++ -- +type: keyword -*`container.name`*:: +example: t2.medium + +Machine type of the host machine. + +-- + +*`cloud.provider`*:: + -- type: keyword -Container name. +example: aws +Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. -- -*`container.labels`*:: +*`cloud.region`*:: + -- -type: object +type: keyword -Image labels. +example: us-east-1 +Region in which this host is running. -- [float] -== destination fields - -Destination fields describe details about the destination of a packet/event. Destination fields are usually populated in conjunction with source fields. +== container fields +Container fields are used for meta information about the specific container that is the source of information. +These fields help correlate data based containers from any runtime. -*`destination.address`*:: +*`container.id`*:: + -- type: keyword -Some event destination addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. -Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. - +Unique container id. -- -*`destination.ip`*:: +*`container.image.name`*:: + -- -type: ip +type: keyword -IP address of the destination. -Can be one or multiple IPv4 or IPv6 addresses. +Name of the image the container was built on. + +-- + +*`container.image.tag`*:: ++ +-- +type: keyword +Container image tag. -- -*`destination.port`*:: +*`container.labels`*:: + -- -type: long +type: object -Port of the destination. +Image labels. + +-- + +*`container.name`*:: ++ +-- +type: keyword +Container name. -- -*`destination.mac`*:: +*`container.runtime`*:: + -- type: keyword -MAC address of the destination. +example: docker +Runtime managing this container. -- -*`destination.domain`*:: +[float] +== destination fields + +Destination fields describe details about the destination of a packet/event. +Destination fields are usually populated in conjunction with source fields. + + +*`destination.address`*:: + -- type: keyword -Destination domain. - +Some event destination addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. -- @@ -759,31 +748,62 @@ type: long example: 184 -format: bytes - Bytes sent from the destination to the source. +-- +*`destination.domain`*:: ++ -- +type: keyword -*`destination.packets`*:: +Destination domain. + +-- + +*`destination.geo.city_name`*:: + -- -type: long +type: keyword -example: 12 +example: Montreal -Packets sent from the destination to the source. +City name. + +-- +*`destination.geo.continent_name`*:: ++ +-- +type: keyword + +example: North America + +Name of the continent. -- -[float] -== geo fields +*`destination.geo.country_iso_code`*:: ++ +-- +type: keyword + +example: CA + +Country ISO code. + +-- -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. +*`destination.geo.country_name`*:: ++ +-- +type: keyword +example: Canada +Country name. + +-- *`destination.geo.location`*:: + @@ -794,30 +814,29 @@ example: { "lon": -73.614830, "lat": 45.505918 } Longitude and latitude. - -- -*`destination.geo.continent_name`*:: +*`destination.geo.name`*:: + -- type: keyword -example: North America - -Name of the continent. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`destination.geo.country_name`*:: +*`destination.geo.region_iso_code`*:: + -- type: keyword -example: Canada - -Country name. +example: CA-QC +Region ISO code. -- @@ -830,56 +849,112 @@ example: Quebec Region name. +-- +*`destination.ip`*:: ++ -- +type: ip -*`destination.geo.city_name`*:: +IP address of the destination. +Can be one or multiple IPv4 or IPv6 addresses. + +-- + +*`destination.mac`*:: + -- type: keyword -example: Montreal +MAC address of the destination. -City name. +-- + +*`destination.packets`*:: ++ +-- +type: long + +example: 12 +Packets sent from the destination to the source. -- -*`destination.geo.country_iso_code`*:: +*`destination.port`*:: ++ +-- +type: long + +Port of the destination. + +-- + +*`destination.user.email`*:: + -- type: keyword -example: CA +User email address. -Country ISO code. +-- +*`destination.user.full_name`*:: ++ +-- +type: keyword + +example: Albert Einstein + +User's full name, if available. -- -*`destination.geo.region_iso_code`*:: +*`destination.user.group.id`*:: + -- type: keyword -example: CA-QC +Unique identifier for the group on the system/platform. -Region ISO code. +-- +*`destination.user.group.name`*:: ++ +-- +type: keyword + +Name of the group. -- -*`destination.geo.name`*:: +*`destination.user.hash`*:: + -- type: keyword -example: boston-dc +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +-- +*`destination.user.id`*:: ++ +-- +type: keyword + +One or multiple unique identifiers of the user. + +-- + +*`destination.user.name`*:: ++ +-- +type: keyword + +example: albert + +Short name or login of the user. -- @@ -889,29 +964,35 @@ Not typically used in automated geolocation. Meta-information specific to ECS. - *`ecs.version`*:: + -- type: keyword -example: 1.0.0-beta2 +example: 1.0.0 required: True ECS version this event conforms to. `ecs.version` is a required field and must exist in all events. When querying across multiple indices -- which may conform to slightly different ECS versions -- this field lets integrations adjust to the schema version of the events. -The current version is 1.0.0-beta2 . - -- [float] == error fields -These fields can represent errors of any kind. Use them for errors that happen while fetching events or in cases where the event itself contains an error. +These fields can represent errors of any kind. +Use them for errors that happen while fetching events or in cases where the event itself contains an error. + + +*`error.code`*:: ++ +-- +type: keyword +Error code describing the error. +-- *`error.id`*:: + @@ -920,7 +1001,6 @@ type: keyword Unique identifier for the error. - -- *`error.message`*:: @@ -930,98 +1010,113 @@ type: text Error message. - -- -*`error.code`*:: +[float] +== event fields + +The event fields are used for context information about the log or metric event itself. +A log is defined as an event containing details of something that happened. Log events must include the time at which the thing happened. Examples of log events include a process starting on a host, a network packet being sent from a source to a destination, or a network connection between a client and a server being initiated or closed. A metric is defined as an event containing one or more numerical or categorical measurements and the time at which the measurement was taken. Examples of metric events include memory pressure measured on a host, or vulnerabilities measured on a scanned host. + + +*`event.action`*:: + -- type: keyword -Error code describing the error. +example: user-password-change +The action captured by the event. +This describes the information in the event. It is more specific than `event.category`. Examples are `group-add`, `process-started`, `file-created`. The value is normally defined by the implementer. -- -[float] -== event fields +*`event.category`*:: ++ +-- +type: keyword -The event fields are used for context information about the log or metric event itself. A log is defined as an event containing details of something that happened. Log events must include the time at which the thing happened. Examples of log events include a process starting on a host, a network packet being sent from a source to a destination, or a network connection between a client and a server being initiated or closed. A metric is defined as an event containing one or more numerical or categorical measurements and the time at which the measurement was taken. Examples of metric events include memory pressure measured on a host, or vulnerabilities measured on a scanned host. +example: user-management +Event category. +This contains high-level information about the contents of the event. It is more generic than `event.action`, in the sense that typically a category contains multiple actions. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +-- -*`event.id`*:: +*`event.created`*:: + -- -type: keyword - -example: 8a4f500d - -Unique ID to describe the event. +type: date +event.created contains the date/time when the event was first read by an agent, or by your pipeline. +This field is distinct from @timestamp in that @timestamp typically contain the time extracted from the original event. +In most situations, these two timestamps will be slightly different. The difference can be used to calculate the delay between your source generating an event, and the time when your agent first processed it. This can be used to monitor your agent's or pipeline's ability to keep up with your event source. +In case the two timestamps are identical, @timestamp should be used. -- -*`event.kind`*:: +*`event.dataset`*:: + -- type: keyword -example: state - -The kind of the event. -This gives information about what type of information the event contains, without being specific to the contents of the event. Examples are `event`, `state`, `alarm`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +example: stats +Name of the dataset. +The concept of a `dataset` (fileset / metricset) is used in Beats as a subset of modules. It contains the information which is currently stored in metricset.name and metricset.module or fileset.name. -- -*`event.category`*:: +*`event.duration`*:: + -- -type: keyword +type: long -example: user-management +Duration of the event in nanoseconds. +If event.start and event.end are known this value should be the difference between the end and start time. -Event category. -This contains high-level information about the contents of the event. It is more generic than `event.action`, in the sense that typically a category contains multiple actions. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +-- +*`event.end`*:: ++ +-- +type: date + +event.end contains the date when the event ended or when the activity was last observed. -- -*`event.action`*:: +*`event.hash`*:: + -- type: keyword -example: user-password-change - -The action captured by the event. -This describes the information in the event. It is more specific than `event.category`. Examples are `group-add`, `process-started`, `file-created`. The value is normally defined by the implementer. +example: 123456789012345678901234567890ABCD +Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate log integrity. -- -*`event.outcome`*:: +*`event.id`*:: + -- type: keyword -example: success - -The outcome of the event. -If the event describes an action, this fields contains the outcome of that action. Examples outcomes are `success` and `failure`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +example: 8a4f500d +Unique ID to describe the event. -- -*`event.type`*:: +*`event.kind`*:: + -- type: keyword -Reserved for future usage. -Please avoid using this field for user data. +example: state +The kind of the event. +This gives information about what type of information the event contains, without being specific to the contents of the event. Examples are `event`, `state`, `alarm`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. -- @@ -1035,19 +1130,48 @@ example: mysql Name of the module this data is coming from. This information is coming from the modules used in Beats or Logstash. +-- +*`event.original`*:: ++ -- +type: keyword -*`event.dataset`*:: +example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 + +Raw text message of entire event. Used to demonstrate log integrity. +This field is not indexed and doc_values are disabled. It cannot be searched, but it can be retrieved from `_source`. + +-- + +*`event.outcome`*:: + -- type: keyword -example: stats +example: success -Name of the dataset. -The concept of a `dataset` (fileset / metricset) is used in Beats as a subset of modules. It contains the information which is currently stored in metricset.name and metricset.module or fileset.name. +The outcome of the event. +If the event describes an action, this fields contains the outcome of that action. Examples outcomes are `success` and `failure`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. + +-- +*`event.risk_score`*:: ++ +-- +type: float + +Risk score or priority of the event (e.g. security solutions). Use your system's original value here. + +-- + +*`event.risk_score_norm`*:: ++ +-- +type: float + +Normalized risk score or priority of the event, on a scale of 0 to 100. +This is mainly useful if you use more than one system that assigns risk scores, and you want to see a normalized value across all systems. -- @@ -1058,122 +1182,132 @@ type: long example: 7 -Severity describes the severity of the event. What the different severity values mean can very different between use cases. It's up to the implementer to make sure severities are consistent across events. - +Severity describes the original severity of the event. What the different severity values mean can very different between use cases. It's up to the implementer to make sure severities are consistent across events. -- -*`event.original`*:: +*`event.start`*:: + -- -type: keyword +type: date -example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 +event.start contains the date when the event started or when the activity was first observed. -Raw text message of entire event. Used to demonstrate log integrity. -This field is not indexed and doc_values are disabled. It cannot be searched, but it can be retrieved from `_source`. +-- +*`event.timezone`*:: ++ +-- +type: keyword -Field is not indexed. +This field should be populated when the event's timestamp does not include timezone information already (e.g. default Syslog timestamps). It's optional otherwise. +Acceptable timezone formats are: a canonical ID (e.g. "Europe/Amsterdam"), abbreviated (e.g. "EST") or an HH:mm differential (e.g. "-05:00"). -- -*`event.hash`*:: +*`event.type`*:: + -- type: keyword -example: 123456789012345678901234567890ABCD +Reserved for future usage. +Please avoid using this field for user data. -Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate log integrity. +-- +[float] +== file fields --- +A file is defined as a set of information that has been created on, or has existed on a filesystem. +File objects can be associated with host events, network events, and/or file events (e.g., those produced by File Integrity Monitoring [FIM] products or services). File fields provide details about the affected file associated with the event or metric. -*`event.duration`*:: + +*`file.ctime`*:: + -- -type: long +type: date -format: duration +Last time file metadata changed. -Duration of the event in nanoseconds. -If event.start and event.end are known this value should be the difference between the end and start time. +-- +*`file.device`*:: ++ +-- +type: keyword + +Device that is the source of the file. -- -*`event.timezone`*:: +*`file.extension`*:: + -- type: keyword -This field should be populated when the event's timestamp does not include timezone information already (e.g. default Syslog timestamps). It's optional otherwise. -Acceptable timezone formats are: a canonical ID (e.g. "Europe/Amsterdam"), abbreviated (e.g. "EST") or an HH:mm differential (e.g. "-05:00"). +example: png +File extension. +This should allow easy filtering by file extensions. -- -*`event.created`*:: +*`file.gid`*:: + -- -type: date - -event.created contains the date when the event was created. -This timestamp is distinct from @timestamp in that @timestamp contains the processed timestamp. For logs these two timestamps can be different as the timestamp in the log line and when the event is read for example by Filebeat are not identical. `@timestamp` must contain the timestamp extracted from the log line, event.created when the log line is read. The same could apply to package capturing where @timestamp contains the timestamp extracted from the network package and event.created when the event was created. -In case the two timestamps are identical, @timestamp should be used. +type: keyword +Primary group ID (GID) of the file. -- -*`event.start`*:: +*`file.group`*:: + -- -type: date +type: keyword -event.start contains the date when the event started or when the activity was first observed. +Primary group name of the file. +-- +*`file.inode`*:: ++ -- +type: keyword -*`event.end`*:: +Inode representing the file in the filesystem. + +-- + +*`file.mode`*:: + -- -type: date +type: keyword -event.end contains the date when the event ended or when the activity was last observed. +example: 416 +Mode of the file in octal representation. -- -*`event.risk_score`*:: +*`file.mtime`*:: + -- -type: float - -Risk score or priority of the event (e.g. security solutions). Use your system's original value here. +type: date +Last time file content was modified. -- -*`event.risk_score_norm`*:: +*`file.owner`*:: + -- -type: float - -Normalized risk score or priority of the event, on a scale of 0 to 100. -This is mainly useful if you use more than one system that assigns risk scores, and you want to see a normalized value across all systems. +type: keyword +File owner's username. -- -[float] -== file fields - -A file is defined as a set of information that has been created on, or has existed on a filesystem. File objects can be associated with host events, network events, and/or file events (e.g., those produced by File Integrity Monitoring [FIM] products or services). File fields provide details about the affected file associated with the event or metric. - - - *`file.path`*:: + -- @@ -1183,25 +1317,21 @@ Path to the file. -- -*`file.target_path`*:: +*`file.size`*:: + -- -type: keyword +type: long -Target path for symlinks. +File size in bytes (field is only added when `type` is `file`). -- -*`file.extension`*:: +*`file.target_path`*:: + -- type: keyword -example: png - -File extension. -This should allow easy filtering by file extensions. - +Target path for symlinks. -- @@ -1214,98 +1344,109 @@ File type (file, dir, or symlink). -- -*`file.device`*:: +*`file.uid`*:: + -- type: keyword -Device that is the source of the file. +The user ID (UID) or security identifier (SID) of the file owner. -- -*`file.inode`*:: -+ --- -type: keyword +[float] +== geo fields -Inode representing the file in the filesystem. +Geo fields can carry data about a specific location related to an event. +This geolocation information can be derived from techniques such as Geo IP, or be user-supplied. --- -*`file.uid`*:: +*`geo.city_name`*:: + -- type: keyword -The user ID (UID) or security identifier (SID) of the file owner. +example: Montreal +City name. -- -*`file.owner`*:: +*`geo.continent_name`*:: + -- type: keyword -File owner's username. +example: North America + +Name of the continent. -- -*`file.gid`*:: +*`geo.country_iso_code`*:: + -- type: keyword -Primary group ID (GID) of the file. +example: CA + +Country ISO code. -- -*`file.group`*:: +*`geo.country_name`*:: + -- type: keyword -Primary group name of the file. +example: Canada + +Country name. -- -*`file.mode`*:: +*`geo.location`*:: + -- -type: keyword +type: geo_point -example: 416 +example: { "lon": -73.614830, "lat": 45.505918 } -Mode of the file in octal representation. +Longitude and latitude. -- -*`file.size`*:: +*`geo.name`*:: + -- -type: long +type: keyword -format: bytes +example: boston-dc -File size in bytes (field is only added when `type` is `file`). +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`file.mtime`*:: +*`geo.region_iso_code`*:: + -- -type: date +type: keyword -Last time file content was modified. +example: CA-QC + +Region ISO code. -- -*`file.ctime`*:: +*`geo.region_name`*:: + -- -type: date +type: keyword -Last time file metadata changed. +example: Quebec + +Region name. -- @@ -1315,7 +1456,6 @@ Last time file metadata changed. The group fields are meant to represent groups that are relevant to the event. - *`group.id`*:: + -- @@ -1323,7 +1463,6 @@ type: keyword Unique identifier for the group on the system/platform. - -- *`group.name`*:: @@ -1333,133 +1472,162 @@ type: keyword Name of the group. - -- [float] == host fields -A host is defined as a general computing instance. ECS host.* fields should be populated with details about the host on which the event happened, or on which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. - +A host is defined as a general computing instance. +ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. -*`host.hostname`*:: +*`host.architecture`*:: + -- type: keyword -Hostname of the host. -It normally contains what the `hostname` command returns on the host machine. +example: x86_64 +Operating system architecture. -- -*`host.name`*:: +*`host.geo.city_name`*:: + -- type: keyword -Name of the host. -It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. +example: Montreal +City name. -- -*`host.id`*:: +*`host.geo.continent_name`*:: + -- type: keyword -Unique host id. -As hostname is not always unique, use values that are meaningful in your environment. -Example: The current usage of `beat.name`. +example: North America +Name of the continent. -- -*`host.ip`*:: +*`host.geo.country_iso_code`*:: + -- -type: ip +type: keyword -Host ip address. +example: CA +Country ISO code. -- -*`host.mac`*:: +*`host.geo.country_name`*:: + -- type: keyword -Host mac address. +example: Canada +Country name. -- -*`host.type`*:: +*`host.geo.location`*:: + -- -type: keyword +type: geo_point -Type of host. -For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. +example: { "lon": -73.614830, "lat": 45.505918 } +Longitude and latitude. -- -*`host.architecture`*:: +*`host.geo.name`*:: + -- type: keyword -example: x86_64 - -Operating system architecture. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -[float] -== os fields +*`host.geo.region_iso_code`*:: ++ +-- +type: keyword -The OS fields contain information about the operating system. +example: CA-QC +Region ISO code. +-- -*`host.os.platform`*:: +*`host.geo.region_name`*:: + -- type: keyword -example: darwin +example: Quebec -Operating system platform (such centos, ubuntu, windows). +Region name. + +-- +*`host.hostname`*:: ++ +-- +type: keyword + +Hostname of the host. +It normally contains what the `hostname` command returns on the host machine. -- -*`host.os.name`*:: +*`host.id`*:: + -- type: keyword -example: Mac OS X +Unique host id. +As hostname is not always unique, use values that are meaningful in your environment. +Example: The current usage of `beat.name`. -Operating system name, without the version. +-- + +*`host.ip`*:: ++ +-- +type: ip +Host ip address. -- -*`host.os.full`*:: +*`host.mac`*:: + -- type: keyword -example: Mac OS Mojave +Host mac address. -Operating system name, including the version or code name. +-- + +*`host.name`*:: ++ +-- +type: keyword +Name of the host. +It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. -- @@ -1472,18 +1640,16 @@ example: debian OS family (such as redhat, debian, freebsd, windows). - -- -*`host.os.version`*:: +*`host.os.full`*:: + -- type: keyword -example: 10.14.1 - -Operating system version as a raw string. +example: Mac OS Mojave +Operating system name, including the version or code name. -- @@ -1496,131 +1662,133 @@ example: 4.4.0-112-generic Operating system kernel version as a raw string. - -- -[float] -== geo fields +*`host.os.name`*:: ++ +-- +type: keyword -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. +example: Mac OS X +Operating system name, without the version. +-- -*`host.geo.location`*:: +*`host.os.platform`*:: + -- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } +type: keyword -Longitude and latitude. +example: darwin +Operating system platform (such centos, ubuntu, windows). -- -*`host.geo.continent_name`*:: +*`host.os.version`*:: + -- type: keyword -example: North America - -Name of the continent. +example: 10.14.1 +Operating system version as a raw string. -- -*`host.geo.country_name`*:: +*`host.type`*:: + -- type: keyword -example: Canada +Type of host. +For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. -Country name. +-- + +*`host.user.email`*:: ++ +-- +type: keyword +User email address. -- -*`host.geo.region_name`*:: +*`host.user.full_name`*:: + -- type: keyword -example: Quebec - -Region name. +example: Albert Einstein +User's full name, if available. -- -*`host.geo.city_name`*:: +*`host.user.group.id`*:: + -- type: keyword -example: Montreal +Unique identifier for the group on the system/platform. -City name. +-- + +*`host.user.group.name`*:: ++ +-- +type: keyword +Name of the group. -- -*`host.geo.country_iso_code`*:: +*`host.user.hash`*:: + -- type: keyword -example: CA - -Country ISO code. - +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -- -*`host.geo.region_iso_code`*:: +*`host.user.id`*:: + -- type: keyword -example: CA-QC - -Region ISO code. - +One or multiple unique identifiers of the user. -- -*`host.geo.name`*:: +*`host.user.name`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +example: albert +Short name or login of the user. -- [float] == http fields -Fields related to HTTP activity. - +Fields related to HTTP activity. Use the `url` field set to store the url of the request. -*`http.request.method`*:: +*`http.request.body.bytes`*:: + -- -type: keyword - -example: get, post, put +type: long -Http request method. -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: 887 +Size in bytes of the request body. -- @@ -1631,84 +1799,63 @@ type: keyword example: Hello world -The full http request body. - - --- - -*`http.request.referrer`*:: -+ --- -type: keyword - -example: https://blog.example.com/ - -Referrer for this HTTP request. - +The full HTTP request body. -- -*`http.response.status_code`*:: +*`http.request.bytes`*:: + -- type: long -example: 404 - -Http response status code. +example: 1437 +Total size in bytes of the request (body and headers). -- -*`http.response.body.content`*:: +*`http.request.method`*:: + -- type: keyword -example: Hello world - -The full http response body. +example: get, post, put +HTTP request method. +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`http.version`*:: +*`http.request.referrer`*:: + -- type: keyword -example: 1.1 - -Http version. +example: https://blog.example.com/ +Referrer for this HTTP request. -- -*`http.request.bytes`*:: +*`http.response.body.bytes`*:: + -- type: long -example: 1437 - -format: bytes - -Total size in bytes of the request (body and headers). +example: 887 +Size in bytes of the response body. -- -*`http.request.body.bytes`*:: +*`http.response.body.content`*:: + -- -type: long - -example: 887 - -format: bytes +type: keyword -Size in bytes of the request body. +example: Hello world +The full HTTP response body. -- @@ -1719,24 +1866,29 @@ type: long example: 1437 -format: bytes - Total size in bytes of the response (body and headers). - -- -*`http.response.body.bytes`*:: +*`http.response.status_code`*:: + -- type: long -example: 887 +example: 404 -format: bytes +HTTP response status code. -Size in bytes of the response body. +-- + +*`http.version`*:: ++ +-- +type: keyword + +example: 1.1 +HTTP version. -- @@ -1746,17 +1898,15 @@ Size in bytes of the response body. Fields which are specific to log events. - *`log.level`*:: + -- type: keyword -example: ERR - -Log level of the log event. -Some examples are `WARN`, `ERR`, `INFO`. +example: err +Original log level of the log event. +Some examples are `warn`, `error`, `i`. -- @@ -1767,96 +1917,52 @@ type: keyword example: Sep 19 08:26:10 localhost My log - This is the original log message and contains the full log message before splitting it up in multiple parts. In contrast to the `message` field which can contain an extracted part of the log message, this field contains the original, full log message. It can have already some modifications applied like encoding or new lines removed to clean up the log message. This field is not indexed and doc_values are disabled so it can't be queried but the value can be retrieved from `_source`. - -Field is not indexed. - -- [float] == network fields -The network is defined as the communication path over which a host or network event happens. The network.* fields should be populated with details about the network activity associated with an event. - - - -*`network.name`*:: -+ --- -type: keyword - -example: Guest Wifi - -Name given by operators to sections of their network. - - --- - -*`network.type`*:: -+ --- -type: keyword - -example: ipv4 - -In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. - - --- - -*`network.iana_number`*:: -+ --- -type: keyword - -example: 6 - -IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). Standardized list of protocols. This aligns well with NetFlow and sFlow related logs which use the IANA Protocol Number. - +The network is defined as the communication path over which a host or network event happens. +The network.* fields should be populated with details about the network activity associated with an event. --- -*`network.transport`*:: +*`network.application`*:: + -- type: keyword -example: tcp - -Same as network.iana_number, but instead using the Keyword name of the transport layer (udp, tcp, ipv6-icmp, etc.) -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: aim +A name given to an application level protocol. This can be arbitrarily assigned for things like microservices, but also apply to things like skype, icq, facebook, twitter. This would be used in situations where the vendor or service can be decoded such as from the source/dest IP owners, ports, or wire format. +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`network.application`*:: +*`network.bytes`*:: + -- -type: keyword - -example: aim +type: long -A name given to an application. This can be arbitrarily assigned for things like microservices, but also apply to things like skype, icq, facebook, twitter. This would be used in situations where the vendor or service can be decoded such as from the source/dest IP owners, ports, or wire format. -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: 368 +Total bytes transferred in both directions. +If `source.bytes` and `destination.bytes` are known, `network.bytes` is their sum. -- -*`network.protocol`*:: +*`network.community_id`*:: + -- type: keyword -example: http - -L7 Network protocol name. ex. http, lumberjack, transport protocol. -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: 1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0= +A hash of source and destination IPs and ports, as well as the protocol used in a communication. This is a tool-agnostic standard to identify flows. +Learn more at https://github.com/corelight/community-id-spec. -- @@ -1878,7 +1984,6 @@ Recommended values are: When mapping events from a host-based monitoring context, populate this field from the host's point of view. When mapping events from a network or perimeter-based monitoring context, populate this field from the point of view of your network perimeter. - -- *`network.forwarded_ip`*:: @@ -1890,34 +1995,27 @@ example: 192.1.1.2 Host IP address when the source IP address is the proxy. - -- -*`network.community_id`*:: +*`network.iana_number`*:: + -- type: keyword -example: 1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0= - -A hash of source and destination IPs and ports, as well as the protocol used in a communication. This is a tool-agnostic standard to identify flows. -Learn more at https://github.com/corelight/community-id-spec. +example: 6 +IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). Standardized list of protocols. This aligns well with NetFlow and sFlow related logs which use the IANA Protocol Number. -- -*`network.bytes`*:: +*`network.name`*:: + -- -type: long - -example: 368 - -format: bytes +type: keyword -Total bytes transferred in both directions. -If `source.bytes` and `destination.bytes` are known, `network.bytes` is their sum. +example: Guest Wifi +Name given by operators to sections of their network. -- @@ -1931,129 +2029,165 @@ example: 24 Total packets transferred in both directions. If `source.packets` and `destination.packets` are known, `network.packets` is their sum. - -- -[float] -== observer fields +*`network.protocol`*:: ++ +-- +type: keyword -An observer is defined as a special network, security, or application device used to detect, observe, or create network, security, or application-related events and metrics. This could be a custom hardware appliance or a server that has been configured to run special network, security, or application software. Examples include firewalls, intrusion detection/prevention systems, network monitoring sensors, web application firewalls, data loss prevention systems, and APM servers. The observer.* fields shall be populated with details of the system, if any, that detects, observes and/or creates a network, security, or application event or metric. Message queues and ETL components used in processing events or metrics are not considered observers in ECS. +example: http +L7 Network protocol name. ex. http, lumberjack, transport protocol. +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". +-- -*`observer.mac`*:: +*`network.transport`*:: + -- type: keyword -MAC address of the observer +example: tcp +Same as network.iana_number, but instead using the Keyword name of the transport layer (udp, tcp, ipv6-icmp, etc.) +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`observer.ip`*:: +*`network.type`*:: + -- -type: ip +type: keyword -IP address of the observer. +example: ipv4 +In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`observer.hostname`*:: +[float] +== observer fields + +An observer is defined as a special network, security, or application device used to detect, observe, or create network, security, or application-related events and metrics. +This could be a custom hardware appliance or a server that has been configured to run special network, security, or application software. Examples include firewalls, intrusion detection/prevention systems, network monitoring sensors, web application firewalls, data loss prevention systems, and APM servers. The observer.* fields shall be populated with details of the system, if any, that detects, observes and/or creates a network, security, or application event or metric. Message queues and ETL components used in processing events or metrics are not considered observers in ECS. + + +*`observer.geo.city_name`*:: + -- type: keyword -Hostname of the observer. +example: Montreal +City name. -- -*`observer.vendor`*:: +*`observer.geo.continent_name`*:: + -- type: keyword -observer vendor information. +example: North America +Name of the continent. -- -*`observer.version`*:: +*`observer.geo.country_iso_code`*:: + -- type: keyword -Observer version. +example: CA +Country ISO code. -- -*`observer.serial_number`*:: +*`observer.geo.country_name`*:: + -- type: keyword -Observer serial number. +example: Canada +Country name. -- -*`observer.type`*:: +*`observer.geo.location`*:: + -- -type: keyword +type: geo_point -example: firewall +example: { "lon": -73.614830, "lat": 45.505918 } -The type of the observer the data is coming from. -There is no predefined list of observer types. Some examples are `forwarder`, `firewall`, `ids`, `ips`, `proxy`, `poller`, `sensor`, `APM server`. +Longitude and latitude. +-- +*`observer.geo.name`*:: ++ -- +type: keyword -[float] -== os fields +example: boston-dc -The OS fields contain information about the operating system. +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. + +-- + +*`observer.geo.region_iso_code`*:: ++ +-- +type: keyword +example: CA-QC + +Region ISO code. +-- -*`observer.os.platform`*:: +*`observer.geo.region_name`*:: + -- type: keyword -example: darwin - -Operating system platform (such centos, ubuntu, windows). +example: Quebec +Region name. -- -*`observer.os.name`*:: +*`observer.hostname`*:: + -- type: keyword -example: Mac OS X +Hostname of the observer. -Operating system name, without the version. +-- + +*`observer.ip`*:: ++ +-- +type: ip +IP address of the observer. -- -*`observer.os.full`*:: +*`observer.mac`*:: + -- type: keyword -example: Mac OS Mojave - -Operating system name, including the version or code name. - +MAC address of the observer -- @@ -2066,18 +2200,16 @@ example: debian OS family (such as redhat, debian, freebsd, windows). - -- -*`observer.os.version`*:: +*`observer.os.full`*:: + -- type: keyword -example: 10.14.1 - -Operating system version as a raw string. +example: Mac OS Mojave +Operating system name, including the version or code name. -- @@ -2090,138 +2222,102 @@ example: 4.4.0-112-generic Operating system kernel version as a raw string. - --- - -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - -*`observer.geo.location`*:: -+ --- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } - -Longitude and latitude. - - -- -*`observer.geo.continent_name`*:: +*`observer.os.name`*:: + -- type: keyword -example: North America - -Name of the continent. +example: Mac OS X +Operating system name, without the version. -- -*`observer.geo.country_name`*:: +*`observer.os.platform`*:: + -- type: keyword -example: Canada - -Country name. +example: darwin +Operating system platform (such centos, ubuntu, windows). -- -*`observer.geo.region_name`*:: +*`observer.os.version`*:: + -- type: keyword -example: Quebec - -Region name. +example: 10.14.1 +Operating system version as a raw string. -- -*`observer.geo.city_name`*:: +*`observer.serial_number`*:: + -- type: keyword -example: Montreal - -City name. - +Observer serial number. -- -*`observer.geo.country_iso_code`*:: +*`observer.type`*:: + -- type: keyword -example: CA - -Country ISO code. +example: firewall +The type of the observer the data is coming from. +There is no predefined list of observer types. Some examples are `forwarder`, `firewall`, `ids`, `ips`, `proxy`, `poller`, `sensor`, `APM server`. -- -*`observer.geo.region_iso_code`*:: +*`observer.vendor`*:: + -- type: keyword -example: CA-QC - -Region ISO code. - +observer vendor information. -- -*`observer.geo.name`*:: +*`observer.version`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. - +Observer version. -- [float] == organization fields -The organization fields enrich data with information about the company or entity the data is associated with. These fields help you arrange or filter data stored in an index by one or multiple organizations. - +The organization fields enrich data with information about the company or entity the data is associated with. +These fields help you arrange or filter data stored in an index by one or multiple organizations. -*`organization.name`*:: +*`organization.id`*:: + -- type: keyword -Organization name. - +Unique identifier for the organization. -- -*`organization.id`*:: +*`organization.name`*:: + -- type: keyword -Unique identifier for the organization. - +Organization name. -- @@ -2231,93 +2327,99 @@ Unique identifier for the organization. The OS fields contain information about the operating system. - -*`os.platform`*:: +*`os.family`*:: + -- type: keyword -example: darwin - -Operating system platform (such centos, ubuntu, windows). +example: debian +OS family (such as redhat, debian, freebsd, windows). -- -*`os.name`*:: +*`os.full`*:: + -- type: keyword -example: Mac OS X - -Operating system name, without the version. +example: Mac OS Mojave +Operating system name, including the version or code name. -- -*`os.full`*:: +*`os.kernel`*:: + -- type: keyword -example: Mac OS Mojave - -Operating system name, including the version or code name. +example: 4.4.0-112-generic +Operating system kernel version as a raw string. -- -*`os.family`*:: +*`os.name`*:: + -- type: keyword -example: debian - -OS family (such as redhat, debian, freebsd, windows). +example: Mac OS X +Operating system name, without the version. -- -*`os.version`*:: +*`os.platform`*:: + -- type: keyword -example: 10.14.1 - -Operating system version as a raw string. +example: darwin +Operating system platform (such centos, ubuntu, windows). -- -*`os.kernel`*:: +*`os.version`*:: + -- type: keyword -example: 4.4.0-112-generic - -Operating system kernel version as a raw string. +example: 10.14.1 +Operating system version as a raw string. -- [float] == process fields -These fields contain information about a process. These fields can help you correlate metrics information with a process id/name from a log message. The `process.pid` often stays in the metric itself and is copied to the global field for correlation. +These fields contain information about a process. +These fields can help you correlate metrics information with a process id/name from a log message. The `process.pid` often stays in the metric itself and is copied to the global field for correlation. + +*`process.args`*:: ++ +-- +type: keyword +example: ['ssh', '-l', 'user', '10.0.0.16'] -*`process.pid`*:: +Array of process arguments. +May be filtered to protect sensitive information. + +-- + +*`process.executable`*:: + -- -type: long +type: keyword -Process id. +example: /usr/bin/ssh +Absolute path to the process executable. -- @@ -2331,6 +2433,14 @@ example: ssh Process name. Sometimes called program name or similar. +-- + +*`process.pid`*:: ++ +-- +type: long + +Process id. -- @@ -2341,31 +2451,27 @@ type: long Process parent id. - -- -*`process.args`*:: +*`process.start`*:: + -- -type: keyword - -example: ['ssh', '-l', 'user', '10.0.0.16'] +type: date -Process arguments. -May be filtered to protect sensitive information. +example: 2016-05-23T08:05:34.853Z +The time the process started. -- -*`process.executable`*:: +*`process.thread.id`*:: + -- -type: keyword - -example: /usr/bin/ssh +type: long -Absolute path to the process executable. +example: 4242 +Thread ID. -- @@ -2377,133 +2483,180 @@ type: keyword Process title. The proctitle, some times the same as process name. Can also be different: for example a browser setting its title to the web page currently opened. - -- -*`process.thread.id`*:: +*`process.working_directory`*:: + -- -type: long +type: keyword -example: 4242 +example: /home/alice -Thread ID. +The working directory of the process. + +-- + +[float] +== related fields + +This field set is meant to facilitate pivoting around a piece of data. +Some pieces of information can be seen in many places in an ECS event. To facilitate searching for them, store an array of all seen values to their corresponding field in `related.`. +A concrete example is IP addresses, which can be under host, observer, source, destination, client, server, and network.forwarded_ip. If you append all IPs to `related.ip`, you can then search for a given IP trivially, no matter where it appeared, by querying `related.ip:a.b.c.d`. +*`related.ip`*:: ++ -- +type: ip -*`process.start`*:: +All of the IPs seen on your event. + +-- + +[float] +== server fields + +A Server is defined as the responder in a network connection for events regarding sessions, connections, or bidirectional flow records. +For TCP events, the server is the receiver of the initial SYN packet(s) of the TCP connection. For other protocols, the server is generally the responder in the network transaction. Some systems actually use the term "responder" to refer the server in TCP connections. The server fields describe details about the system acting as the server in the network event. Server fields are usually populated in conjunction with client fields. Server fields are generally not populated for packet-level events. +Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. + + +*`server.address`*:: + -- -type: date +type: keyword -example: 2016-05-23T08:05:34.853Z +Some event server addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. -The time the process started. +-- +*`server.bytes`*:: ++ +-- +type: long + +example: 184 + +Bytes sent from the server to the client. -- -*`process.working_directory`*:: +*`server.domain`*:: + -- type: keyword -example: /home/alice - -The working directory of the process. +Server domain. +-- +*`server.geo.city_name`*:: ++ -- +type: keyword -[float] -== related fields - -This field set is meant to facilitate pivoting around a piece of data. Some pieces of information can be seen in many places in ECS. To facilitate searching for them, append values to their corresponding field in `related.`. A concrete example is IP addresses, which can be under host, observer, source, destination, client, server, and network.forwarded_ip. If you append all IPs to `related.ip`, you can then search for a given IP trivially, no matter where it appeared, by querying `related.ip:a.b.c.d`. +example: Montreal +City name. +-- -*`related.ip`*:: +*`server.geo.continent_name`*:: + -- -type: ip +type: keyword -All of the IPs seen on your event. +example: North America +Name of the continent. -- -[float] -== server fields +*`server.geo.country_iso_code`*:: ++ +-- +type: keyword -A Server is defined as the responder in a network connection for events regarding sessions, connections, or bidirectional flow records. For TCP events, the server is the receiver of the initial SYN packet(s) of the TCP connection. For other protocols, the server is generally the responder in the network transaction. Some systems actually use the term "responder" to refer the server in TCP connections. The server fields describe details about the system acting as the server in the network event. Server fields are usually populated in conjunction with client fields. Server fields are generally not populated for packet-level events. -Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. +example: CA +Country ISO code. +-- -*`server.address`*:: +*`server.geo.country_name`*:: + -- type: keyword -Some event server addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. -Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. +example: Canada +Country name. -- -*`server.ip`*:: +*`server.geo.location`*:: + -- -type: ip +type: geo_point -IP address of the server. -Can be one or multiple IPv4 or IPv6 addresses. +example: { "lon": -73.614830, "lat": 45.505918 } +Longitude and latitude. -- -*`server.port`*:: +*`server.geo.name`*:: + -- -type: long +type: keyword -Port of the server. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`server.mac`*:: +*`server.geo.region_iso_code`*:: + -- type: keyword -MAC address of the server. +example: CA-QC +Region ISO code. -- -*`server.domain`*:: +*`server.geo.region_name`*:: + -- type: keyword -Server domain. +example: Quebec +Region name. -- -*`server.bytes`*:: +*`server.ip`*:: + -- -type: long +type: ip -example: 184 +IP address of the server. +Can be one or multiple IPv4 or IPv6 addresses. -format: bytes +-- -Bytes sent from the server to the client. +*`server.mac`*:: ++ +-- +type: keyword +MAC address of the server. -- @@ -2516,120 +2669,103 @@ example: 12 Packets sent from the server to the client. - -- -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - -*`server.geo.location`*:: +*`server.port`*:: + -- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } - -Longitude and latitude. +type: long +Port of the server. -- -*`server.geo.continent_name`*:: +*`server.user.email`*:: + -- type: keyword -example: North America - -Name of the continent. - +User email address. -- -*`server.geo.country_name`*:: +*`server.user.full_name`*:: + -- type: keyword -example: Canada - -Country name. +example: Albert Einstein +User's full name, if available. -- -*`server.geo.region_name`*:: +*`server.user.group.id`*:: + -- type: keyword -example: Quebec - -Region name. - +Unique identifier for the group on the system/platform. -- -*`server.geo.city_name`*:: +*`server.user.group.name`*:: + -- type: keyword -example: Montreal - -City name. - +Name of the group. -- -*`server.geo.country_iso_code`*:: +*`server.user.hash`*:: + -- type: keyword -example: CA - -Country ISO code. - +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -- -*`server.geo.region_iso_code`*:: +*`server.user.id`*:: + -- type: keyword -example: CA-QC - -Region ISO code. - +One or multiple unique identifiers of the user. -- -*`server.geo.name`*:: +*`server.user.name`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +example: albert +Short name or login of the user. -- [float] == service fields -The service fields describe the service for or from which the data was collected. These fields help you find and correlate logs for a specific service and version. +The service fields describe the service for or from which the data was collected. +These fields help you find and correlate logs for a specific service and version. + + +*`service.ephemeral_id`*:: ++ +-- +type: keyword + +example: 8a4f500f +Ephemeral identifier of this service (if one exists). +This id normally changes across restarts, but `service.id` does not. +-- *`service.id`*:: + @@ -2642,7 +2778,6 @@ Unique identifier of the running service. This id should uniquely identify this service. This makes it possible to correlate logs and metrics for one specific service. Example: If you are experiencing issues with one redis instance, you can filter on that id to see metrics and logs for that single instance. - -- *`service.name`*:: @@ -2657,6 +2792,14 @@ The name of the service is normally user given. This allows if two instances of Also it allows for distributed services that run on multiple hosts to correlate the related instances based on the name. In the case of Elasticsearch the service.name could contain the cluster name. For Beats the service.name is by default a copy of the `service.type` field if no name is specified. +-- + +*`service.state`*:: ++ +-- +type: keyword + +Current state of the service. -- @@ -2671,115 +2814,163 @@ The type of the service data is collected from. The type can be used to group and correlate logs and metrics from one service type. Example: If logs or metrics are collected from Elasticsearch, `service.type` would be `elasticsearch`. - -- -*`service.state`*:: +*`service.version`*:: + -- type: keyword -Current state of the service. +example: 3.2.4 +Version of the service the data was collected from. +This allows to look at a data set only for a specific version of a service. -- -*`service.version`*:: +[float] +== source fields + +Source fields describe details about the source of a packet/event. +Source fields are usually populated in conjunction with destination fields. + + +*`source.address`*:: + -- type: keyword -example: 3.2.4 +Some event source addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. -Version of the service the data was collected from. -This allows to look at a data set only for a specific version of a service. +-- + +*`source.bytes`*:: ++ +-- +type: long + +example: 184 +Bytes sent from the source to the destination. -- -*`service.ephemeral_id`*:: +*`source.domain`*:: + -- type: keyword -example: 8a4f500f +Source domain. -Ephemeral identifier of this service (if one exists). -This id normally changes across restarts, but `service.id` does not. +-- + +*`source.geo.city_name`*:: ++ +-- +type: keyword + +example: Montreal +City name. -- -[float] -== source fields +*`source.geo.continent_name`*:: ++ +-- +type: keyword -Source fields describe details about the source of a packet/event. Source fields are usually populated in conjunction with destination fields. +example: North America +Name of the continent. +-- -*`source.address`*:: +*`source.geo.country_iso_code`*:: + -- type: keyword -Some event source addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. -Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. +example: CA +Country ISO code. -- -*`source.ip`*:: +*`source.geo.country_name`*:: + -- -type: ip +type: keyword -IP address of the source. -Can be one or multiple IPv4 or IPv6 addresses. +example: Canada +Country name. -- -*`source.port`*:: +*`source.geo.location`*:: + -- -type: long +type: geo_point -Port of the source. +example: { "lon": -73.614830, "lat": 45.505918 } +Longitude and latitude. -- -*`source.mac`*:: +*`source.geo.name`*:: + -- type: keyword -MAC address of the source. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`source.domain`*:: +*`source.geo.region_iso_code`*:: + -- type: keyword -Source domain. +example: CA-QC +Region ISO code. -- -*`source.bytes`*:: +*`source.geo.region_name`*:: + -- -type: long +type: keyword -example: 184 +example: Quebec + +Region name. + +-- + +*`source.ip`*:: ++ +-- +type: ip + +IP address of the source. +Can be one or multiple IPv4 or IPv6 addresses. -format: bytes +-- -Bytes sent from the source to the destination. +*`source.mac`*:: ++ +-- +type: keyword +MAC address of the source. -- @@ -2792,133 +2983,110 @@ example: 12 Packets sent from the source to the destination. - -- -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - -*`source.geo.location`*:: +*`source.port`*:: + -- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } - -Longitude and latitude. +type: long +Port of the source. -- -*`source.geo.continent_name`*:: +*`source.user.email`*:: + -- type: keyword -example: North America - -Name of the continent. - +User email address. -- -*`source.geo.country_name`*:: +*`source.user.full_name`*:: + -- type: keyword -example: Canada - -Country name. +example: Albert Einstein +User's full name, if available. -- -*`source.geo.region_name`*:: +*`source.user.group.id`*:: + -- type: keyword -example: Quebec - -Region name. - +Unique identifier for the group on the system/platform. -- -*`source.geo.city_name`*:: +*`source.user.group.name`*:: + -- type: keyword -example: Montreal - -City name. - +Name of the group. -- -*`source.geo.country_iso_code`*:: +*`source.user.hash`*:: + -- type: keyword -example: CA - -Country ISO code. - +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -- -*`source.geo.region_iso_code`*:: +*`source.user.id`*:: + -- type: keyword -example: CA-QC - -Region ISO code. - +One or multiple unique identifiers of the user. -- -*`source.geo.name`*:: +*`source.user.name`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +example: albert +Short name or login of the user. -- [float] == url fields -URL fields provide a complete URL, with scheme, host, and path. +URL fields provide support for complete or partial URLs, and supports the breaking down into scheme, domain, path, and so on. - -*`url.original`*:: +*`url.domain`*:: + -- type: keyword -example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch +example: www.elastic.co +Domain of the url, such as "www.elastic.co". +In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. -Unmodified original url as seen in the event source. -Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. -This field is meant to represent the URL as it was observed, complete or not. +-- + +*`url.fragment`*:: ++ +-- +type: keyword +Portion of the url after the `#`, such as "top". +The `#` is not part of the fragment. -- @@ -2931,54 +3099,47 @@ example: https://www.elastic.co:443/search?q=elasticsearch#top If full URLs are important to your use case, they should be stored in `url.full`, whether this field is reconstructed or present in the event source. - -- -*`url.scheme`*:: +*`url.original`*:: + -- type: keyword -example: https - -Scheme of the request, such as "https". -Note: The `:` is not part of the scheme. +example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch +Unmodified original url as seen in the event source. +Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. +This field is meant to represent the URL as it was observed, complete or not. -- -*`url.domain`*:: +*`url.password`*:: + -- type: keyword -example: www.elastic.co - -Domain of the request, such as "www.elastic.co". -In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. - +Password of the request. -- -*`url.port`*:: +*`url.path`*:: + -- -type: integer - -example: 443 - -Port of the request, such as 443. +type: keyword +Path of the request, such as "/search". -- -*`url.path`*:: +*`url.port`*:: + -- -type: keyword +type: long -Path of the request, such as "/search". +example: 443 +Port of the request, such as 443. -- @@ -2990,17 +3151,17 @@ type: keyword The query field describes the query string of the request, such as "q=elasticsearch". The `?` is excluded from the query string. If a URL contains no `?`, there is no query field. If there is a `?` but no query, the query field exists with an empty string. The `exists` query can be used to differentiate between the two cases. - -- -*`url.fragment`*:: +*`url.scheme`*:: + -- type: keyword -Portion of the url after the `#`, such as "top". -The `#` is not part of the fragment. +example: https +Scheme of the request, such as "https". +Note: The `:` is not part of the scheme. -- @@ -3011,67 +3172,50 @@ type: keyword Username of the request. - --- - -*`url.password`*:: -+ --- -type: keyword - -Password of the request. - - -- [float] == user fields -The user fields describe information about the user that is relevant to the event. Fields can have one entry or multiple entries. If a user has more than one id, provide an array that includes all of them. - +The user fields describe information about the user that is relevant to the event. +Fields can have one entry or multiple entries. If a user has more than one id, provide an array that includes all of them. -*`user.id`*:: +*`user.email`*:: + -- type: keyword -One or multiple unique identifiers of the user. - +User email address. -- -*`user.name`*:: +*`user.full_name`*:: + -- type: keyword -example: albert - -Short name or login of the user. +example: Albert Einstein +User's full name, if available. -- -*`user.full_name`*:: +*`user.group.id`*:: + -- type: keyword -example: Albert Einstein - -User's full name, if available. - +Unique identifier for the group on the system/platform. -- -*`user.email`*:: +*`user.group.name`*:: + -- type: keyword -User email address. - +Name of the group. -- @@ -3083,52 +3227,43 @@ type: keyword Unique user hash to correlate information for a user in anonymized form. Useful if `user.id` or `user.name` contain confidential information and cannot be used. - -- -[float] -== group fields - -The group fields are meant to represent groups that are relevant to the event. - - - -*`user.group.id`*:: +*`user.id`*:: + -- type: keyword -Unique identifier for the group on the system/platform. - +One or multiple unique identifiers of the user. -- -*`user.group.name`*:: +*`user.name`*:: + -- type: keyword -Name of the group. +example: albert +Short name or login of the user. -- [float] == user_agent fields -The user_agent fields normally come from a browser request. They often show up in web service logs coming from the parsed user agent string. +The user_agent fields normally come from a browser request. +They often show up in web service logs coming from the parsed user agent string. - -*`user_agent.original`*:: +*`user_agent.device.name`*:: + -- type: keyword -example: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1 - -Unparsed version of the user_agent. +example: iPhone +Name of the device. -- @@ -3141,85 +3276,71 @@ example: Safari Name of the user agent. - -- -*`user_agent.version`*:: +*`user_agent.original`*:: + -- type: keyword -example: 12.0 - -Version of the user agent. +example: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1 +Unparsed version of the user_agent. -- -*`user_agent.device.name`*:: +*`user_agent.os.family`*:: + -- type: keyword -example: iPhone - -Name of the device. +example: debian +OS family (such as redhat, debian, freebsd, windows). -- -[float] -== os fields - -The OS fields contain information about the operating system. - - - -*`user_agent.os.platform`*:: +*`user_agent.os.full`*:: + -- type: keyword -example: darwin - -Operating system platform (such centos, ubuntu, windows). +example: Mac OS Mojave +Operating system name, including the version or code name. -- -*`user_agent.os.name`*:: +*`user_agent.os.kernel`*:: + -- type: keyword -example: Mac OS X - -Operating system name, without the version. +example: 4.4.0-112-generic +Operating system kernel version as a raw string. -- -*`user_agent.os.full`*:: +*`user_agent.os.name`*:: + -- type: keyword -example: Mac OS Mojave - -Operating system name, including the version or code name. +example: Mac OS X +Operating system name, without the version. -- -*`user_agent.os.family`*:: +*`user_agent.os.platform`*:: + -- type: keyword -example: debian - -OS family (such as redhat, debian, freebsd, windows). +example: darwin +Operating system platform (such centos, ubuntu, windows). -- @@ -3232,28 +3353,16 @@ example: 10.14.1 Operating system version as a raw string. - --- - -*`user_agent.os.kernel`*:: -+ --- -type: keyword - -example: 4.4.0-112-generic - -Operating system kernel version as a raw string. - - -- -*`agent.hostname`*:: +*`user_agent.version`*:: + -- type: keyword -Hostname of the agent. +example: 12.0 +Version of the user agent. -- diff --git a/winlogbeat/include/fields.go b/winlogbeat/include/fields.go index d0a1d0fc84a8..3d8c684291ba 100644 --- a/winlogbeat/include/fields.go +++ b/winlogbeat/include/fields.go @@ -32,5 +32,5 @@ func init() { // AssetFieldsYml returns asset data. // This is the base64 encoded gzipped contents of fields.yml. func AssetFieldsYml() string { - return "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" + return "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" } diff --git a/x-pack/functionbeat/docs/fields.asciidoc b/x-pack/functionbeat/docs/fields.asciidoc index 40127795b59e..b0621a4d158f 100644 --- a/x-pack/functionbeat/docs/fields.asciidoc +++ b/x-pack/functionbeat/docs/fields.asciidoc @@ -29,6 +29,15 @@ Contains common beat fields available in all event types. +*`agent.hostname`*:: ++ +-- +type: keyword + +Hostname of the agent. + +-- + *`beat.timezone`*:: + -- @@ -211,8 +220,7 @@ Image labels. [[exported-fields-ecs]] == ECS fields -ECS fields. - +ECS Fields. *`@timestamp`*:: @@ -225,22 +233,10 @@ example: 2016-05-23T08:05:34.853Z required: True Date/time when the event originated. -For log events this is the date/time when the event was generated, and not when it was read. +This is the date/time extracted from the event, typically representing when the event was generated by the source. +If the event source has no original timestamp, this value is typically populated by the first time the event was received by the pipeline. Required field for all events. - --- - -*`tags`*:: -+ --- -type: keyword - -example: ["production", "env2"] - -List of keywords used to tag each event. - - -- *`labels`*:: @@ -250,11 +246,10 @@ type: object example: {'application': 'foo-bar', 'env': 'production'} -Key/value pairs. +Custom key/value pairs. Can be used to add meta information to events. Should not contain nested objects. All values are stored as keyword. Example: `docker` and `k8s` labels. - -- *`message`*:: @@ -264,28 +259,51 @@ type: text example: Hello World -For log events the message field contains the log message. -In other use cases the message field can be used to concatenate different values which are then freely searchable. If multiple messages exist, they can be combined into one message. +For log events the message field contains the log message, optimized for viewing in a log viewer. +For structured logs without an original message field, other fields can be concatenated to form a human-readable summary of the event. +If multiple messages exist, they can be combined into one message. + +-- + +*`tags`*:: ++ +-- +type: keyword + +example: ["production", "env2"] +List of keywords used to tag each event. -- [float] == agent fields -The agent fields contain the data about the software entity, if any, that collects, detects, or observes events on a host, or takes measurements on a host. Examples include Beats. Agents may also run on observers. ECS agent.* fields shall be populated with details of the agent running on the host or observer where the event happened or the measurement was taken. +The agent fields contain the data about the software entity, if any, that collects, detects, or observes events on a host, or takes measurements on a host. +Examples include Beats. Agents may also run on observers. ECS agent.* fields shall be populated with details of the agent running on the host or observer where the event happened or the measurement was taken. - -*`agent.version`*:: +*`agent.ephemeral_id`*:: + -- type: keyword -example: 6.0.0-rc2 +example: 8a4f500f -Version of the agent. +Ephemeral identifier of this agent (if one exists). +This id normally changes across restarts, but `agent.id` does not. + +-- + +*`agent.id`*:: ++ +-- +type: keyword + +example: 8a4f500d +Unique identifier of this agent (if one exists). +Example: For Beats this would be beat.id. -- @@ -296,11 +314,10 @@ type: keyword example: foo -Name of the agent. +Custom name of the agent. This is a name that can be given to an agent. This can be helpful if for example two Filebeat instances are running on the same host but a human readable separation is needed on which Filebeat instance data is coming from. If no name is given, the name is often left empty. - -- *`agent.type`*:: @@ -313,43 +330,27 @@ example: filebeat Type of the agent. The agent type stays always the same and should be given by the agent used. In case of Filebeat the agent would always be Filebeat also if two Filebeat instances are run on the same machine. - --- - -*`agent.id`*:: -+ --- -type: keyword - -example: 8a4f500d - -Unique identifier of this agent (if one exists). -Example: For Beats this would be beat.id. - - -- -*`agent.ephemeral_id`*:: +*`agent.version`*:: + -- type: keyword -example: 8a4f500f - -Ephemeral identifier of this agent (if one exists). -This id normally changes across restarts, but `agent.id` does not. +example: 6.0.0-rc2 +Version of the agent. -- [float] == client fields -A client is defined as the initiator of a network connection for events regarding sessions, connections, or bidirectional flow records. For TCP events, the client is the initiator of the TCP connection that sends the SYN packet(s). For other protocols, the client is generally the initiator or requestor in the network transaction. Some systems use the term "originator" to refer the client in TCP connections. The client fields describe details about the system acting as the client in the network event. Client fields are usually populated in conjunction with server fields. Client fields are generally not populated for packet-level events. +A client is defined as the initiator of a network connection for events regarding sessions, connections, or bidirectional flow records. +For TCP events, the client is the initiator of the TCP connection that sends the SYN packet(s). For other protocols, the client is generally the initiator or requestor in the network transaction. Some systems use the term "originator" to refer the client in TCP connections. The client fields describe details about the system acting as the client in the network event. Client fields are usually populated in conjunction with server fields. Client fields are generally not populated for packet-level events. Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. - *`client.address`*:: + -- @@ -358,83 +359,72 @@ type: keyword Some event client addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. - -- -*`client.ip`*:: +*`client.bytes`*:: + -- -type: ip +type: long -IP address of the client. -Can be one or multiple IPv4 or IPv6 addresses. +example: 184 +Bytes sent from the client to the server. -- -*`client.port`*:: +*`client.domain`*:: + -- -type: long - -Port of the client. +type: keyword +Client domain. -- -*`client.mac`*:: +*`client.geo.city_name`*:: + -- type: keyword -MAC address of the client. +example: Montreal +City name. -- -*`client.domain`*:: +*`client.geo.continent_name`*:: + -- type: keyword -Client domain. +example: North America +Name of the continent. -- -*`client.bytes`*:: +*`client.geo.country_iso_code`*:: + -- -type: long - -example: 184 - -format: bytes +type: keyword -Bytes sent from the client to the server. +example: CA +Country ISO code. -- -*`client.packets`*:: +*`client.geo.country_name`*:: + -- -type: long - -example: 12 +type: keyword -Packets sent from the client to the server. +example: Canada +Country name. -- -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - *`client.geo.location`*:: + -- @@ -444,30 +434,29 @@ example: { "lon": -73.614830, "lat": 45.505918 } Longitude and latitude. - -- -*`client.geo.continent_name`*:: +*`client.geo.name`*:: + -- type: keyword -example: North America - -Name of the continent. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`client.geo.country_name`*:: +*`client.geo.region_iso_code`*:: + -- type: keyword -example: Canada - -Country name. +example: CA-QC +Region ISO code. -- @@ -480,274 +469,274 @@ example: Quebec Region name. - -- -*`client.geo.city_name`*:: +*`client.ip`*:: + -- -type: keyword - -example: Montreal - -City name. +type: ip +IP address of the client. +Can be one or multiple IPv4 or IPv6 addresses. -- -*`client.geo.country_iso_code`*:: +*`client.mac`*:: + -- type: keyword -example: CA - -Country ISO code. - +MAC address of the client. -- -*`client.geo.region_iso_code`*:: +*`client.packets`*:: + -- -type: keyword - -example: CA-QC +type: long -Region ISO code. +example: 12 +Packets sent from the client to the server. -- -*`client.geo.name`*:: +*`client.port`*:: + -- -type: keyword - -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +type: long +Port of the client. -- -[float] -== cloud fields - -Fields related to the cloud or infrastructure the events are coming from. - - - -*`cloud.provider`*:: +*`client.user.email`*:: + -- type: keyword -example: ec2 - -Name of the cloud provider. Example values are ec2, gce, or digitalocean. - +User email address. -- -*`cloud.availability_zone`*:: +*`client.user.full_name`*:: + -- type: keyword -example: us-east-1c - -Availability zone in which this host is running. +example: Albert Einstein +User's full name, if available. -- -*`cloud.region`*:: +*`client.user.group.id`*:: + -- type: keyword -example: us-east-1 - -Region in which this host is running. - +Unique identifier for the group on the system/platform. -- -*`cloud.instance.id`*:: +*`client.user.group.name`*:: + -- type: keyword -example: i-1234567890abcdef0 - -Instance ID of the host machine. - +Name of the group. -- -*`cloud.instance.name`*:: +*`client.user.hash`*:: + -- type: keyword -Instance name of the host machine. - +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -- -*`cloud.machine.type`*:: +*`client.user.id`*:: + -- type: keyword -example: t2.medium - -Machine type of the host machine. - +One or multiple unique identifiers of the user. -- -*`cloud.account.id`*:: +*`client.user.name`*:: + -- type: keyword -example: 666777888999 - -The cloud account or organization id used to identify different entities in a multi-tenant environment. -Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. +example: albert +Short name or login of the user. -- [float] -== container fields - -Container fields are used for meta information about the specific container that is the source of information. These fields help correlate data based containers from any runtime. +== cloud fields +Fields related to the cloud or infrastructure the events are coming from. -*`container.runtime`*:: +*`cloud.account.id`*:: + -- type: keyword -example: docker - -Runtime managing this container. +example: 666777888999 +The cloud account or organization id used to identify different entities in a multi-tenant environment. +Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. -- -*`container.id`*:: +*`cloud.availability_zone`*:: + -- type: keyword -Unique container id. +example: us-east-1c +Availability zone in which this host is running. -- -*`container.image.name`*:: +*`cloud.instance.id`*:: + -- type: keyword -Name of the image the container was built on. +example: i-1234567890abcdef0 +Instance ID of the host machine. -- -*`container.image.tag`*:: +*`cloud.instance.name`*:: + -- type: keyword -Container image tag. +Instance name of the host machine. +-- +*`cloud.machine.type`*:: ++ -- +type: keyword -*`container.name`*:: +example: t2.medium + +Machine type of the host machine. + +-- + +*`cloud.provider`*:: + -- type: keyword -Container name. +example: aws +Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. -- -*`container.labels`*:: +*`cloud.region`*:: + -- -type: object +type: keyword -Image labels. +example: us-east-1 +Region in which this host is running. -- [float] -== destination fields - -Destination fields describe details about the destination of a packet/event. Destination fields are usually populated in conjunction with source fields. +== container fields +Container fields are used for meta information about the specific container that is the source of information. +These fields help correlate data based containers from any runtime. -*`destination.address`*:: +*`container.id`*:: + -- type: keyword -Some event destination addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. -Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. - +Unique container id. -- -*`destination.ip`*:: +*`container.image.name`*:: + -- -type: ip +type: keyword -IP address of the destination. -Can be one or multiple IPv4 or IPv6 addresses. +Name of the image the container was built on. + +-- + +*`container.image.tag`*:: ++ +-- +type: keyword +Container image tag. -- -*`destination.port`*:: +*`container.labels`*:: + -- -type: long +type: object -Port of the destination. +Image labels. + +-- + +*`container.name`*:: ++ +-- +type: keyword +Container name. -- -*`destination.mac`*:: +*`container.runtime`*:: + -- type: keyword -MAC address of the destination. +example: docker +Runtime managing this container. -- -*`destination.domain`*:: +[float] +== destination fields + +Destination fields describe details about the destination of a packet/event. +Destination fields are usually populated in conjunction with source fields. + + +*`destination.address`*:: + -- type: keyword -Destination domain. - +Some event destination addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. -- @@ -758,31 +747,62 @@ type: long example: 184 -format: bytes - Bytes sent from the destination to the source. +-- +*`destination.domain`*:: ++ -- +type: keyword -*`destination.packets`*:: +Destination domain. + +-- + +*`destination.geo.city_name`*:: + -- -type: long +type: keyword -example: 12 +example: Montreal -Packets sent from the destination to the source. +City name. + +-- +*`destination.geo.continent_name`*:: ++ +-- +type: keyword + +example: North America + +Name of the continent. -- -[float] -== geo fields +*`destination.geo.country_iso_code`*:: ++ +-- +type: keyword + +example: CA + +Country ISO code. + +-- -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. +*`destination.geo.country_name`*:: ++ +-- +type: keyword +example: Canada +Country name. + +-- *`destination.geo.location`*:: + @@ -793,30 +813,29 @@ example: { "lon": -73.614830, "lat": 45.505918 } Longitude and latitude. - -- -*`destination.geo.continent_name`*:: +*`destination.geo.name`*:: + -- type: keyword -example: North America - -Name of the continent. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`destination.geo.country_name`*:: +*`destination.geo.region_iso_code`*:: + -- type: keyword -example: Canada - -Country name. +example: CA-QC +Region ISO code. -- @@ -829,56 +848,112 @@ example: Quebec Region name. +-- +*`destination.ip`*:: ++ -- +type: ip -*`destination.geo.city_name`*:: +IP address of the destination. +Can be one or multiple IPv4 or IPv6 addresses. + +-- + +*`destination.mac`*:: + -- type: keyword -example: Montreal +MAC address of the destination. -City name. +-- + +*`destination.packets`*:: ++ +-- +type: long + +example: 12 +Packets sent from the destination to the source. -- -*`destination.geo.country_iso_code`*:: +*`destination.port`*:: ++ +-- +type: long + +Port of the destination. + +-- + +*`destination.user.email`*:: + -- type: keyword -example: CA +User email address. -Country ISO code. +-- +*`destination.user.full_name`*:: ++ +-- +type: keyword + +example: Albert Einstein + +User's full name, if available. -- -*`destination.geo.region_iso_code`*:: +*`destination.user.group.id`*:: + -- type: keyword -example: CA-QC +Unique identifier for the group on the system/platform. -Region ISO code. +-- +*`destination.user.group.name`*:: ++ +-- +type: keyword + +Name of the group. -- -*`destination.geo.name`*:: +*`destination.user.hash`*:: + -- type: keyword -example: boston-dc +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +-- +*`destination.user.id`*:: ++ +-- +type: keyword + +One or multiple unique identifiers of the user. + +-- + +*`destination.user.name`*:: ++ +-- +type: keyword + +example: albert + +Short name or login of the user. -- @@ -888,29 +963,35 @@ Not typically used in automated geolocation. Meta-information specific to ECS. - *`ecs.version`*:: + -- type: keyword -example: 1.0.0-beta2 +example: 1.0.0 required: True ECS version this event conforms to. `ecs.version` is a required field and must exist in all events. When querying across multiple indices -- which may conform to slightly different ECS versions -- this field lets integrations adjust to the schema version of the events. -The current version is 1.0.0-beta2 . - -- [float] == error fields -These fields can represent errors of any kind. Use them for errors that happen while fetching events or in cases where the event itself contains an error. +These fields can represent errors of any kind. +Use them for errors that happen while fetching events or in cases where the event itself contains an error. + + +*`error.code`*:: ++ +-- +type: keyword +Error code describing the error. +-- *`error.id`*:: + @@ -919,7 +1000,6 @@ type: keyword Unique identifier for the error. - -- *`error.message`*:: @@ -929,98 +1009,113 @@ type: text Error message. - -- -*`error.code`*:: +[float] +== event fields + +The event fields are used for context information about the log or metric event itself. +A log is defined as an event containing details of something that happened. Log events must include the time at which the thing happened. Examples of log events include a process starting on a host, a network packet being sent from a source to a destination, or a network connection between a client and a server being initiated or closed. A metric is defined as an event containing one or more numerical or categorical measurements and the time at which the measurement was taken. Examples of metric events include memory pressure measured on a host, or vulnerabilities measured on a scanned host. + + +*`event.action`*:: + -- type: keyword -Error code describing the error. +example: user-password-change +The action captured by the event. +This describes the information in the event. It is more specific than `event.category`. Examples are `group-add`, `process-started`, `file-created`. The value is normally defined by the implementer. -- -[float] -== event fields +*`event.category`*:: ++ +-- +type: keyword -The event fields are used for context information about the log or metric event itself. A log is defined as an event containing details of something that happened. Log events must include the time at which the thing happened. Examples of log events include a process starting on a host, a network packet being sent from a source to a destination, or a network connection between a client and a server being initiated or closed. A metric is defined as an event containing one or more numerical or categorical measurements and the time at which the measurement was taken. Examples of metric events include memory pressure measured on a host, or vulnerabilities measured on a scanned host. +example: user-management +Event category. +This contains high-level information about the contents of the event. It is more generic than `event.action`, in the sense that typically a category contains multiple actions. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +-- -*`event.id`*:: +*`event.created`*:: + -- -type: keyword - -example: 8a4f500d - -Unique ID to describe the event. +type: date +event.created contains the date/time when the event was first read by an agent, or by your pipeline. +This field is distinct from @timestamp in that @timestamp typically contain the time extracted from the original event. +In most situations, these two timestamps will be slightly different. The difference can be used to calculate the delay between your source generating an event, and the time when your agent first processed it. This can be used to monitor your agent's or pipeline's ability to keep up with your event source. +In case the two timestamps are identical, @timestamp should be used. -- -*`event.kind`*:: +*`event.dataset`*:: + -- type: keyword -example: state - -The kind of the event. -This gives information about what type of information the event contains, without being specific to the contents of the event. Examples are `event`, `state`, `alarm`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +example: stats +Name of the dataset. +The concept of a `dataset` (fileset / metricset) is used in Beats as a subset of modules. It contains the information which is currently stored in metricset.name and metricset.module or fileset.name. -- -*`event.category`*:: +*`event.duration`*:: + -- -type: keyword +type: long -example: user-management +Duration of the event in nanoseconds. +If event.start and event.end are known this value should be the difference between the end and start time. -Event category. -This contains high-level information about the contents of the event. It is more generic than `event.action`, in the sense that typically a category contains multiple actions. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +-- +*`event.end`*:: ++ +-- +type: date + +event.end contains the date when the event ended or when the activity was last observed. -- -*`event.action`*:: +*`event.hash`*:: + -- type: keyword -example: user-password-change - -The action captured by the event. -This describes the information in the event. It is more specific than `event.category`. Examples are `group-add`, `process-started`, `file-created`. The value is normally defined by the implementer. +example: 123456789012345678901234567890ABCD +Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate log integrity. -- -*`event.outcome`*:: +*`event.id`*:: + -- type: keyword -example: success - -The outcome of the event. -If the event describes an action, this fields contains the outcome of that action. Examples outcomes are `success` and `failure`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. +example: 8a4f500d +Unique ID to describe the event. -- -*`event.type`*:: +*`event.kind`*:: + -- type: keyword -Reserved for future usage. -Please avoid using this field for user data. +example: state +The kind of the event. +This gives information about what type of information the event contains, without being specific to the contents of the event. Examples are `event`, `state`, `alarm`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. -- @@ -1034,19 +1129,48 @@ example: mysql Name of the module this data is coming from. This information is coming from the modules used in Beats or Logstash. +-- +*`event.original`*:: ++ -- +type: keyword -*`event.dataset`*:: +example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 + +Raw text message of entire event. Used to demonstrate log integrity. +This field is not indexed and doc_values are disabled. It cannot be searched, but it can be retrieved from `_source`. + +-- + +*`event.outcome`*:: + -- type: keyword -example: stats +example: success -Name of the dataset. -The concept of a `dataset` (fileset / metricset) is used in Beats as a subset of modules. It contains the information which is currently stored in metricset.name and metricset.module or fileset.name. +The outcome of the event. +If the event describes an action, this fields contains the outcome of that action. Examples outcomes are `success` and `failure`. Warning: In future versions of ECS, we plan to provide a list of acceptable values for this field, please use with caution. + +-- +*`event.risk_score`*:: ++ +-- +type: float + +Risk score or priority of the event (e.g. security solutions). Use your system's original value here. + +-- + +*`event.risk_score_norm`*:: ++ +-- +type: float + +Normalized risk score or priority of the event, on a scale of 0 to 100. +This is mainly useful if you use more than one system that assigns risk scores, and you want to see a normalized value across all systems. -- @@ -1057,122 +1181,132 @@ type: long example: 7 -Severity describes the severity of the event. What the different severity values mean can very different between use cases. It's up to the implementer to make sure severities are consistent across events. - +Severity describes the original severity of the event. What the different severity values mean can very different between use cases. It's up to the implementer to make sure severities are consistent across events. -- -*`event.original`*:: +*`event.start`*:: + -- -type: keyword +type: date -example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 +event.start contains the date when the event started or when the activity was first observed. -Raw text message of entire event. Used to demonstrate log integrity. -This field is not indexed and doc_values are disabled. It cannot be searched, but it can be retrieved from `_source`. +-- +*`event.timezone`*:: ++ +-- +type: keyword -Field is not indexed. +This field should be populated when the event's timestamp does not include timezone information already (e.g. default Syslog timestamps). It's optional otherwise. +Acceptable timezone formats are: a canonical ID (e.g. "Europe/Amsterdam"), abbreviated (e.g. "EST") or an HH:mm differential (e.g. "-05:00"). -- -*`event.hash`*:: +*`event.type`*:: + -- type: keyword -example: 123456789012345678901234567890ABCD +Reserved for future usage. +Please avoid using this field for user data. -Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate log integrity. +-- +[float] +== file fields --- +A file is defined as a set of information that has been created on, or has existed on a filesystem. +File objects can be associated with host events, network events, and/or file events (e.g., those produced by File Integrity Monitoring [FIM] products or services). File fields provide details about the affected file associated with the event or metric. -*`event.duration`*:: + +*`file.ctime`*:: + -- -type: long +type: date -format: duration +Last time file metadata changed. -Duration of the event in nanoseconds. -If event.start and event.end are known this value should be the difference between the end and start time. +-- +*`file.device`*:: ++ +-- +type: keyword + +Device that is the source of the file. -- -*`event.timezone`*:: +*`file.extension`*:: + -- type: keyword -This field should be populated when the event's timestamp does not include timezone information already (e.g. default Syslog timestamps). It's optional otherwise. -Acceptable timezone formats are: a canonical ID (e.g. "Europe/Amsterdam"), abbreviated (e.g. "EST") or an HH:mm differential (e.g. "-05:00"). +example: png +File extension. +This should allow easy filtering by file extensions. -- -*`event.created`*:: +*`file.gid`*:: + -- -type: date - -event.created contains the date when the event was created. -This timestamp is distinct from @timestamp in that @timestamp contains the processed timestamp. For logs these two timestamps can be different as the timestamp in the log line and when the event is read for example by Filebeat are not identical. `@timestamp` must contain the timestamp extracted from the log line, event.created when the log line is read. The same could apply to package capturing where @timestamp contains the timestamp extracted from the network package and event.created when the event was created. -In case the two timestamps are identical, @timestamp should be used. +type: keyword +Primary group ID (GID) of the file. -- -*`event.start`*:: +*`file.group`*:: + -- -type: date +type: keyword -event.start contains the date when the event started or when the activity was first observed. +Primary group name of the file. +-- +*`file.inode`*:: ++ -- +type: keyword -*`event.end`*:: +Inode representing the file in the filesystem. + +-- + +*`file.mode`*:: + -- -type: date +type: keyword -event.end contains the date when the event ended or when the activity was last observed. +example: 416 +Mode of the file in octal representation. -- -*`event.risk_score`*:: +*`file.mtime`*:: + -- -type: float - -Risk score or priority of the event (e.g. security solutions). Use your system's original value here. +type: date +Last time file content was modified. -- -*`event.risk_score_norm`*:: +*`file.owner`*:: + -- -type: float - -Normalized risk score or priority of the event, on a scale of 0 to 100. -This is mainly useful if you use more than one system that assigns risk scores, and you want to see a normalized value across all systems. +type: keyword +File owner's username. -- -[float] -== file fields - -A file is defined as a set of information that has been created on, or has existed on a filesystem. File objects can be associated with host events, network events, and/or file events (e.g., those produced by File Integrity Monitoring [FIM] products or services). File fields provide details about the affected file associated with the event or metric. - - - *`file.path`*:: + -- @@ -1182,25 +1316,21 @@ Path to the file. -- -*`file.target_path`*:: +*`file.size`*:: + -- -type: keyword +type: long -Target path for symlinks. +File size in bytes (field is only added when `type` is `file`). -- -*`file.extension`*:: +*`file.target_path`*:: + -- type: keyword -example: png - -File extension. -This should allow easy filtering by file extensions. - +Target path for symlinks. -- @@ -1213,98 +1343,109 @@ File type (file, dir, or symlink). -- -*`file.device`*:: +*`file.uid`*:: + -- type: keyword -Device that is the source of the file. +The user ID (UID) or security identifier (SID) of the file owner. -- -*`file.inode`*:: -+ --- -type: keyword +[float] +== geo fields -Inode representing the file in the filesystem. +Geo fields can carry data about a specific location related to an event. +This geolocation information can be derived from techniques such as Geo IP, or be user-supplied. --- -*`file.uid`*:: +*`geo.city_name`*:: + -- type: keyword -The user ID (UID) or security identifier (SID) of the file owner. +example: Montreal +City name. -- -*`file.owner`*:: +*`geo.continent_name`*:: + -- type: keyword -File owner's username. +example: North America + +Name of the continent. -- -*`file.gid`*:: +*`geo.country_iso_code`*:: + -- type: keyword -Primary group ID (GID) of the file. +example: CA + +Country ISO code. -- -*`file.group`*:: +*`geo.country_name`*:: + -- type: keyword -Primary group name of the file. +example: Canada + +Country name. -- -*`file.mode`*:: +*`geo.location`*:: + -- -type: keyword +type: geo_point -example: 416 +example: { "lon": -73.614830, "lat": 45.505918 } -Mode of the file in octal representation. +Longitude and latitude. -- -*`file.size`*:: +*`geo.name`*:: + -- -type: long +type: keyword -format: bytes +example: boston-dc -File size in bytes (field is only added when `type` is `file`). +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`file.mtime`*:: +*`geo.region_iso_code`*:: + -- -type: date +type: keyword -Last time file content was modified. +example: CA-QC + +Region ISO code. -- -*`file.ctime`*:: +*`geo.region_name`*:: + -- -type: date +type: keyword -Last time file metadata changed. +example: Quebec + +Region name. -- @@ -1314,7 +1455,6 @@ Last time file metadata changed. The group fields are meant to represent groups that are relevant to the event. - *`group.id`*:: + -- @@ -1322,7 +1462,6 @@ type: keyword Unique identifier for the group on the system/platform. - -- *`group.name`*:: @@ -1332,133 +1471,162 @@ type: keyword Name of the group. - -- [float] == host fields -A host is defined as a general computing instance. ECS host.* fields should be populated with details about the host on which the event happened, or on which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. - +A host is defined as a general computing instance. +ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. -*`host.hostname`*:: +*`host.architecture`*:: + -- type: keyword -Hostname of the host. -It normally contains what the `hostname` command returns on the host machine. +example: x86_64 +Operating system architecture. -- -*`host.name`*:: +*`host.geo.city_name`*:: + -- type: keyword -Name of the host. -It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. +example: Montreal +City name. -- -*`host.id`*:: +*`host.geo.continent_name`*:: + -- type: keyword -Unique host id. -As hostname is not always unique, use values that are meaningful in your environment. -Example: The current usage of `beat.name`. +example: North America +Name of the continent. -- -*`host.ip`*:: +*`host.geo.country_iso_code`*:: + -- -type: ip +type: keyword -Host ip address. +example: CA +Country ISO code. -- -*`host.mac`*:: +*`host.geo.country_name`*:: + -- type: keyword -Host mac address. +example: Canada +Country name. -- -*`host.type`*:: +*`host.geo.location`*:: + -- -type: keyword +type: geo_point -Type of host. -For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. +example: { "lon": -73.614830, "lat": 45.505918 } +Longitude and latitude. -- -*`host.architecture`*:: +*`host.geo.name`*:: + -- type: keyword -example: x86_64 - -Operating system architecture. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -[float] -== os fields +*`host.geo.region_iso_code`*:: ++ +-- +type: keyword -The OS fields contain information about the operating system. +example: CA-QC +Region ISO code. +-- -*`host.os.platform`*:: +*`host.geo.region_name`*:: + -- type: keyword -example: darwin +example: Quebec -Operating system platform (such centos, ubuntu, windows). +Region name. + +-- +*`host.hostname`*:: ++ +-- +type: keyword + +Hostname of the host. +It normally contains what the `hostname` command returns on the host machine. -- -*`host.os.name`*:: +*`host.id`*:: + -- type: keyword -example: Mac OS X +Unique host id. +As hostname is not always unique, use values that are meaningful in your environment. +Example: The current usage of `beat.name`. -Operating system name, without the version. +-- + +*`host.ip`*:: ++ +-- +type: ip +Host ip address. -- -*`host.os.full`*:: +*`host.mac`*:: + -- type: keyword -example: Mac OS Mojave +Host mac address. -Operating system name, including the version or code name. +-- + +*`host.name`*:: ++ +-- +type: keyword +Name of the host. +It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. -- @@ -1471,18 +1639,16 @@ example: debian OS family (such as redhat, debian, freebsd, windows). - -- -*`host.os.version`*:: +*`host.os.full`*:: + -- type: keyword -example: 10.14.1 - -Operating system version as a raw string. +example: Mac OS Mojave +Operating system name, including the version or code name. -- @@ -1495,131 +1661,133 @@ example: 4.4.0-112-generic Operating system kernel version as a raw string. - -- -[float] -== geo fields +*`host.os.name`*:: ++ +-- +type: keyword -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. +example: Mac OS X +Operating system name, without the version. +-- -*`host.geo.location`*:: +*`host.os.platform`*:: + -- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } +type: keyword -Longitude and latitude. +example: darwin +Operating system platform (such centos, ubuntu, windows). -- -*`host.geo.continent_name`*:: +*`host.os.version`*:: + -- type: keyword -example: North America - -Name of the continent. +example: 10.14.1 +Operating system version as a raw string. -- -*`host.geo.country_name`*:: +*`host.type`*:: + -- type: keyword -example: Canada +Type of host. +For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. -Country name. +-- + +*`host.user.email`*:: ++ +-- +type: keyword +User email address. -- -*`host.geo.region_name`*:: +*`host.user.full_name`*:: + -- type: keyword -example: Quebec - -Region name. +example: Albert Einstein +User's full name, if available. -- -*`host.geo.city_name`*:: +*`host.user.group.id`*:: + -- type: keyword -example: Montreal +Unique identifier for the group on the system/platform. -City name. +-- + +*`host.user.group.name`*:: ++ +-- +type: keyword +Name of the group. -- -*`host.geo.country_iso_code`*:: +*`host.user.hash`*:: + -- type: keyword -example: CA - -Country ISO code. - +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -- -*`host.geo.region_iso_code`*:: +*`host.user.id`*:: + -- type: keyword -example: CA-QC - -Region ISO code. - +One or multiple unique identifiers of the user. -- -*`host.geo.name`*:: +*`host.user.name`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +example: albert +Short name or login of the user. -- [float] == http fields -Fields related to HTTP activity. - +Fields related to HTTP activity. Use the `url` field set to store the url of the request. -*`http.request.method`*:: +*`http.request.body.bytes`*:: + -- -type: keyword - -example: get, post, put +type: long -Http request method. -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: 887 +Size in bytes of the request body. -- @@ -1630,84 +1798,63 @@ type: keyword example: Hello world -The full http request body. - - --- - -*`http.request.referrer`*:: -+ --- -type: keyword - -example: https://blog.example.com/ - -Referrer for this HTTP request. - +The full HTTP request body. -- -*`http.response.status_code`*:: +*`http.request.bytes`*:: + -- type: long -example: 404 - -Http response status code. +example: 1437 +Total size in bytes of the request (body and headers). -- -*`http.response.body.content`*:: +*`http.request.method`*:: + -- type: keyword -example: Hello world - -The full http response body. +example: get, post, put +HTTP request method. +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`http.version`*:: +*`http.request.referrer`*:: + -- type: keyword -example: 1.1 - -Http version. +example: https://blog.example.com/ +Referrer for this HTTP request. -- -*`http.request.bytes`*:: +*`http.response.body.bytes`*:: + -- type: long -example: 1437 - -format: bytes - -Total size in bytes of the request (body and headers). +example: 887 +Size in bytes of the response body. -- -*`http.request.body.bytes`*:: +*`http.response.body.content`*:: + -- -type: long - -example: 887 - -format: bytes +type: keyword -Size in bytes of the request body. +example: Hello world +The full HTTP response body. -- @@ -1718,24 +1865,29 @@ type: long example: 1437 -format: bytes - Total size in bytes of the response (body and headers). - -- -*`http.response.body.bytes`*:: +*`http.response.status_code`*:: + -- type: long -example: 887 +example: 404 -format: bytes +HTTP response status code. -Size in bytes of the response body. +-- + +*`http.version`*:: ++ +-- +type: keyword + +example: 1.1 +HTTP version. -- @@ -1745,17 +1897,15 @@ Size in bytes of the response body. Fields which are specific to log events. - *`log.level`*:: + -- type: keyword -example: ERR - -Log level of the log event. -Some examples are `WARN`, `ERR`, `INFO`. +example: err +Original log level of the log event. +Some examples are `warn`, `error`, `i`. -- @@ -1766,96 +1916,52 @@ type: keyword example: Sep 19 08:26:10 localhost My log - This is the original log message and contains the full log message before splitting it up in multiple parts. In contrast to the `message` field which can contain an extracted part of the log message, this field contains the original, full log message. It can have already some modifications applied like encoding or new lines removed to clean up the log message. This field is not indexed and doc_values are disabled so it can't be queried but the value can be retrieved from `_source`. - -Field is not indexed. - -- [float] == network fields -The network is defined as the communication path over which a host or network event happens. The network.* fields should be populated with details about the network activity associated with an event. - - - -*`network.name`*:: -+ --- -type: keyword - -example: Guest Wifi - -Name given by operators to sections of their network. - - --- - -*`network.type`*:: -+ --- -type: keyword - -example: ipv4 - -In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. - - --- - -*`network.iana_number`*:: -+ --- -type: keyword - -example: 6 - -IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). Standardized list of protocols. This aligns well with NetFlow and sFlow related logs which use the IANA Protocol Number. - +The network is defined as the communication path over which a host or network event happens. +The network.* fields should be populated with details about the network activity associated with an event. --- -*`network.transport`*:: +*`network.application`*:: + -- type: keyword -example: tcp - -Same as network.iana_number, but instead using the Keyword name of the transport layer (udp, tcp, ipv6-icmp, etc.) -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: aim +A name given to an application level protocol. This can be arbitrarily assigned for things like microservices, but also apply to things like skype, icq, facebook, twitter. This would be used in situations where the vendor or service can be decoded such as from the source/dest IP owners, ports, or wire format. +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`network.application`*:: +*`network.bytes`*:: + -- -type: keyword - -example: aim +type: long -A name given to an application. This can be arbitrarily assigned for things like microservices, but also apply to things like skype, icq, facebook, twitter. This would be used in situations where the vendor or service can be decoded such as from the source/dest IP owners, ports, or wire format. -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: 368 +Total bytes transferred in both directions. +If `source.bytes` and `destination.bytes` are known, `network.bytes` is their sum. -- -*`network.protocol`*:: +*`network.community_id`*:: + -- type: keyword -example: http - -L7 Network protocol name. ex. http, lumberjack, transport protocol. -The field value must be normalized to lowercase for querying. See "Lowercase Capitalization" in the "Implementing ECS" section. +example: 1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0= +A hash of source and destination IPs and ports, as well as the protocol used in a communication. This is a tool-agnostic standard to identify flows. +Learn more at https://github.com/corelight/community-id-spec. -- @@ -1877,7 +1983,6 @@ Recommended values are: When mapping events from a host-based monitoring context, populate this field from the host's point of view. When mapping events from a network or perimeter-based monitoring context, populate this field from the point of view of your network perimeter. - -- *`network.forwarded_ip`*:: @@ -1889,34 +1994,27 @@ example: 192.1.1.2 Host IP address when the source IP address is the proxy. - -- -*`network.community_id`*:: +*`network.iana_number`*:: + -- type: keyword -example: 1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0= - -A hash of source and destination IPs and ports, as well as the protocol used in a communication. This is a tool-agnostic standard to identify flows. -Learn more at https://github.com/corelight/community-id-spec. +example: 6 +IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). Standardized list of protocols. This aligns well with NetFlow and sFlow related logs which use the IANA Protocol Number. -- -*`network.bytes`*:: +*`network.name`*:: + -- -type: long - -example: 368 - -format: bytes +type: keyword -Total bytes transferred in both directions. -If `source.bytes` and `destination.bytes` are known, `network.bytes` is their sum. +example: Guest Wifi +Name given by operators to sections of their network. -- @@ -1930,129 +2028,165 @@ example: 24 Total packets transferred in both directions. If `source.packets` and `destination.packets` are known, `network.packets` is their sum. - -- -[float] -== observer fields +*`network.protocol`*:: ++ +-- +type: keyword -An observer is defined as a special network, security, or application device used to detect, observe, or create network, security, or application-related events and metrics. This could be a custom hardware appliance or a server that has been configured to run special network, security, or application software. Examples include firewalls, intrusion detection/prevention systems, network monitoring sensors, web application firewalls, data loss prevention systems, and APM servers. The observer.* fields shall be populated with details of the system, if any, that detects, observes and/or creates a network, security, or application event or metric. Message queues and ETL components used in processing events or metrics are not considered observers in ECS. +example: http +L7 Network protocol name. ex. http, lumberjack, transport protocol. +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". +-- -*`observer.mac`*:: +*`network.transport`*:: + -- type: keyword -MAC address of the observer +example: tcp +Same as network.iana_number, but instead using the Keyword name of the transport layer (udp, tcp, ipv6-icmp, etc.) +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`observer.ip`*:: +*`network.type`*:: + -- -type: ip +type: keyword -IP address of the observer. +example: ipv4 +In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc +The field value must be normalized to lowercase for querying. See the documentation section "Implementing ECS". -- -*`observer.hostname`*:: +[float] +== observer fields + +An observer is defined as a special network, security, or application device used to detect, observe, or create network, security, or application-related events and metrics. +This could be a custom hardware appliance or a server that has been configured to run special network, security, or application software. Examples include firewalls, intrusion detection/prevention systems, network monitoring sensors, web application firewalls, data loss prevention systems, and APM servers. The observer.* fields shall be populated with details of the system, if any, that detects, observes and/or creates a network, security, or application event or metric. Message queues and ETL components used in processing events or metrics are not considered observers in ECS. + + +*`observer.geo.city_name`*:: + -- type: keyword -Hostname of the observer. +example: Montreal +City name. -- -*`observer.vendor`*:: +*`observer.geo.continent_name`*:: + -- type: keyword -observer vendor information. +example: North America +Name of the continent. -- -*`observer.version`*:: +*`observer.geo.country_iso_code`*:: + -- type: keyword -Observer version. +example: CA +Country ISO code. -- -*`observer.serial_number`*:: +*`observer.geo.country_name`*:: + -- type: keyword -Observer serial number. +example: Canada +Country name. -- -*`observer.type`*:: +*`observer.geo.location`*:: + -- -type: keyword +type: geo_point -example: firewall +example: { "lon": -73.614830, "lat": 45.505918 } -The type of the observer the data is coming from. -There is no predefined list of observer types. Some examples are `forwarder`, `firewall`, `ids`, `ips`, `proxy`, `poller`, `sensor`, `APM server`. +Longitude and latitude. +-- +*`observer.geo.name`*:: ++ -- +type: keyword -[float] -== os fields +example: boston-dc -The OS fields contain information about the operating system. +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. + +-- + +*`observer.geo.region_iso_code`*:: ++ +-- +type: keyword +example: CA-QC + +Region ISO code. +-- -*`observer.os.platform`*:: +*`observer.geo.region_name`*:: + -- type: keyword -example: darwin - -Operating system platform (such centos, ubuntu, windows). +example: Quebec +Region name. -- -*`observer.os.name`*:: +*`observer.hostname`*:: + -- type: keyword -example: Mac OS X +Hostname of the observer. -Operating system name, without the version. +-- + +*`observer.ip`*:: ++ +-- +type: ip +IP address of the observer. -- -*`observer.os.full`*:: +*`observer.mac`*:: + -- type: keyword -example: Mac OS Mojave - -Operating system name, including the version or code name. - +MAC address of the observer -- @@ -2065,18 +2199,16 @@ example: debian OS family (such as redhat, debian, freebsd, windows). - -- -*`observer.os.version`*:: +*`observer.os.full`*:: + -- type: keyword -example: 10.14.1 - -Operating system version as a raw string. +example: Mac OS Mojave +Operating system name, including the version or code name. -- @@ -2089,138 +2221,102 @@ example: 4.4.0-112-generic Operating system kernel version as a raw string. - --- - -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - -*`observer.geo.location`*:: -+ --- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } - -Longitude and latitude. - - -- -*`observer.geo.continent_name`*:: +*`observer.os.name`*:: + -- type: keyword -example: North America - -Name of the continent. +example: Mac OS X +Operating system name, without the version. -- -*`observer.geo.country_name`*:: +*`observer.os.platform`*:: + -- type: keyword -example: Canada - -Country name. +example: darwin +Operating system platform (such centos, ubuntu, windows). -- -*`observer.geo.region_name`*:: +*`observer.os.version`*:: + -- type: keyword -example: Quebec - -Region name. +example: 10.14.1 +Operating system version as a raw string. -- -*`observer.geo.city_name`*:: +*`observer.serial_number`*:: + -- type: keyword -example: Montreal - -City name. - +Observer serial number. -- -*`observer.geo.country_iso_code`*:: +*`observer.type`*:: + -- type: keyword -example: CA - -Country ISO code. +example: firewall +The type of the observer the data is coming from. +There is no predefined list of observer types. Some examples are `forwarder`, `firewall`, `ids`, `ips`, `proxy`, `poller`, `sensor`, `APM server`. -- -*`observer.geo.region_iso_code`*:: +*`observer.vendor`*:: + -- type: keyword -example: CA-QC - -Region ISO code. - +observer vendor information. -- -*`observer.geo.name`*:: +*`observer.version`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. - +Observer version. -- [float] == organization fields -The organization fields enrich data with information about the company or entity the data is associated with. These fields help you arrange or filter data stored in an index by one or multiple organizations. - +The organization fields enrich data with information about the company or entity the data is associated with. +These fields help you arrange or filter data stored in an index by one or multiple organizations. -*`organization.name`*:: +*`organization.id`*:: + -- type: keyword -Organization name. - +Unique identifier for the organization. -- -*`organization.id`*:: +*`organization.name`*:: + -- type: keyword -Unique identifier for the organization. - +Organization name. -- @@ -2230,93 +2326,99 @@ Unique identifier for the organization. The OS fields contain information about the operating system. - -*`os.platform`*:: +*`os.family`*:: + -- type: keyword -example: darwin - -Operating system platform (such centos, ubuntu, windows). +example: debian +OS family (such as redhat, debian, freebsd, windows). -- -*`os.name`*:: +*`os.full`*:: + -- type: keyword -example: Mac OS X - -Operating system name, without the version. +example: Mac OS Mojave +Operating system name, including the version or code name. -- -*`os.full`*:: +*`os.kernel`*:: + -- type: keyword -example: Mac OS Mojave - -Operating system name, including the version or code name. +example: 4.4.0-112-generic +Operating system kernel version as a raw string. -- -*`os.family`*:: +*`os.name`*:: + -- type: keyword -example: debian - -OS family (such as redhat, debian, freebsd, windows). +example: Mac OS X +Operating system name, without the version. -- -*`os.version`*:: +*`os.platform`*:: + -- type: keyword -example: 10.14.1 - -Operating system version as a raw string. +example: darwin +Operating system platform (such centos, ubuntu, windows). -- -*`os.kernel`*:: +*`os.version`*:: + -- type: keyword -example: 4.4.0-112-generic - -Operating system kernel version as a raw string. +example: 10.14.1 +Operating system version as a raw string. -- [float] == process fields -These fields contain information about a process. These fields can help you correlate metrics information with a process id/name from a log message. The `process.pid` often stays in the metric itself and is copied to the global field for correlation. +These fields contain information about a process. +These fields can help you correlate metrics information with a process id/name from a log message. The `process.pid` often stays in the metric itself and is copied to the global field for correlation. + +*`process.args`*:: ++ +-- +type: keyword +example: ['ssh', '-l', 'user', '10.0.0.16'] -*`process.pid`*:: +Array of process arguments. +May be filtered to protect sensitive information. + +-- + +*`process.executable`*:: + -- -type: long +type: keyword -Process id. +example: /usr/bin/ssh +Absolute path to the process executable. -- @@ -2330,6 +2432,14 @@ example: ssh Process name. Sometimes called program name or similar. +-- + +*`process.pid`*:: ++ +-- +type: long + +Process id. -- @@ -2340,31 +2450,27 @@ type: long Process parent id. - -- -*`process.args`*:: +*`process.start`*:: + -- -type: keyword - -example: ['ssh', '-l', 'user', '10.0.0.16'] +type: date -Process arguments. -May be filtered to protect sensitive information. +example: 2016-05-23T08:05:34.853Z +The time the process started. -- -*`process.executable`*:: +*`process.thread.id`*:: + -- -type: keyword - -example: /usr/bin/ssh +type: long -Absolute path to the process executable. +example: 4242 +Thread ID. -- @@ -2376,133 +2482,180 @@ type: keyword Process title. The proctitle, some times the same as process name. Can also be different: for example a browser setting its title to the web page currently opened. - -- -*`process.thread.id`*:: +*`process.working_directory`*:: + -- -type: long +type: keyword -example: 4242 +example: /home/alice -Thread ID. +The working directory of the process. + +-- + +[float] +== related fields + +This field set is meant to facilitate pivoting around a piece of data. +Some pieces of information can be seen in many places in an ECS event. To facilitate searching for them, store an array of all seen values to their corresponding field in `related.`. +A concrete example is IP addresses, which can be under host, observer, source, destination, client, server, and network.forwarded_ip. If you append all IPs to `related.ip`, you can then search for a given IP trivially, no matter where it appeared, by querying `related.ip:a.b.c.d`. +*`related.ip`*:: ++ -- +type: ip -*`process.start`*:: +All of the IPs seen on your event. + +-- + +[float] +== server fields + +A Server is defined as the responder in a network connection for events regarding sessions, connections, or bidirectional flow records. +For TCP events, the server is the receiver of the initial SYN packet(s) of the TCP connection. For other protocols, the server is generally the responder in the network transaction. Some systems actually use the term "responder" to refer the server in TCP connections. The server fields describe details about the system acting as the server in the network event. Server fields are usually populated in conjunction with client fields. Server fields are generally not populated for packet-level events. +Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. + + +*`server.address`*:: + -- -type: date +type: keyword -example: 2016-05-23T08:05:34.853Z +Some event server addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. -The time the process started. +-- +*`server.bytes`*:: ++ +-- +type: long + +example: 184 + +Bytes sent from the server to the client. -- -*`process.working_directory`*:: +*`server.domain`*:: + -- type: keyword -example: /home/alice - -The working directory of the process. +Server domain. +-- +*`server.geo.city_name`*:: ++ -- +type: keyword -[float] -== related fields - -This field set is meant to facilitate pivoting around a piece of data. Some pieces of information can be seen in many places in ECS. To facilitate searching for them, append values to their corresponding field in `related.`. A concrete example is IP addresses, which can be under host, observer, source, destination, client, server, and network.forwarded_ip. If you append all IPs to `related.ip`, you can then search for a given IP trivially, no matter where it appeared, by querying `related.ip:a.b.c.d`. +example: Montreal +City name. +-- -*`related.ip`*:: +*`server.geo.continent_name`*:: + -- -type: ip +type: keyword -All of the IPs seen on your event. +example: North America +Name of the continent. -- -[float] -== server fields +*`server.geo.country_iso_code`*:: ++ +-- +type: keyword -A Server is defined as the responder in a network connection for events regarding sessions, connections, or bidirectional flow records. For TCP events, the server is the receiver of the initial SYN packet(s) of the TCP connection. For other protocols, the server is generally the responder in the network transaction. Some systems actually use the term "responder" to refer the server in TCP connections. The server fields describe details about the system acting as the server in the network event. Server fields are usually populated in conjunction with client fields. Server fields are generally not populated for packet-level events. -Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. +example: CA +Country ISO code. +-- -*`server.address`*:: +*`server.geo.country_name`*:: + -- type: keyword -Some event server addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. -Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. +example: Canada +Country name. -- -*`server.ip`*:: +*`server.geo.location`*:: + -- -type: ip +type: geo_point -IP address of the server. -Can be one or multiple IPv4 or IPv6 addresses. +example: { "lon": -73.614830, "lat": 45.505918 } +Longitude and latitude. -- -*`server.port`*:: +*`server.geo.name`*:: + -- -type: long +type: keyword -Port of the server. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`server.mac`*:: +*`server.geo.region_iso_code`*:: + -- type: keyword -MAC address of the server. +example: CA-QC +Region ISO code. -- -*`server.domain`*:: +*`server.geo.region_name`*:: + -- type: keyword -Server domain. +example: Quebec +Region name. -- -*`server.bytes`*:: +*`server.ip`*:: + -- -type: long +type: ip -example: 184 +IP address of the server. +Can be one or multiple IPv4 or IPv6 addresses. -format: bytes +-- -Bytes sent from the server to the client. +*`server.mac`*:: ++ +-- +type: keyword +MAC address of the server. -- @@ -2515,120 +2668,103 @@ example: 12 Packets sent from the server to the client. - -- -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - -*`server.geo.location`*:: +*`server.port`*:: + -- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } - -Longitude and latitude. +type: long +Port of the server. -- -*`server.geo.continent_name`*:: +*`server.user.email`*:: + -- type: keyword -example: North America - -Name of the continent. - +User email address. -- -*`server.geo.country_name`*:: +*`server.user.full_name`*:: + -- type: keyword -example: Canada - -Country name. +example: Albert Einstein +User's full name, if available. -- -*`server.geo.region_name`*:: +*`server.user.group.id`*:: + -- type: keyword -example: Quebec - -Region name. - +Unique identifier for the group on the system/platform. -- -*`server.geo.city_name`*:: +*`server.user.group.name`*:: + -- type: keyword -example: Montreal - -City name. - +Name of the group. -- -*`server.geo.country_iso_code`*:: +*`server.user.hash`*:: + -- type: keyword -example: CA - -Country ISO code. - +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -- -*`server.geo.region_iso_code`*:: +*`server.user.id`*:: + -- type: keyword -example: CA-QC - -Region ISO code. - +One or multiple unique identifiers of the user. -- -*`server.geo.name`*:: +*`server.user.name`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +example: albert +Short name or login of the user. -- [float] == service fields -The service fields describe the service for or from which the data was collected. These fields help you find and correlate logs for a specific service and version. +The service fields describe the service for or from which the data was collected. +These fields help you find and correlate logs for a specific service and version. + + +*`service.ephemeral_id`*:: ++ +-- +type: keyword + +example: 8a4f500f +Ephemeral identifier of this service (if one exists). +This id normally changes across restarts, but `service.id` does not. +-- *`service.id`*:: + @@ -2641,7 +2777,6 @@ Unique identifier of the running service. This id should uniquely identify this service. This makes it possible to correlate logs and metrics for one specific service. Example: If you are experiencing issues with one redis instance, you can filter on that id to see metrics and logs for that single instance. - -- *`service.name`*:: @@ -2656,6 +2791,14 @@ The name of the service is normally user given. This allows if two instances of Also it allows for distributed services that run on multiple hosts to correlate the related instances based on the name. In the case of Elasticsearch the service.name could contain the cluster name. For Beats the service.name is by default a copy of the `service.type` field if no name is specified. +-- + +*`service.state`*:: ++ +-- +type: keyword + +Current state of the service. -- @@ -2670,115 +2813,163 @@ The type of the service data is collected from. The type can be used to group and correlate logs and metrics from one service type. Example: If logs or metrics are collected from Elasticsearch, `service.type` would be `elasticsearch`. - -- -*`service.state`*:: +*`service.version`*:: + -- type: keyword -Current state of the service. +example: 3.2.4 +Version of the service the data was collected from. +This allows to look at a data set only for a specific version of a service. -- -*`service.version`*:: +[float] +== source fields + +Source fields describe details about the source of a packet/event. +Source fields are usually populated in conjunction with destination fields. + + +*`source.address`*:: + -- type: keyword -example: 3.2.4 +Some event source addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. -Version of the service the data was collected from. -This allows to look at a data set only for a specific version of a service. +-- + +*`source.bytes`*:: ++ +-- +type: long + +example: 184 +Bytes sent from the source to the destination. -- -*`service.ephemeral_id`*:: +*`source.domain`*:: + -- type: keyword -example: 8a4f500f +Source domain. -Ephemeral identifier of this service (if one exists). -This id normally changes across restarts, but `service.id` does not. +-- + +*`source.geo.city_name`*:: ++ +-- +type: keyword + +example: Montreal +City name. -- -[float] -== source fields +*`source.geo.continent_name`*:: ++ +-- +type: keyword -Source fields describe details about the source of a packet/event. Source fields are usually populated in conjunction with destination fields. +example: North America +Name of the continent. +-- -*`source.address`*:: +*`source.geo.country_iso_code`*:: + -- type: keyword -Some event source addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. -Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. +example: CA +Country ISO code. -- -*`source.ip`*:: +*`source.geo.country_name`*:: + -- -type: ip +type: keyword -IP address of the source. -Can be one or multiple IPv4 or IPv6 addresses. +example: Canada +Country name. -- -*`source.port`*:: +*`source.geo.location`*:: + -- -type: long +type: geo_point -Port of the source. +example: { "lon": -73.614830, "lat": 45.505918 } +Longitude and latitude. -- -*`source.mac`*:: +*`source.geo.name`*:: + -- type: keyword -MAC address of the source. +example: boston-dc +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. -- -*`source.domain`*:: +*`source.geo.region_iso_code`*:: + -- type: keyword -Source domain. +example: CA-QC +Region ISO code. -- -*`source.bytes`*:: +*`source.geo.region_name`*:: + -- -type: long +type: keyword -example: 184 +example: Quebec + +Region name. + +-- + +*`source.ip`*:: ++ +-- +type: ip + +IP address of the source. +Can be one or multiple IPv4 or IPv6 addresses. -format: bytes +-- -Bytes sent from the source to the destination. +*`source.mac`*:: ++ +-- +type: keyword +MAC address of the source. -- @@ -2791,133 +2982,110 @@ example: 12 Packets sent from the source to the destination. - -- -[float] -== geo fields - -Geo fields can carry data about a specific location related to an event or geo information derived from an IP field. - - - -*`source.geo.location`*:: +*`source.port`*:: + -- -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } - -Longitude and latitude. +type: long +Port of the source. -- -*`source.geo.continent_name`*:: +*`source.user.email`*:: + -- type: keyword -example: North America - -Name of the continent. - +User email address. -- -*`source.geo.country_name`*:: +*`source.user.full_name`*:: + -- type: keyword -example: Canada - -Country name. +example: Albert Einstein +User's full name, if available. -- -*`source.geo.region_name`*:: +*`source.user.group.id`*:: + -- type: keyword -example: Quebec - -Region name. - +Unique identifier for the group on the system/platform. -- -*`source.geo.city_name`*:: +*`source.user.group.name`*:: + -- type: keyword -example: Montreal - -City name. - +Name of the group. -- -*`source.geo.country_iso_code`*:: +*`source.user.hash`*:: + -- type: keyword -example: CA - -Country ISO code. - +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -- -*`source.geo.region_iso_code`*:: +*`source.user.id`*:: + -- type: keyword -example: CA-QC - -Region ISO code. - +One or multiple unique identifiers of the user. -- -*`source.geo.name`*:: +*`source.user.name`*:: + -- type: keyword -example: boston-dc - -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +example: albert +Short name or login of the user. -- [float] == url fields -URL fields provide a complete URL, with scheme, host, and path. +URL fields provide support for complete or partial URLs, and supports the breaking down into scheme, domain, path, and so on. - -*`url.original`*:: +*`url.domain`*:: + -- type: keyword -example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch +example: www.elastic.co +Domain of the url, such as "www.elastic.co". +In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. -Unmodified original url as seen in the event source. -Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. -This field is meant to represent the URL as it was observed, complete or not. +-- + +*`url.fragment`*:: ++ +-- +type: keyword +Portion of the url after the `#`, such as "top". +The `#` is not part of the fragment. -- @@ -2930,54 +3098,47 @@ example: https://www.elastic.co:443/search?q=elasticsearch#top If full URLs are important to your use case, they should be stored in `url.full`, whether this field is reconstructed or present in the event source. - -- -*`url.scheme`*:: +*`url.original`*:: + -- type: keyword -example: https - -Scheme of the request, such as "https". -Note: The `:` is not part of the scheme. +example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch +Unmodified original url as seen in the event source. +Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. +This field is meant to represent the URL as it was observed, complete or not. -- -*`url.domain`*:: +*`url.password`*:: + -- type: keyword -example: www.elastic.co - -Domain of the request, such as "www.elastic.co". -In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. - +Password of the request. -- -*`url.port`*:: +*`url.path`*:: + -- -type: integer - -example: 443 - -Port of the request, such as 443. +type: keyword +Path of the request, such as "/search". -- -*`url.path`*:: +*`url.port`*:: + -- -type: keyword +type: long -Path of the request, such as "/search". +example: 443 +Port of the request, such as 443. -- @@ -2989,17 +3150,17 @@ type: keyword The query field describes the query string of the request, such as "q=elasticsearch". The `?` is excluded from the query string. If a URL contains no `?`, there is no query field. If there is a `?` but no query, the query field exists with an empty string. The `exists` query can be used to differentiate between the two cases. - -- -*`url.fragment`*:: +*`url.scheme`*:: + -- type: keyword -Portion of the url after the `#`, such as "top". -The `#` is not part of the fragment. +example: https +Scheme of the request, such as "https". +Note: The `:` is not part of the scheme. -- @@ -3010,67 +3171,50 @@ type: keyword Username of the request. - --- - -*`url.password`*:: -+ --- -type: keyword - -Password of the request. - - -- [float] == user fields -The user fields describe information about the user that is relevant to the event. Fields can have one entry or multiple entries. If a user has more than one id, provide an array that includes all of them. - +The user fields describe information about the user that is relevant to the event. +Fields can have one entry or multiple entries. If a user has more than one id, provide an array that includes all of them. -*`user.id`*:: +*`user.email`*:: + -- type: keyword -One or multiple unique identifiers of the user. - +User email address. -- -*`user.name`*:: +*`user.full_name`*:: + -- type: keyword -example: albert - -Short name or login of the user. +example: Albert Einstein +User's full name, if available. -- -*`user.full_name`*:: +*`user.group.id`*:: + -- type: keyword -example: Albert Einstein - -User's full name, if available. - +Unique identifier for the group on the system/platform. -- -*`user.email`*:: +*`user.group.name`*:: + -- type: keyword -User email address. - +Name of the group. -- @@ -3082,52 +3226,43 @@ type: keyword Unique user hash to correlate information for a user in anonymized form. Useful if `user.id` or `user.name` contain confidential information and cannot be used. - -- -[float] -== group fields - -The group fields are meant to represent groups that are relevant to the event. - - - -*`user.group.id`*:: +*`user.id`*:: + -- type: keyword -Unique identifier for the group on the system/platform. - +One or multiple unique identifiers of the user. -- -*`user.group.name`*:: +*`user.name`*:: + -- type: keyword -Name of the group. +example: albert +Short name or login of the user. -- [float] == user_agent fields -The user_agent fields normally come from a browser request. They often show up in web service logs coming from the parsed user agent string. +The user_agent fields normally come from a browser request. +They often show up in web service logs coming from the parsed user agent string. - -*`user_agent.original`*:: +*`user_agent.device.name`*:: + -- type: keyword -example: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1 - -Unparsed version of the user_agent. +example: iPhone +Name of the device. -- @@ -3140,85 +3275,71 @@ example: Safari Name of the user agent. - -- -*`user_agent.version`*:: +*`user_agent.original`*:: + -- type: keyword -example: 12.0 - -Version of the user agent. +example: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1 +Unparsed version of the user_agent. -- -*`user_agent.device.name`*:: +*`user_agent.os.family`*:: + -- type: keyword -example: iPhone - -Name of the device. +example: debian +OS family (such as redhat, debian, freebsd, windows). -- -[float] -== os fields - -The OS fields contain information about the operating system. - - - -*`user_agent.os.platform`*:: +*`user_agent.os.full`*:: + -- type: keyword -example: darwin - -Operating system platform (such centos, ubuntu, windows). +example: Mac OS Mojave +Operating system name, including the version or code name. -- -*`user_agent.os.name`*:: +*`user_agent.os.kernel`*:: + -- type: keyword -example: Mac OS X - -Operating system name, without the version. +example: 4.4.0-112-generic +Operating system kernel version as a raw string. -- -*`user_agent.os.full`*:: +*`user_agent.os.name`*:: + -- type: keyword -example: Mac OS Mojave - -Operating system name, including the version or code name. +example: Mac OS X +Operating system name, without the version. -- -*`user_agent.os.family`*:: +*`user_agent.os.platform`*:: + -- type: keyword -example: debian - -OS family (such as redhat, debian, freebsd, windows). +example: darwin +Operating system platform (such centos, ubuntu, windows). -- @@ -3231,28 +3352,16 @@ example: 10.14.1 Operating system version as a raw string. - --- - -*`user_agent.os.kernel`*:: -+ --- -type: keyword - -example: 4.4.0-112-generic - -Operating system kernel version as a raw string. - - -- -*`agent.hostname`*:: +*`user_agent.version`*:: + -- type: keyword -Hostname of the agent. +example: 12.0 +Version of the user agent. -- diff --git a/x-pack/functionbeat/include/fields.go b/x-pack/functionbeat/include/fields.go index 76a7dc0ee851..336f503e099a 100644 --- a/x-pack/functionbeat/include/fields.go +++ b/x-pack/functionbeat/include/fields.go @@ -19,5 +19,5 @@ func init() { // AssetFieldsYml returns asset data. // This is the base64 encoded gzipped contents of fields.yml. func AssetFieldsYml() string { - return "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" + return "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" }