diff --git a/Makefile b/Makefile index 5aaeebcebd..23277ad673 100644 --- a/Makefile +++ b/Makefile @@ -8,6 +8,7 @@ PYTHON := build/ve/bin/python SUBSETS_DIR := schemas/subsets/ EXP_SUBSETS_DIR := experimental/schemas/subsets/ VERSION := $(shell cat version) +SEMCONV_VERSION := $(shell cat otel-semconv-version) # # Targets (sorted alphabetically) @@ -66,7 +67,7 @@ generate: generator # Run the new generator .PHONY: generator generator: ve - $(PYTHON) scripts/generator.py --strict --include "${INCLUDE}" --subset "${SUBSETS_DIR}" --force-docs + $(PYTHON) scripts/generator.py --strict --include "${INCLUDE}" --subset "${SUBSETS_DIR}" --semconv-version "${SEMCONV_VERSION}" --force-docs # Check Makefile format. .PHONY: makelint diff --git a/docs/fields/field-details.asciidoc b/docs/fields/field-details.asciidoc index 6d5ba6a780..7b63dce7fb 100644 --- a/docs/fields/field-details.asciidoc +++ b/docs/fields/field-details.asciidoc @@ -327,6 +327,8 @@ type: keyword +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/client/#client-address[client.address] + | extended // =============================================================== @@ -463,6 +465,8 @@ type: long +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/client/#client-port[client.port] + | core // =============================================================== @@ -591,6 +595,8 @@ type: keyword example: `666777888999` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/cloud/#cloud-account-id[cloud.account.id] + | extended // =============================================================== @@ -625,6 +631,8 @@ type: keyword example: `us-east-1c` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/cloud/#cloud-availability-zone[cloud.availability_zone] + | extended // =============================================================== @@ -725,6 +733,8 @@ type: keyword example: `aws` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/cloud/#cloud-provider[cloud.provider] + | extended // =============================================================== @@ -741,6 +751,8 @@ type: keyword example: `us-east-1` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/cloud/#cloud-region[cloud.region] + | extended // =============================================================== @@ -759,6 +771,8 @@ type: keyword example: `lambda` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] https://opentelemetry.io/docs/specs/semconv/attributes-registry/cloud/#cloud-platform[cloud.platform] + | extended // =============================================================== @@ -1049,6 +1063,8 @@ type: scaled_float +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/metric-cb00cb?style=flat[relation,title=metric] https://github.com/search?q=repo%3Aopen-telemetry%2Fsemantic-conventions+%22%3C%21--\+semconv+metric.container.cpu.usage+--%3E%22&type=code[container.cpu.usage] + | extended // =============================================================== @@ -1097,6 +1113,8 @@ type: keyword +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/container/#container-id[container.id] + | core // =============================================================== @@ -1116,6 +1134,8 @@ Note: this field should contain an array of values. example: `[sha256:f8fefc80e3273dc756f288a63945820d6476ad64883892c771b5e2ece6bf1b26]` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] https://opentelemetry.io/docs/specs/semconv/attributes-registry/container/#container-image-repo-digests[container.image.repo_digests] + | extended // =============================================================== @@ -1132,6 +1152,8 @@ type: keyword +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/container/#container-image-name[container.image.name] + | extended // =============================================================== @@ -1151,6 +1173,8 @@ Note: this field should contain an array of values. +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] https://opentelemetry.io/docs/specs/semconv/attributes-registry/container/#container-image-tags[container.image.tags] + | extended // =============================================================== @@ -1167,6 +1191,8 @@ type: object +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/related-f2f4fb?style=flat[relation,title=related] https://opentelemetry.io/docs/specs/semconv/attributes-registry/container/#container-label[container.label] + | extended // =============================================================== @@ -1183,6 +1209,8 @@ type: scaled_float +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/metric-cb00cb?style=flat[relation,title=metric] https://github.com/search?q=repo%3Aopen-telemetry%2Fsemantic-conventions+%22%3C%21--\+semconv+metric.container.memory.usage+--%3E%22&type=code[container.memory.usage] + | extended // =============================================================== @@ -1199,6 +1227,8 @@ type: keyword +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/container/#container-name[container.name] + | extended // =============================================================== @@ -1247,6 +1277,8 @@ type: keyword example: `docker` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/container/#container-runtime[container.runtime] + | extended // =============================================================== @@ -1389,6 +1421,8 @@ type: keyword +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/destination/#destination-address[destination.address] + | extended // =============================================================== @@ -1525,6 +1559,8 @@ type: long +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/destination/#destination-port[destination.port] + | core // =============================================================== @@ -1659,6 +1695,8 @@ type: keyword example: `00000000-54b3-e7c7-0000-000046bffd97` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/device/#device-id[device.id] + | extended // =============================================================== @@ -1675,6 +1713,8 @@ type: keyword example: `Samsung` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/device/#device-manufacturer[device.manufacturer] + | extended // =============================================================== @@ -1691,6 +1731,8 @@ type: keyword example: `SM-G920F` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/device/#device-model-identifier[device.model.identifier] + | extended // =============================================================== @@ -1707,6 +1749,8 @@ type: keyword example: `Samsung Galaxy S6` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/device/#device-model-name[device.model.name] + | extended // =============================================================== @@ -2044,6 +2088,8 @@ type: keyword example: `www.example.com` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/dns/#dns-question-name[dns.question.name] + | extended // =============================================================== @@ -3312,6 +3358,8 @@ type: match_only_text +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] https://opentelemetry.io/docs/specs/semconv/attributes-registry/exception/#exception-message[exception.message] + | core // =============================================================== @@ -3334,6 +3382,8 @@ Multi-fields: +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] https://opentelemetry.io/docs/specs/semconv/attributes-registry/exception/#exception-stacktrace[exception.stacktrace] + | extended // =============================================================== @@ -3350,6 +3400,8 @@ type: keyword example: `java.lang.NullPointerException` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/error/#error-type[error.type] + | extended // =============================================================== @@ -3930,6 +3982,8 @@ type: boolean +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/faas/#faas-coldstart[faas.coldstart] + | extended // =============================================================== @@ -3946,6 +4000,8 @@ type: keyword example: `af9d5aa4-a685-4c5f-a22b-444f80b3cc28` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] https://opentelemetry.io/docs/specs/semconv/attributes-registry/faas/#faas-invocation-id[faas.invocation_id] + | extended // =============================================================== @@ -3980,6 +4036,8 @@ type: keyword example: `my-function` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/faas/#faas-name[faas.name] + | extended // =============================================================== @@ -4020,6 +4078,8 @@ type: keyword example: `http` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] https://opentelemetry.io/docs/specs/semconv/attributes-registry/faas/#faas-trigger[faas.trigger] + | extended // =============================================================== @@ -4036,6 +4096,8 @@ type: keyword example: `123` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/faas/#faas-version[faas.version] + | extended // =============================================================== @@ -4073,6 +4135,8 @@ type: date +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-accessed[file.accessed] + | extended // =============================================================== @@ -4094,6 +4158,8 @@ Note: this field should contain an array of values. example: `["readonly", "system"]` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-attributes[file.attributes] + | extended // =============================================================== @@ -4112,6 +4178,8 @@ type: date +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-created[file.created] + | extended // =============================================================== @@ -4130,6 +4198,8 @@ type: date +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-changed[file.changed] + | extended // =============================================================== @@ -4162,6 +4232,8 @@ type: keyword example: `/home/alice` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-directory[file.directory] + | extended // =============================================================== @@ -4198,6 +4270,8 @@ type: keyword example: `png` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-extension[file.extension] + | extended // =============================================================== @@ -4218,6 +4292,8 @@ type: keyword example: `Zone.Identifer` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-fork-name[file.fork_name] + | extended // =============================================================== @@ -4234,6 +4310,8 @@ type: keyword example: `1001` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-group-id[file.group.id] + | extended // =============================================================== @@ -4250,6 +4328,8 @@ type: keyword example: `alice` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-group-name[file.group.name] + | extended // =============================================================== @@ -4266,6 +4346,8 @@ type: keyword example: `256383` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-inode[file.inode] + | extended // =============================================================== @@ -4298,6 +4380,8 @@ type: keyword example: `0640` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-mode[file.mode] + | extended // =============================================================== @@ -4314,6 +4398,8 @@ type: date +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-modified[file.modified] + | extended // =============================================================== @@ -4330,6 +4416,8 @@ type: keyword example: `example.png` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-name[file.name] + | extended // =============================================================== @@ -4346,6 +4434,8 @@ type: keyword example: `alice` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-owner-name[file.owner.name] + | extended // =============================================================== @@ -4368,6 +4458,8 @@ Multi-fields: example: `/home/alice/example.png` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-path[file.path] + | extended // =============================================================== @@ -4386,6 +4478,8 @@ type: long example: `16384` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-size[file.size] + | extended // =============================================================== @@ -4408,6 +4502,8 @@ Multi-fields: +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-symbolic-link-target-path[file.symbolic_link.target_path] + | extended // =============================================================== @@ -4440,6 +4536,8 @@ type: keyword example: `1001` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-owner-id[file.owner.id] + | extended // =============================================================== @@ -4545,6 +4643,8 @@ type: keyword example: `Montreal` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] https://opentelemetry.io/docs/specs/semconv/attributes-registry/geo/#geo-locality-name[geo.locality.name] + | core // =============================================================== @@ -4561,6 +4661,8 @@ type: keyword example: `NA` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] https://opentelemetry.io/docs/specs/semconv/attributes-registry/geo/#geo-continent-code[geo.continent.code] + | core // =============================================================== @@ -4593,6 +4695,8 @@ type: keyword example: `CA` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] https://opentelemetry.io/docs/specs/semconv/attributes-registry/geo/#geo-country-iso-code[geo.country.iso_code] + | core // =============================================================== @@ -4625,6 +4729,10 @@ type: geo_point example: `{ "lon": -73.614830, "lat": 45.505918 }` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/related-f2f4fb?style=flat[relation,title=related] https://opentelemetry.io/docs/specs/semconv/attributes-registry/geo/#geo-location-lat[geo.location.lat] + +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/related-f2f4fb?style=flat[relation,title=related] https://opentelemetry.io/docs/specs/semconv/attributes-registry/geo/#geo-location-lon[geo.location.lon] + | core // =============================================================== @@ -4663,6 +4771,8 @@ type: keyword example: `94040` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/geo/#geo-postal-code[geo.postal_code] + | core // =============================================================== @@ -4679,6 +4789,8 @@ type: keyword example: `CA-QC` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] https://opentelemetry.io/docs/specs/semconv/attributes-registry/geo/#geo-region-iso-code[geo.region.iso_code] + | core // =============================================================== @@ -5023,6 +5135,8 @@ type: keyword example: `x86_64` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] https://opentelemetry.io/docs/specs/semconv/attributes-registry/host/#host-arch[host.arch] + | core // =============================================================== @@ -5061,6 +5175,8 @@ type: scaled_float +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/metric-cb00cb?style=flat[relation,title=metric] https://github.com/search?q=repo%3Aopen-telemetry%2Fsemantic-conventions+%22%3C%21--\+semconv+metric.system.cpu.utilization+--%3E%22&type=code[system.cpu.utilization] + | extended // =============================================================== @@ -5077,6 +5193,8 @@ type: long +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/metric-cb00cb?style=flat[relation,title=metric] https://github.com/search?q=repo%3Aopen-telemetry%2Fsemantic-conventions+%22%3C%21--\+semconv+metric.system.disk.io+--%3E%22&type=code[system.disk.io] + | extended // =============================================================== @@ -5093,6 +5211,8 @@ type: long +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/metric-cb00cb?style=flat[relation,title=metric] https://github.com/search?q=repo%3Aopen-telemetry%2Fsemantic-conventions+%22%3C%21--\+semconv+metric.system.disk.io+--%3E%22&type=code[system.disk.io] + | extended // =============================================================== @@ -5149,6 +5269,8 @@ type: keyword +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/host/#host-id[host.id] + | core // =============================================================== @@ -5168,6 +5290,8 @@ Note: this field should contain an array of values. +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/host/#host-ip[host.ip] + | core // =============================================================== @@ -5189,6 +5313,8 @@ Note: this field should contain an array of values. example: `["00-00-5E-00-53-23", "00-00-5E-00-53-24"]` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/host/#host-mac[host.mac] + | core // =============================================================== @@ -5207,6 +5333,8 @@ type: keyword +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/host/#host-name[host.name] + | core // =============================================================== @@ -5223,6 +5351,8 @@ type: long +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/metric-cb00cb?style=flat[relation,title=metric] https://github.com/search?q=repo%3Aopen-telemetry%2Fsemantic-conventions+%22%3C%21--\+semconv+metric.system.network.io+--%3E%22&type=code[system.network.io] + | extended // =============================================================== @@ -5239,6 +5369,8 @@ type: long +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/metric-cb00cb?style=flat[relation,title=metric] https://github.com/search?q=repo%3Aopen-telemetry%2Fsemantic-conventions+%22%3C%21--\+semconv+metric.system.network.packets+--%3E%22&type=code[system.network.packets] + | extended // =============================================================== @@ -5255,6 +5387,8 @@ type: long +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/metric-cb00cb?style=flat[relation,title=metric] https://github.com/search?q=repo%3Aopen-telemetry%2Fsemantic-conventions+%22%3C%21--\+semconv+metric.system.network.io+--%3E%22&type=code[system.network.io] + | extended // =============================================================== @@ -5271,6 +5405,8 @@ type: long +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/metric-cb00cb?style=flat[relation,title=metric] https://github.com/search?q=repo%3Aopen-telemetry%2Fsemantic-conventions+%22%3C%21--\+semconv+metric.system.network.packets+--%3E%22&type=code[system.network.packets] + | extended // =============================================================== @@ -5307,6 +5443,8 @@ type: keyword +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/host/#host-type[host.type] + | core // =============================================================== @@ -5323,6 +5461,8 @@ type: long example: `1325` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/metric-cb00cb?style=flat[relation,title=metric] https://github.com/search?q=repo%3Aopen-telemetry%2Fsemantic-conventions+%22%3C%21--\+semconv+metric.system.uptime+--%3E%22&type=code[system.uptime] + | extended // =============================================================== @@ -5393,6 +5533,8 @@ type: long example: `887` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] https://opentelemetry.io/docs/specs/semconv/attributes-registry/http/#http-request-body-size[http.request.body.size] + | extended // =============================================================== @@ -5431,6 +5573,8 @@ type: long example: `1437` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] https://opentelemetry.io/docs/specs/semconv/attributes-registry/http/#http-request-size[http.request.size] + | extended // =============================================================== @@ -5467,6 +5611,13 @@ type: keyword example: `POST` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] https://opentelemetry.io/docs/specs/semconv/attributes-registry/http/#http-request-method-original[http.request.method_original] + +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/conflict-910000?style=flat[relation,title=conflict] https://opentelemetry.io/docs/specs/semconv/attributes-registry/http/#http-request-method[http.request.method] + +Note: `http.request.method` in SemConv is the known, normalized, upper case value of the request method, other than the ECS' `http.request.method` that retains casing from the original event. + + | extended // =============================================================== @@ -5517,6 +5668,8 @@ type: long example: `887` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] https://opentelemetry.io/docs/specs/semconv/attributes-registry/http/#http-response-body-size[http.response.body.size] + | extended // =============================================================== @@ -5555,6 +5708,8 @@ type: long example: `1437` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] https://opentelemetry.io/docs/specs/semconv/attributes-registry/http/#http-response-size[http.response.size] + | extended // =============================================================== @@ -5589,6 +5744,8 @@ type: long example: `404` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/http/#http-response-status-code[http.response.status_code] + | extended // =============================================================== @@ -5605,6 +5762,13 @@ type: keyword example: `1.1` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/related-f2f4fb?style=flat[relation,title=related] https://opentelemetry.io/docs/specs/semconv/attributes-registry/network/#network-protocol-name[network.protocol.name] + +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/related-f2f4fb?style=flat[relation,title=related] https://opentelemetry.io/docs/specs/semconv/attributes-registry/network/#network-protocol-version[network.protocol.version] + +Note: In OTel SemConv, `network.protocol.version` specifies the HTTP version if the value of `network.protocol.name` is `http`. + + | extended // =============================================================== @@ -5720,6 +5884,8 @@ type: keyword example: `/var/log/fun-times.log` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/log/#log-file-path[log.file.path] + | extended // =============================================================== @@ -6513,6 +6679,8 @@ type: keyword example: `http` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] https://opentelemetry.io/docs/specs/semconv/attributes-registry/network/#network-protocol-name[network.protocol.name] + | core // =============================================================== @@ -6531,6 +6699,8 @@ type: keyword example: `tcp` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/network/#network-transport[network.transport] + | core // =============================================================== @@ -6549,6 +6719,8 @@ type: keyword example: `ipv4` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/network/#network-type[network.type] + | core // =============================================================== @@ -7294,6 +7466,8 @@ Multi-fields: example: `Mac OS X` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/os/#os-name[os.name] + | extended // =============================================================== @@ -7337,6 +7511,10 @@ type: keyword example: `macos` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/conflict-910000?style=flat[relation,title=conflict] https://opentelemetry.io/docs/specs/semconv/attributes-registry/os/#os-type[os.type] + +Note: The expected values in ECS for `os.type` do not correspond with the values defined in semantic conventions! + | extended // =============================================================== @@ -7353,6 +7531,8 @@ type: keyword example: `10.14.1` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/os/#os-version[os.version] + | extended // =============================================================== @@ -8069,6 +8249,8 @@ type: long example: `4` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/process/#process-args-count[process.args_count] + | extended // =============================================================== @@ -8093,6 +8275,8 @@ Multi-fields: example: `/usr/bin/ssh -l user 10.0.0.16` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/process/#process-command-line[process.command_line] + | extended // =============================================================== @@ -8228,6 +8412,8 @@ type: boolean example: `True` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/process/#process-interactive[process.interactive] + | extended // =============================================================== @@ -8439,6 +8625,8 @@ type: long example: `4242` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/process/#process-pid[process.pid] + | core // =============================================================== @@ -8573,6 +8761,8 @@ Multi-fields: +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/process/#process-title[process.title] + | extended // =============================================================== @@ -8691,6 +8881,8 @@ type: long example: `4242` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/process/#process-vpid[process.vpid] + | core // =============================================================== @@ -8713,6 +8905,8 @@ Multi-fields: example: `/home/alice` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/process/#process-working-directory[process.working_directory] + | extended // =============================================================== @@ -9545,6 +9739,8 @@ type: keyword +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/server/#server-address[server.address] + | extended // =============================================================== @@ -9681,6 +9877,8 @@ type: long +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/server/#server-port[server.port] + | core // =============================================================== @@ -9831,6 +10029,8 @@ type: keyword example: `production` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] https://opentelemetry.io/docs/specs/semconv/attributes-registry/deployment/#deployment-environment-name[deployment.environment.name] + | extended // =============================================================== @@ -9889,6 +10089,8 @@ type: keyword example: `elasticsearch-metrics` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/service/#service-name[service.name] + | core // =============================================================== @@ -9909,6 +10111,8 @@ type: keyword example: `instance-0000000016` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] https://opentelemetry.io/docs/specs/semconv/attributes-registry/service/#service-instance-id[service.instance.id] + | extended // =============================================================== @@ -10016,6 +10220,8 @@ type: keyword example: `3.2.4` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/service/#service-version[service.version] + | core // =============================================================== @@ -10104,6 +10310,8 @@ type: keyword +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/source/#source-address[source.address] + | extended // =============================================================== @@ -10240,6 +10448,8 @@ type: long +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/source/#source-port[source.port] + | core // =============================================================== @@ -11714,6 +11924,8 @@ type: keyword example: `TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-cipher[tls.cipher] + | extended // =============================================================== @@ -11730,6 +11942,8 @@ type: keyword example: `MII...` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-client-certificate[tls.client.certificate] + | extended // =============================================================== @@ -11749,6 +11963,8 @@ Note: this field should contain an array of values. example: `["MII...", "MII..."]` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-client-certificate-chain[tls.client.certificate_chain] + | extended // =============================================================== @@ -11765,6 +11981,8 @@ type: keyword example: `0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-client-hash-md5[tls.client.hash.md5] + | extended // =============================================================== @@ -11781,6 +11999,8 @@ type: keyword example: `9E393D93138888D288266C2D915214D1D1CCEB2A` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-client-hash-sha1[tls.client.hash.sha1] + | extended // =============================================================== @@ -11797,6 +12017,8 @@ type: keyword example: `0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-client-hash-sha256[tls.client.hash.sha256] + | extended // =============================================================== @@ -11813,6 +12035,8 @@ type: keyword example: `CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-client-issuer[tls.client.issuer] + | extended // =============================================================== @@ -11829,6 +12053,8 @@ type: keyword example: `d4e5b18d6b55c71272893221c96ba240` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-client-ja3[tls.client.ja3] + | extended // =============================================================== @@ -11845,6 +12071,8 @@ type: date example: `2021-01-01T00:00:00.000Z` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-client-not-after[tls.client.not_after] + | extended // =============================================================== @@ -11861,6 +12089,8 @@ type: date example: `1970-01-01T00:00:00.000Z` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-client-not-before[tls.client.not_before] + | extended // =============================================================== @@ -11893,6 +12123,8 @@ type: keyword example: `CN=myclient, OU=Documentation Team, DC=example, DC=com` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-client-subject[tls.client.subject] + | extended // =============================================================== @@ -11912,6 +12144,8 @@ Note: this field should contain an array of values. example: `["TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", "..."]` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-client-supported-ciphers[tls.client.supported_ciphers] + | extended // =============================================================== @@ -11928,6 +12162,8 @@ type: keyword example: `secp256r1` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-curve[tls.curve] + | extended // =============================================================== @@ -11944,6 +12180,8 @@ type: boolean +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-established[tls.established] + | extended // =============================================================== @@ -11960,6 +12198,8 @@ type: keyword example: `http/1.1` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-next-protocol[tls.next_protocol] + | extended // =============================================================== @@ -11976,6 +12216,8 @@ type: boolean +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-resumed[tls.resumed] + | extended // =============================================================== @@ -11992,6 +12234,8 @@ type: keyword example: `MII...` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-server-certificate[tls.server.certificate] + | extended // =============================================================== @@ -12011,6 +12255,8 @@ Note: this field should contain an array of values. example: `["MII...", "MII..."]` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-server-certificate-chain[tls.server.certificate_chain] + | extended // =============================================================== @@ -12027,6 +12273,8 @@ type: keyword example: `0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-server-hash-md5[tls.server.hash.md5] + | extended // =============================================================== @@ -12043,6 +12291,8 @@ type: keyword example: `9E393D93138888D288266C2D915214D1D1CCEB2A` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-server-hash-sha1[tls.server.hash.sha1] + | extended // =============================================================== @@ -12059,6 +12309,8 @@ type: keyword example: `0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-server-hash-sha256[tls.server.hash.sha256] + | extended // =============================================================== @@ -12075,6 +12327,8 @@ type: keyword example: `CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-server-issuer[tls.server.issuer] + | extended // =============================================================== @@ -12091,6 +12345,8 @@ type: keyword example: `394441ab65754e2207b1e1b457b3641d` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-server-ja3s[tls.server.ja3s] + | extended // =============================================================== @@ -12107,6 +12363,8 @@ type: date example: `2021-01-01T00:00:00.000Z` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-server-not-after[tls.server.not_after] + | extended // =============================================================== @@ -12123,6 +12381,8 @@ type: date example: `1970-01-01T00:00:00.000Z` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-server-not-before[tls.server.not_before] + | extended // =============================================================== @@ -12139,6 +12399,8 @@ type: keyword example: `CN=www.example.com, OU=Infrastructure Team, DC=example, DC=com` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-server-subject[tls.server.subject] + | extended // =============================================================== @@ -12311,6 +12573,8 @@ type: keyword example: `www.elastic.co` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/url/#url-domain[url.domain] + | extended // =============================================================== @@ -12333,6 +12597,8 @@ type: keyword example: `png` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/url/#url-extension[url.extension] + | extended // =============================================================== @@ -12351,6 +12617,8 @@ type: keyword +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/url/#url-fragment[url.fragment] + | extended // =============================================================== @@ -12373,6 +12641,8 @@ Multi-fields: example: `https://www.elastic.co:443/search?q=elasticsearch#top` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/url/#url-full[url.full] + | extended // =============================================================== @@ -12399,6 +12669,8 @@ Multi-fields: example: `https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/url/#url-original[url.original] + | extended // =============================================================== @@ -12431,6 +12703,8 @@ type: wildcard +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/url/#url-path[url.path] + | extended // =============================================================== @@ -12447,6 +12721,8 @@ type: long example: `443` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/url/#url-port[url.port] + | extended // =============================================================== @@ -12465,6 +12741,8 @@ type: keyword +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/url/#url-query[url.query] + | extended // =============================================================== @@ -12485,6 +12763,8 @@ type: keyword example: `example.com` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/url/#url-registered-domain[url.registered_domain] + | extended // =============================================================== @@ -12503,6 +12783,8 @@ type: keyword example: `https` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/url/#url-scheme[url.scheme] + | extended // =============================================================== @@ -12521,6 +12803,8 @@ type: keyword example: `east` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/url/#url-subdomain[url.subdomain] + | extended // =============================================================== @@ -12539,6 +12823,8 @@ type: keyword example: `co.uk` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/url/#url-top-level-domain[url.top_level_domain] + | extended // =============================================================== @@ -12621,6 +12907,8 @@ type: keyword +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/user/#user-email[user.email] + | extended // =============================================================== @@ -12643,6 +12931,8 @@ Multi-fields: example: `Albert Einstein` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/user/#user-full-name[user.full_name] + | extended // =============================================================== @@ -12661,6 +12951,8 @@ type: keyword +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/user/#user-hash[user.hash] + | extended // =============================================================== @@ -12677,6 +12969,8 @@ type: keyword example: `S-1-5-21-202424912787-2692429404-2351956786-1000` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/user/#user-id[user.id] + | core // =============================================================== @@ -12699,6 +12993,8 @@ Multi-fields: example: `a.einstein` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/user/#user-name[user.name] + | core // =============================================================== @@ -12718,6 +13014,8 @@ Note: this field should contain an array of values. example: `["kibana_admin", "reporting_user"]` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/user/#user-roles[user.roles] + | extended // =============================================================== @@ -12857,6 +13155,8 @@ type: keyword example: `Safari` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/user_agent/#user-agent-name[user_agent.name] + | extended // =============================================================== @@ -12879,6 +13179,8 @@ Multi-fields: 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` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/user_agent/#user-agent-original[user_agent.original] + | extended // =============================================================== @@ -12895,6 +13197,8 @@ type: keyword example: `12.0` +image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge] image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] https://opentelemetry.io/docs/specs/semconv/attributes-registry/user_agent/#user-agent-version[user_agent.version] + | extended // =============================================================== diff --git a/docs/index.asciidoc b/docs/index.asciidoc index ce7ae20021..d1e793118a 100644 --- a/docs/index.asciidoc +++ b/docs/index.asciidoc @@ -69,5 +69,6 @@ include::using-ecs/index.asciidoc[] include::fields/fields.asciidoc[] include::fields/field-values.asciidoc[] include::migrating/index.asciidoc[] +include::opentelemetry/index.asciidoc[] include::additional-info/index.asciidoc[] include::release-notes/index.asciidoc[] diff --git a/docs/opentelemetry/index.asciidoc b/docs/opentelemetry/index.asciidoc new file mode 100644 index 0000000000..1d1cee2db3 --- /dev/null +++ b/docs/opentelemetry/index.asciidoc @@ -0,0 +1,60 @@ +[[ecs-opentelemetry]] +== ECS & OpenTelemetry + +In April 2023, Elastic donated ECS to OpenTelemetry and together with the OTel community https://opentelemetry.io/blog/2023/ecs-otel-semconv-convergence/[jointly announced] +the intention to achieve convergence of ECS and https://opentelemetry.io/docs/specs/semconv/[OTel Semantic Conventions (SemConv)]. +This donation should be seen as a directional decision for the evolution of both standards +rather than a single event that merged both schemas into a single standard. + +While both schemes complement each other in large areas and thus offer mutual added value and great potential for convergence, +it is important to understand that in some areas convergence is not achievable due to conceptual differences or consistency reasons. +For example, while ECS contains a few fields (e.g. https://www.elastic.co/guide/en/ecs/current/ecs-container.html#field-container-disk-read-bytes[container.disk.read.bytes]) +that are meant to be used in a metric-like way, metrics in OpenTelemetry are following a completely different data model (with metric name, type, dimensions, etc.). +Also, in OTel semantic conventions there are some stable (or quasi-stable) attributes that have semantically equivalent, stable fields in ECS, however, with different field names. +This kind of differences require explicit handling to achieve compatibility. + +The https://github.com/elastic/ecs/tree/main/schemas[ECS schema files] contain an explicit mapping between ECS fields and corresponding OTel semnatic convention attributes. +This can be used to generate tooling for compatibility between ECS and semnatic conventions (e.g. alias fields in Elasticsearch). +The relation between individual ECS fields and corresponding OTel semantic conventions attributes follows one of the following categories: + +[%header] +|==== +| Category | Description + +| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] +| The name of the ECS field is identical to the SemConv attribute name and has (practically) the same semantics. + +| image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] +| The ECS field name is different but has the same semantics as the corresponding SemConv attribute. +For this type of relation aliasing approaches (e.g. https://www.elastic.co/guide/en/elasticsearch/reference/current/field-alias.html[Elasticsearch field aliases]) can be used to achieve compatibility between ECS and OTel SemConv. + +| image:https://img.shields.io/badge/related-f2f4fb?style=flat[relation,title=related] +| The ECS field name is different and has related - yet different - semantics as the corresponding SemConv attribute. +An aliasing approach is not sufficient to resolve compatibility for this type of relation. + +| image:https://img.shields.io/badge/metric-800080?style=flat[relation,title=metric] +| For this ECS field there is a corresponding metric defined in OTel SemConv. + +| image:https://img.shields.io/badge/conflict-910000?style=flat[relation,title=conflict] +| The ECS field name is the same as an OTel SemConv namespace or an attribute that has significantly different semantics. + +|==== + + + +The following documentation pages provide an overview and more details on the alignment between ECS and OTel semantic conventions: + +- <> +- <> + + + +[[ecs-otel-alignment-overview]] +=== OTel Alignment Overview + +include::otel-mapping-summary.asciidoc[] + +[[ecs-otel-alignment-details]] +=== Field & Attributes Alignment + +include::otel-fields-mapping.asciidoc[] diff --git a/docs/opentelemetry/otel-fields-mapping.asciidoc b/docs/opentelemetry/otel-fields-mapping.asciidoc new file mode 100644 index 0000000000..c6cbb74519 --- /dev/null +++ b/docs/opentelemetry/otel-fields-mapping.asciidoc @@ -0,0 +1,2405 @@ +The following table gives an overview of mappings between individual ECS fields (in ECS version `9.0.0-dev`) +and corresponding OTel semantic convention attributes (in SemConv version `1.29.0`). + +[%header] +|==== +| ECS Field | Relation | OTel Semantic Conventions Attribute | Stability + +[[otel-mapping-namespace-client]] +4+e| *Client Fields* + +.1+| +[[otel-mapping-for-client-address]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/client/#client-address[client.address] + + + +^| image:https://img.shields.io/badge/✔-93c93e?style=flat[stable,title=stable] + + +// =============================================================== +.1+| +[[otel-mapping-for-client-port]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/client/#client-port[client.port] + + + +^| image:https://img.shields.io/badge/✔-93c93e?style=flat[stable,title=stable] + + +// =============================================================== +[[otel-mapping-namespace-cloud]] +4+e| *Cloud Fields* + +.1+| +[[otel-mapping-for-cloud-account-id]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/cloud/#cloud-account-id[cloud.account.id] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-cloud-availability-zone]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/cloud/#cloud-availability-zone[cloud.availability_zone] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-cloud-provider]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/cloud/#cloud-provider[cloud.provider] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-cloud-region]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/cloud/#cloud-region[cloud.region] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-cloud-service-name]] +<> + + + +^| image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/cloud/#cloud-platform[cloud.platform] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +[[otel-mapping-namespace-container]] +4+e| *Container Fields* + +.1+| +[[otel-mapping-for-container-cpu-usage]] +<> + + + +^| image:https://img.shields.io/badge/metric-cb00cb?style=flat[relation,title=metric] + +<|https://github.com/search?q=repo%3Aopen-telemetry%2Fsemantic-conventions+%22%3C%21--\+semconv+metric.container.cpu.usage+--%3E%22&type=code[container.cpu.usage] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-container-id]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/container/#container-id[container.id] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-container-image-hash-all]] +<> + + + +^| image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/container/#container-image-repo-digests[container.image.repo_digests] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-container-image-name]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/container/#container-image-name[container.image.name] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-container-image-tag]] +<> + + + +^| image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/container/#container-image-tags[container.image.tags] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-container-labels]] +<> + + + +^| image:https://img.shields.io/badge/related-f2f4fb?style=flat[relation,title=related] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/container/#container-label[container.label] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-container-memory-usage]] +<> + + + +^| image:https://img.shields.io/badge/metric-cb00cb?style=flat[relation,title=metric] + +<|https://github.com/search?q=repo%3Aopen-telemetry%2Fsemantic-conventions+%22%3C%21--\+semconv+metric.container.memory.usage+--%3E%22&type=code[container.memory.usage] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-container-name]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/container/#container-name[container.name] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-container-runtime]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/container/#container-runtime[container.runtime] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +[[otel-mapping-namespace-destination]] +4+e| *Destination Fields* + +.1+| +[[otel-mapping-for-destination-address]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/destination/#destination-address[destination.address] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-destination-port]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/destination/#destination-port[destination.port] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +[[otel-mapping-namespace-device]] +4+e| *Device Fields* + +.1+| +[[otel-mapping-for-device-id]] +<> [beta] + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/device/#device-id[device.id] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-device-manufacturer]] +<> [beta] + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/device/#device-manufacturer[device.manufacturer] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-device-model-identifier]] +<> [beta] + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/device/#device-model-identifier[device.model.identifier] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-device-model-name]] +<> [beta] + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/device/#device-model-name[device.model.name] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +[[otel-mapping-namespace-dns]] +4+e| *DNS Fields* + +.1+| +[[otel-mapping-for-dns-question-name]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/dns/#dns-question-name[dns.question.name] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +[[otel-mapping-namespace-error]] +4+e| *Error Fields* + +.1+| +[[otel-mapping-for-error-message]] +<> + + + +^| image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/exception/#exception-message[exception.message] + + + +^| image:https://img.shields.io/badge/✔-93c93e?style=flat[stable,title=stable] + + +// =============================================================== +.1+| +[[otel-mapping-for-error-stack-trace]] +<> + + + +^| image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/exception/#exception-stacktrace[exception.stacktrace] + + + +^| image:https://img.shields.io/badge/✔-93c93e?style=flat[stable,title=stable] + + +// =============================================================== +.1+| +[[otel-mapping-for-error-type]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/error/#error-type[error.type] + + + +^| image:https://img.shields.io/badge/✔-93c93e?style=flat[stable,title=stable] + + +// =============================================================== +[[otel-mapping-namespace-faas]] +4+e| *FaaS Fields* + +.1+| +[[otel-mapping-for-faas-coldstart]] +<> [beta] + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/faas/#faas-coldstart[faas.coldstart] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-faas-execution]] +<> [beta] + + + +^| image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/faas/#faas-invocation-id[faas.invocation_id] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-faas-name]] +<> [beta] + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/faas/#faas-name[faas.name] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-faas-trigger-type]] +<> [beta] + + + +^| image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/faas/#faas-trigger[faas.trigger] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-faas-version]] +<> [beta] + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/faas/#faas-version[faas.version] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +[[otel-mapping-namespace-file]] +4+e| *File Fields* + +.1+| +[[otel-mapping-for-file-accessed]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-accessed[file.accessed] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-file-attributes]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-attributes[file.attributes] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-file-created]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-created[file.created] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-file-ctime]] +<> + + + +^| image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-changed[file.changed] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-file-directory]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-directory[file.directory] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-file-extension]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-extension[file.extension] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-file-fork-name]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-fork-name[file.fork_name] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-file-gid]] +<> + + + +^| image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-group-id[file.group.id] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-file-group]] +<> + + + +^| image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-group-name[file.group.name] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-file-inode]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-inode[file.inode] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-file-mode]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-mode[file.mode] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-file-mtime]] +<> + + + +^| image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-modified[file.modified] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-file-name]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-name[file.name] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-file-owner]] +<> + + + +^| image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-owner-name[file.owner.name] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-file-path]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-path[file.path] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-file-size]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-size[file.size] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-file-target-path]] +<> + + + +^| image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-symbolic-link-target-path[file.symbolic_link.target_path] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-file-uid]] +<> + + + +^| image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/file/#file-owner-id[file.owner.id] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +[[otel-mapping-namespace-geo]] +4+e| *Geo Fields* + +.1+| +[[otel-mapping-for-geo-city-name]] +<> + + + +^| image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/geo/#geo-locality-name[geo.locality.name] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-geo-continent-code]] +<> + + + +^| image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/geo/#geo-continent-code[geo.continent.code] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-geo-country-iso-code]] +<> + + + +^| image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/geo/#geo-country-iso-code[geo.country.iso_code] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.2+| +[[otel-mapping-for-geo-location]] +<> + + + +^| image:https://img.shields.io/badge/related-f2f4fb?style=flat[relation,title=related] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/geo/#geo-location-lat[geo.location.lat] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== + + +^| image:https://img.shields.io/badge/related-f2f4fb?style=flat[relation,title=related] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/geo/#geo-location-lon[geo.location.lon] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-geo-postal-code]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/geo/#geo-postal-code[geo.postal_code] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-geo-region-iso-code]] +<> + + + +^| image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/geo/#geo-region-iso-code[geo.region.iso_code] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +[[otel-mapping-namespace-host]] +4+e| *Host Fields* + +.1+| +[[otel-mapping-for-host-architecture]] +<> + + + +^| image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/host/#host-arch[host.arch] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-host-cpu-usage]] +<> + + + +^| image:https://img.shields.io/badge/metric-cb00cb?style=flat[relation,title=metric] + +<|https://github.com/search?q=repo%3Aopen-telemetry%2Fsemantic-conventions+%22%3C%21--\+semconv+metric.system.cpu.utilization+--%3E%22&type=code[system.cpu.utilization] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-host-disk-read-bytes]] +<> + + + +^| image:https://img.shields.io/badge/metric-cb00cb?style=flat[relation,title=metric] + +<|https://github.com/search?q=repo%3Aopen-telemetry%2Fsemantic-conventions+%22%3C%21--\+semconv+metric.system.disk.io+--%3E%22&type=code[system.disk.io] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-host-disk-write-bytes]] +<> + + + +^| image:https://img.shields.io/badge/metric-cb00cb?style=flat[relation,title=metric] + +<|https://github.com/search?q=repo%3Aopen-telemetry%2Fsemantic-conventions+%22%3C%21--\+semconv+metric.system.disk.io+--%3E%22&type=code[system.disk.io] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-host-id]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/host/#host-id[host.id] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-host-ip]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/host/#host-ip[host.ip] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-host-mac]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/host/#host-mac[host.mac] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-host-name]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/host/#host-name[host.name] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-host-network-egress-bytes]] +<> + + + +^| image:https://img.shields.io/badge/metric-cb00cb?style=flat[relation,title=metric] + +<|https://github.com/search?q=repo%3Aopen-telemetry%2Fsemantic-conventions+%22%3C%21--\+semconv+metric.system.network.io+--%3E%22&type=code[system.network.io] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-host-network-egress-packets]] +<> + + + +^| image:https://img.shields.io/badge/metric-cb00cb?style=flat[relation,title=metric] + +<|https://github.com/search?q=repo%3Aopen-telemetry%2Fsemantic-conventions+%22%3C%21--\+semconv+metric.system.network.packets+--%3E%22&type=code[system.network.packets] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-host-network-ingress-bytes]] +<> + + + +^| image:https://img.shields.io/badge/metric-cb00cb?style=flat[relation,title=metric] + +<|https://github.com/search?q=repo%3Aopen-telemetry%2Fsemantic-conventions+%22%3C%21--\+semconv+metric.system.network.io+--%3E%22&type=code[system.network.io] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-host-network-ingress-packets]] +<> + + + +^| image:https://img.shields.io/badge/metric-cb00cb?style=flat[relation,title=metric] + +<|https://github.com/search?q=repo%3Aopen-telemetry%2Fsemantic-conventions+%22%3C%21--\+semconv+metric.system.network.packets+--%3E%22&type=code[system.network.packets] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-host-type]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/host/#host-type[host.type] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-host-uptime]] +<> + + + +^| image:https://img.shields.io/badge/metric-cb00cb?style=flat[relation,title=metric] + +<|https://github.com/search?q=repo%3Aopen-telemetry%2Fsemantic-conventions+%22%3C%21--\+semconv+metric.system.uptime+--%3E%22&type=code[system.uptime] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +[[otel-mapping-namespace-http]] +4+e| *HTTP Fields* + +.1+| +[[otel-mapping-for-http-request-body-bytes]] +<> + + + +^| image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/http/#http-request-body-size[http.request.body.size] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-http-request-bytes]] +<> + + + +^| image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/http/#http-request-size[http.request.size] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.2+| +[[otel-mapping-for-http-request-method]] +<> + + + +^| image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/http/#http-request-method-original[http.request.method_original] + + + +^| image:https://img.shields.io/badge/✔-93c93e?style=flat[stable,title=stable] + + +// =============================================================== + + +^| image:https://img.shields.io/badge/conflict-910000?style=flat[relation,title=conflict] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/http/#http-request-method[http.request.method] + + +Note: `http.request.method` in SemConv is the known, normalized, upper case value of the request method, other than the ECS' `http.request.method` that retains casing from the original event. + + + +^| image:https://img.shields.io/badge/✔-93c93e?style=flat[stable,title=stable] + + +// =============================================================== +.1+| +[[otel-mapping-for-http-response-body-bytes]] +<> + + + +^| image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/http/#http-response-body-size[http.response.body.size] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-http-response-bytes]] +<> + + + +^| image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/http/#http-response-size[http.response.size] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-http-response-status-code]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/http/#http-response-status-code[http.response.status_code] + + + +^| image:https://img.shields.io/badge/✔-93c93e?style=flat[stable,title=stable] + + +// =============================================================== +.2+| +[[otel-mapping-for-http-version]] +<> + + + +^| image:https://img.shields.io/badge/related-f2f4fb?style=flat[relation,title=related] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/network/#network-protocol-name[network.protocol.name] + + + +^| image:https://img.shields.io/badge/✔-93c93e?style=flat[stable,title=stable] + + +// =============================================================== + + +^| image:https://img.shields.io/badge/related-f2f4fb?style=flat[relation,title=related] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/network/#network-protocol-version[network.protocol.version] + + +Note: In OTel SemConv, `network.protocol.version` specifies the HTTP version if the value of `network.protocol.name` is `http`. + + + +^| image:https://img.shields.io/badge/✔-93c93e?style=flat[stable,title=stable] + + +// =============================================================== +[[otel-mapping-namespace-log]] +4+e| *Log Fields* + +.1+| +[[otel-mapping-for-log-file-path]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/log/#log-file-path[log.file.path] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +[[otel-mapping-namespace-network]] +4+e| *Network Fields* + +.1+| +[[otel-mapping-for-network-protocol]] +<> + + + +^| image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/network/#network-protocol-name[network.protocol.name] + + + +^| image:https://img.shields.io/badge/✔-93c93e?style=flat[stable,title=stable] + + +// =============================================================== +.1+| +[[otel-mapping-for-network-transport]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/network/#network-transport[network.transport] + + + +^| image:https://img.shields.io/badge/✔-93c93e?style=flat[stable,title=stable] + + +// =============================================================== +.1+| +[[otel-mapping-for-network-type]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/network/#network-type[network.type] + + + +^| image:https://img.shields.io/badge/✔-93c93e?style=flat[stable,title=stable] + + +// =============================================================== +[[otel-mapping-namespace-os]] +4+e| *Operating System Fields* + +.1+| +[[otel-mapping-for-os-name]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/os/#os-name[os.name] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-os-type]] +<> + + + +^| image:https://img.shields.io/badge/conflict-910000?style=flat[relation,title=conflict] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/os/#os-type[os.type] + + +Note: The expected values in ECS for `os.type` do not correspond with the values defined in semantic conventions! + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-os-version]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/os/#os-version[os.version] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +[[otel-mapping-namespace-process]] +4+e| *Process Fields* + +.1+| +[[otel-mapping-for-process-args-count]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/process/#process-args-count[process.args_count] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-process-command-line]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/process/#process-command-line[process.command_line] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +process.real_user.id + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/process/#process-real-user-id[process.real_user.id] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +process.saved_user.id + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/process/#process-saved-user-id[process.saved_user.id] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +process.user.id + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/process/#process-user-id[process.user.id] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-process-interactive]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/process/#process-interactive[process.interactive] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +process.real_user.name + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/process/#process-real-user-name[process.real_user.name] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +process.saved_user.name + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/process/#process-saved-user-name[process.saved_user.name] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +process.user.name + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/process/#process-user-name[process.user.name] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +process.group_leader.pid + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/process/#process-group-leader-pid[process.group_leader.pid] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-process-pid]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/process/#process-pid[process.pid] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +process.session_leader.pid + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/process/#process-session-leader-pid[process.session_leader.pid] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-process-title]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/process/#process-title[process.title] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-process-vpid]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/process/#process-vpid[process.vpid] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-process-working-directory]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/process/#process-working-directory[process.working_directory] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +[[otel-mapping-namespace-server]] +4+e| *Server Fields* + +.1+| +[[otel-mapping-for-server-address]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/server/#server-address[server.address] + + + +^| image:https://img.shields.io/badge/✔-93c93e?style=flat[stable,title=stable] + + +// =============================================================== +.1+| +[[otel-mapping-for-server-port]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/server/#server-port[server.port] + + + +^| image:https://img.shields.io/badge/✔-93c93e?style=flat[stable,title=stable] + + +// =============================================================== +[[otel-mapping-namespace-service]] +4+e| *Service Fields* + +.1+| +[[otel-mapping-for-service-environment]] +<> [beta] + + + +^| image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/deployment/#deployment-environment-name[deployment.environment.name] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-service-name]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/service/#service-name[service.name] + + + +^| image:https://img.shields.io/badge/✔-93c93e?style=flat[stable,title=stable] + + +// =============================================================== +.1+| +[[otel-mapping-for-service-node-name]] +<> + + + +^| image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/service/#service-instance-id[service.instance.id] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-service-version]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/service/#service-version[service.version] + + + +^| image:https://img.shields.io/badge/✔-93c93e?style=flat[stable,title=stable] + + +// =============================================================== +[[otel-mapping-namespace-source]] +4+e| *Source Fields* + +.1+| +[[otel-mapping-for-source-address]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/source/#source-address[source.address] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-source-port]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/source/#source-port[source.port] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +[[otel-mapping-namespace-tls]] +4+e| *TLS Fields* + +.1+| +[[otel-mapping-for-tls-cipher]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-cipher[tls.cipher] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-tls-client-certificate]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-client-certificate[tls.client.certificate] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-tls-client-certificate-chain]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-client-certificate-chain[tls.client.certificate_chain] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-tls-client-hash-md5]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-client-hash-md5[tls.client.hash.md5] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-tls-client-hash-sha1]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-client-hash-sha1[tls.client.hash.sha1] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-tls-client-hash-sha256]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-client-hash-sha256[tls.client.hash.sha256] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-tls-client-issuer]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-client-issuer[tls.client.issuer] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-tls-client-ja3]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-client-ja3[tls.client.ja3] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-tls-client-not-after]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-client-not-after[tls.client.not_after] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-tls-client-not-before]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-client-not-before[tls.client.not_before] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-tls-client-subject]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-client-subject[tls.client.subject] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-tls-client-supported-ciphers]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-client-supported-ciphers[tls.client.supported_ciphers] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-tls-curve]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-curve[tls.curve] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-tls-established]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-established[tls.established] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-tls-next-protocol]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-next-protocol[tls.next_protocol] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-tls-resumed]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-resumed[tls.resumed] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-tls-server-certificate]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-server-certificate[tls.server.certificate] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-tls-server-certificate-chain]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-server-certificate-chain[tls.server.certificate_chain] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-tls-server-hash-md5]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-server-hash-md5[tls.server.hash.md5] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-tls-server-hash-sha1]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-server-hash-sha1[tls.server.hash.sha1] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-tls-server-hash-sha256]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-server-hash-sha256[tls.server.hash.sha256] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-tls-server-issuer]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-server-issuer[tls.server.issuer] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-tls-server-ja3s]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-server-ja3s[tls.server.ja3s] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-tls-server-not-after]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-server-not-after[tls.server.not_after] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-tls-server-not-before]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-server-not-before[tls.server.not_before] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-tls-server-subject]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/#tls-server-subject[tls.server.subject] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +[[otel-mapping-namespace-url]] +4+e| *URL Fields* + +.1+| +[[otel-mapping-for-url-domain]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/url/#url-domain[url.domain] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-url-extension]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/url/#url-extension[url.extension] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-url-fragment]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/url/#url-fragment[url.fragment] + + + +^| image:https://img.shields.io/badge/✔-93c93e?style=flat[stable,title=stable] + + +// =============================================================== +.1+| +[[otel-mapping-for-url-full]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/url/#url-full[url.full] + + + +^| image:https://img.shields.io/badge/✔-93c93e?style=flat[stable,title=stable] + + +// =============================================================== +.1+| +[[otel-mapping-for-url-original]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/url/#url-original[url.original] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-url-path]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/url/#url-path[url.path] + + + +^| image:https://img.shields.io/badge/✔-93c93e?style=flat[stable,title=stable] + + +// =============================================================== +.1+| +[[otel-mapping-for-url-port]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/url/#url-port[url.port] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-url-query]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/url/#url-query[url.query] + + + +^| image:https://img.shields.io/badge/✔-93c93e?style=flat[stable,title=stable] + + +// =============================================================== +.1+| +[[otel-mapping-for-url-registered-domain]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/url/#url-registered-domain[url.registered_domain] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-url-scheme]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/url/#url-scheme[url.scheme] + + + +^| image:https://img.shields.io/badge/✔-93c93e?style=flat[stable,title=stable] + + +// =============================================================== +.1+| +[[otel-mapping-for-url-subdomain]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/url/#url-subdomain[url.subdomain] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-url-top-level-domain]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/url/#url-top-level-domain[url.top_level_domain] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +[[otel-mapping-namespace-user]] +4+e| *User Fields* + +.1+| +[[otel-mapping-for-user-email]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/user/#user-email[user.email] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-user-full-name]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/user/#user-full-name[user.full_name] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-user-hash]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/user/#user-hash[user.hash] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-user-id]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/user/#user-id[user.id] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-user-name]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/user/#user-name[user.name] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-user-roles]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/user/#user-roles[user.roles] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +[[otel-mapping-namespace-user_agent]] +4+e| *User agent Fields* + +.1+| +[[otel-mapping-for-user-agent-name]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/user_agent/#user-agent-name[user_agent.name] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +.1+| +[[otel-mapping-for-user-agent-original]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/user_agent/#user-agent-original[user_agent.original] + + + +^| image:https://img.shields.io/badge/✔-93c93e?style=flat[stable,title=stable] + + +// =============================================================== +.1+| +[[otel-mapping-for-user-agent-version]] +<> + + + +^| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] + +<|https://opentelemetry.io/docs/specs/semconv/attributes-registry/user_agent/#user-agent-version[user_agent.version] + + + +^| image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] + + +// =============================================================== +|==== \ No newline at end of file diff --git a/docs/opentelemetry/otel-mapping-summary.asciidoc b/docs/opentelemetry/otel-mapping-summary.asciidoc new file mode 100644 index 0000000000..03c87c40f0 --- /dev/null +++ b/docs/opentelemetry/otel-mapping-summary.asciidoc @@ -0,0 +1,969 @@ + +The following table summarizes the alignment status by namespaces between ECS in version `9.0.0-dev` +and OpenTelemetry semantic conventions in version `1.29.0`. + +[cols="8*"] +|==== +h| +7+^h| Number of Fields / Attributes + +h| Namespace +h| ECS +h| OTel +h| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] +h| image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] +h| image:https://img.shields.io/badge/related-f2f4fb?style=flat[relation,title=related] +h| image:https://img.shields.io/badge/metric-cb00cb?style=flat[relation,title=metric] +h| image:https://img.shields.io/badge/conflict-910000?style=flat[relation,title=conflict] + + +| Agent +| 6 +| - +| - +| - +| - +| - +| - + + +| Android +| - +| 1 +| - +| - +| - +| +| - + + +| artifact +| - +| 7 +| - +| - +| - +| +| - + + +| Autonomous System +| 2 +| - +| - +| - +| - +| - +| - + + +| ASP.NET Core +| - +| 7 +| - +| - +| - +| +| - + + +| General AWS +| - +| 42 +| - +| - +| - +| +| - + + +| az +| - +| 2 +| - +| - +| - +| +| - + + +| Base +| 4 +| - +| - +| - +| - +| - +| - + + +| Browser +| - +| 4 +| - +| - +| - +| +| - + + +| cicd +| - +| 6 +| - +| - +| - +| +| - + + +| Client +| 12 +| 2 +| 2 +| - +| - +| - +| - + + +| Cloud +| 11 +| 6 +| 4 +| 1 +| - +| - +| - + + +| CloudEvents +| - +| 5 +| - +| - +| - +| +| - + + +| cloudfoundry +| - +| 11 +| - +| - +| - +| +| - + + +| Code +| - +| 6 +| - +| - +| - +| +| - + + +| Code Signature +| 10 +| - +| - +| - +| - +| - +| - + + +| Container +| 14 +| 13 +| 4 +| 2 +| 1 +| 2 +| - + + +| CPU +| - +| 1 +| - +| - +| - +| +| - + + +| Data Stream +| 3 +| - +| - +| - +| - +| - +| - + + +| General Database +| - +| 27 +| - +| - +| - +| +| - + + +| Deployment +| - +| 4 +| - +| - +| - +| +| - + + +| Destination +| 12 +| 2 +| 2 +| - +| - +| - +| - + + +| Device +| 5 +| 4 +| 4 +| - +| - +| - +| - + + +| Disk +| - +| 1 +| - +| - +| - +| +| - + + +| DLL +| 2 +| - +| - +| - +| - +| - +| - + + +| DNS +| 18 +| 1 +| 1 +| - +| - +| - +| - + + +| .NET +| - +| 1 +| - +| - +| - +| +| - + + +| ECS +| 1 +| - +| - +| - +| - +| - +| - + + +| ELF Header +| 38 +| - +| - +| - +| - +| - +| - + + +| Email +| 19 +| - +| - +| - +| - +| - +| - + + +| Error +| 5 +| 1 +| 1 +| 2 +| - +| - +| - + + +| Event +| 26 +| 1 +| - +| - +| - +| - +| - + + +| Exception +| - +| 4 +| - +| - +| - +| +| - + + +| FaaS +| 7 +| 16 +| 3 +| 2 +| - +| - +| - + + +| Feature Flag +| - +| 8 +| - +| - +| - +| +| - + + +| File +| 22 +| 18 +| 11 +| 7 +| - +| - +| - + + +| GCP Client +| - +| 5 +| - +| - +| - +| +| - + + +| GenAI +| - +| 22 +| - +| - +| - +| +| - + + +| Geo +| 11 +| 7 +| 1 +| 4 +| 2 +| - +| - + + +| Go +| - +| 1 +| - +| - +| - +| +| - + + +| GraphQL +| - +| 3 +| - +| - +| - +| +| - + + +| Group +| 3 +| - +| - +| - +| - +| - +| - + + +| Hash +| 8 +| - +| - +| - +| - +| - +| - + + +| Heroku +| - +| 3 +| - +| - +| - +| +| - + + +| Host +| 18 +| 15 +| 5 +| 1 +| - +| 8 +| - + + +| HTTP +| 13 +| 12 +| 1 +| 5 +| 2 +| - +| 1 + + +| hw +| - +| 5 +| - +| - +| - +| +| - + + +| Interface +| 3 +| - +| - +| - +| - +| - +| - + + +| Java Virtual Machine (JVM) +| - +| 7 +| - +| - +| - +| +| - + + +| Kubernetes +| - +| 26 +| - +| - +| - +| +| - + + +| linux +| - +| 1 +| - +| - +| - +| +| - + + +| Log +| 18 +| 7 +| 1 +| - +| - +| - +| - + + +| Mach-O Header +| 16 +| - +| - +| - +| - +| - +| - + + +| General Messaging +| - +| 37 +| - +| - +| - +| +| - + + +| Network +| 12 +| 16 +| 2 +| 1 +| - +| - +| - + + +| Node.js +| - +| 1 +| - +| - +| - +| +| - + + +| Observer +| 13 +| - +| - +| - +| - +| - +| - + + +| Open Container Initiative (OCI) +| - +| 1 +| - +| - +| - +| +| - + + +| OpenTracing +| - +| 1 +| - +| - +| - +| +| - + + +| Orchestrator +| 15 +| - +| - +| - +| - +| - +| - + + +| Organization +| 2 +| - +| - +| - +| - +| - +| - + + +| Operating System +| 7 +| 5 +| 2 +| - +| - +| - +| 1 + + +| OTel +| - +| 4 +| - +| - +| - +| +| - + + +| Package +| 13 +| - +| - +| - +| - +| - +| - + + +| PE Header +| 23 +| - +| - +| - +| - +| - +| - + + +| Peer +| - +| 1 +| - +| - +| - +| +| - + + +| Process +| 37 +| 33 +| 15 +| - +| - +| - +| - + + +| profile +| - +| 1 +| - +| - +| - +| +| - + + +| Registry +| 7 +| - +| - +| - +| - +| - +| - + + +| Related +| 4 +| - +| - +| - +| - +| - +| - + + +| Risk information +| 6 +| - +| - +| - +| - +| - +| - + + +| Remote Procedure Call (RPC) +| - +| 17 +| - +| - +| - +| +| - + + +| Rule +| 10 +| - +| - +| - +| - +| - +| - + + +| Server +| 12 +| 2 +| 2 +| - +| - +| - +| - + + +| Service +| 11 +| 4 +| 2 +| 2 +| - +| - +| - + + +| Session +| - +| 2 +| - +| - +| - +| +| - + + +| SignalR +| - +| 2 +| - +| - +| - +| +| - + + +| Source +| 12 +| 2 +| 2 +| - +| - +| - +| - + + +| General System +| - +| 12 +| - +| - +| - +| +| - + + +| Telemetry +| - +| 5 +| - +| - +| - +| +| - + + +| test +| - +| 4 +| - +| - +| - +| +| - + + +| Thread +| - +| 2 +| - +| - +| - +| +| - + + +| Threat +| 65 +| - +| - +| - +| - +| - +| - + + +| TLS +| 29 +| 28 +| 26 +| - +| - +| - +| - + + +| Tracing +| 3 +| - +| - +| - +| - +| - +| - + + +| URL +| 14 +| 13 +| 12 +| - +| - +| - +| - + + +| User +| 7 +| 6 +| 6 +| - +| - +| - +| - + + +| User agent +| 4 +| 4 +| 3 +| - +| - +| - +| - + + +| V8 JS +| - +| 2 +| - +| - +| - +| +| - + + +| vcs +| - +| 13 +| - +| - +| - +| +| - + + +| VLAN +| 2 +| - +| - +| - +| - +| - +| - + + +| Volume +| 16 +| - +| - +| - +| - +| - +| - + + +| Vulnerability +| 13 +| - +| - +| - +| - +| - +| - + + +| Web Engine +| - +| 3 +| - +| - +| - +| +| - + + +| x509 Certificate +| 24 +| - +| - +| - +| - +| - +| - + +|==== diff --git a/generated/ecs/ecs_flat.yml b/generated/ecs/ecs_flat.yml index 3ab5bc75d5..33f1f30c9d 100644 --- a/generated/ecs/ecs_flat.yml +++ b/generated/ecs/ecs_flat.yml @@ -112,6 +112,9 @@ client.address: level: extended name: address normalize: [] + otel: + - relation: match + stability: stable short: Client network address. type: keyword client.as.number: @@ -375,6 +378,9 @@ client.port: level: core name: port normalize: [] + otel: + - relation: match + stability: stable short: Port of the client. type: long client.registered_domain: @@ -572,6 +578,9 @@ cloud.account.id: level: extended name: account.id normalize: [] + otel: + - relation: match + stability: experimental short: The cloud account or organization id. type: keyword cloud.account.name: @@ -597,6 +606,9 @@ cloud.availability_zone: level: extended name: availability_zone normalize: [] + otel: + - relation: match + stability: experimental short: Availability zone in which this host, resource, or service is located. type: keyword cloud.instance.id: @@ -813,6 +825,9 @@ cloud.provider: level: extended name: provider normalize: [] + otel: + - relation: match + stability: experimental short: Name of the cloud provider. type: keyword cloud.region: @@ -824,6 +839,9 @@ cloud.region: level: extended name: region normalize: [] + otel: + - relation: match + stability: experimental short: Region in which this host, resource, or service is located. type: keyword cloud.service.name: @@ -839,6 +857,10 @@ cloud.service.name: level: extended name: service.name normalize: [] + otel: + - attribute: cloud.platform + relation: equivalent + stability: experimental short: The cloud service name. type: keyword cloud.target.account.id: @@ -995,6 +1017,10 @@ container.cpu.usage: level: extended name: cpu.usage normalize: [] + otel: + - metric: container.cpu.usage + relation: metric + stability: experimental scaling_factor: 1000 short: Percent CPU used, between 0 and 1. type: scaled_float @@ -1026,6 +1052,9 @@ container.id: level: core name: id normalize: [] + otel: + - relation: match + stability: experimental short: Unique container id. type: keyword container.image.hash.all: @@ -1040,6 +1069,10 @@ container.image.hash.all: name: image.hash.all normalize: - array + otel: + - attribute: container.image.repo_digests + relation: equivalent + stability: experimental short: An array of digests of the image the container was built on. type: keyword container.image.name: @@ -1050,6 +1083,9 @@ container.image.name: level: extended name: image.name normalize: [] + otel: + - relation: match + stability: experimental short: Name of the image the container was built on. type: keyword container.image.tag: @@ -1061,6 +1097,10 @@ container.image.tag: name: image.tag normalize: - array + otel: + - attribute: container.image.tags + relation: equivalent + stability: experimental short: Container image tags. type: keyword container.labels: @@ -1071,6 +1111,10 @@ container.labels: name: labels normalize: [] object_type: keyword + otel: + - attribute: container.label + relation: related + stability: experimental short: Image labels. type: object container.memory.usage: @@ -1081,6 +1125,10 @@ container.memory.usage: level: extended name: memory.usage normalize: [] + otel: + - metric: container.memory.usage + relation: metric + stability: experimental scaling_factor: 1000 short: Percent memory used, between 0 and 1. type: scaled_float @@ -1092,6 +1140,9 @@ container.name: level: extended name: name normalize: [] + otel: + - relation: match + stability: experimental short: Container name. type: keyword container.network.egress.bytes: @@ -1123,6 +1174,9 @@ container.runtime: level: extended name: runtime normalize: [] + otel: + - relation: match + stability: experimental short: Runtime managing this container. type: keyword container.security_context.privileged: @@ -1193,6 +1247,9 @@ destination.address: level: extended name: address normalize: [] + otel: + - relation: match + stability: experimental short: Destination network address. type: keyword destination.as.number: @@ -1455,6 +1512,9 @@ destination.port: level: core name: port normalize: [] + otel: + - relation: match + stability: experimental short: Port of the destination. type: long destination.registered_domain: @@ -1657,6 +1717,9 @@ device.id: level: extended name: id normalize: [] + otel: + - relation: match + stability: experimental short: The unique identifier of a device. type: keyword device.manufacturer: @@ -1668,6 +1731,9 @@ device.manufacturer: level: extended name: manufacturer normalize: [] + otel: + - relation: match + stability: experimental short: The vendor name of the device manufacturer. type: keyword device.model.identifier: @@ -1679,6 +1745,9 @@ device.model.identifier: level: extended name: model.identifier normalize: [] + otel: + - relation: match + stability: experimental short: The machine readable identifier of the device model. type: keyword device.model.name: @@ -1690,6 +1759,9 @@ device.model.name: level: extended name: model.name normalize: [] + otel: + - relation: match + stability: experimental short: The human readable marketing name of the device model. type: keyword device.serial_number: @@ -2394,6 +2466,9 @@ dns.question.name: level: extended name: question.name normalize: [] + otel: + - relation: match + stability: experimental short: The name being queried. type: keyword dns.question.registered_domain: @@ -2862,6 +2937,10 @@ error.message: level: core name: message normalize: [] + otel: + - attribute: exception.message + relation: equivalent + stability: stable short: Error message. type: match_only_text error.stack_trace: @@ -2875,6 +2954,10 @@ error.stack_trace: type: match_only_text name: stack_trace normalize: [] + otel: + - attribute: exception.stacktrace + relation: equivalent + stability: stable short: The stack trace of this error in plain text. type: wildcard error.type: @@ -2886,6 +2969,9 @@ error.type: level: extended name: type normalize: [] + otel: + - relation: match + stability: stable short: The type of the error, for example the class name of the exception. type: keyword event.action: @@ -3753,6 +3839,9 @@ faas.coldstart: level: extended name: coldstart normalize: [] + otel: + - relation: match + stability: experimental short: Boolean value indicating a cold start of a function. type: boolean faas.execution: @@ -3764,6 +3853,10 @@ faas.execution: level: extended name: execution normalize: [] + otel: + - attribute: faas.invocation_id + relation: equivalent + stability: experimental short: The execution ID of the current function execution. type: keyword faas.id: @@ -3789,6 +3882,9 @@ faas.name: level: extended name: name normalize: [] + otel: + - relation: match + stability: experimental short: The name of a serverless function. type: keyword faas.trigger.request_id: @@ -3817,6 +3913,10 @@ faas.trigger.type: level: extended name: trigger.type normalize: [] + otel: + - attribute: faas.trigger + relation: equivalent + stability: experimental short: The trigger for the function execution. type: keyword faas.version: @@ -3828,6 +3928,9 @@ faas.version: level: extended name: version normalize: [] + otel: + - relation: match + stability: experimental short: The version of a serverless function. type: keyword file.accessed: @@ -3839,6 +3942,9 @@ file.accessed: level: extended name: accessed normalize: [] + otel: + - relation: match + stability: experimental short: Last time the file was accessed. type: date file.attributes: @@ -3855,6 +3961,9 @@ file.attributes: name: attributes normalize: - array + otel: + - relation: match + stability: experimental short: Array of file attributes. type: keyword file.code_signature.digest_algorithm: @@ -4003,6 +4112,9 @@ file.created: level: extended name: created normalize: [] + otel: + - relation: match + stability: experimental short: File creation time. type: date file.ctime: @@ -4015,6 +4127,10 @@ file.ctime: level: extended name: ctime normalize: [] + otel: + - attribute: file.changed + relation: equivalent + stability: experimental short: Last time the file attributes or metadata changed. type: date file.device: @@ -4038,6 +4154,9 @@ file.directory: level: extended name: directory normalize: [] + otel: + - relation: match + stability: experimental short: Directory where the file is located. type: keyword file.drive_letter: @@ -4508,6 +4627,9 @@ file.extension: level: extended name: extension normalize: [] + otel: + - relation: match + stability: experimental short: File extension, excluding the leading dot. type: keyword file.fork_name: @@ -4531,6 +4653,9 @@ file.fork_name: level: extended name: fork_name normalize: [] + otel: + - relation: match + stability: experimental short: A fork is additional data associated with a filesystem object. type: keyword file.gid: @@ -4542,6 +4667,10 @@ file.gid: level: extended name: gid normalize: [] + otel: + - attribute: file.group.id + relation: equivalent + stability: experimental short: Primary group ID (GID) of the file. type: keyword file.group: @@ -4553,6 +4682,10 @@ file.group: level: extended name: group normalize: [] + otel: + - attribute: file.group.name + relation: equivalent + stability: experimental short: Primary group name of the file. type: keyword file.hash.cdhash: @@ -4655,6 +4788,9 @@ file.inode: level: extended name: inode normalize: [] + otel: + - relation: match + stability: experimental short: Inode representing the file in the filesystem. type: keyword file.macho.go_import_hash: @@ -4877,6 +5013,9 @@ file.mode: level: extended name: mode normalize: [] + otel: + - relation: match + stability: experimental short: Mode of the file in octal representation. type: keyword file.mtime: @@ -4886,6 +5025,10 @@ file.mtime: level: extended name: mtime normalize: [] + otel: + - attribute: file.modified + relation: equivalent + stability: experimental short: Last time the file content was modified. type: date file.name: @@ -4897,6 +5040,9 @@ file.name: level: extended name: name normalize: [] + otel: + - relation: match + stability: experimental short: Name of the file including the extension, without the directory. type: keyword file.owner: @@ -4908,6 +5054,10 @@ file.owner: level: extended name: owner normalize: [] + otel: + - attribute: file.owner.name + relation: equivalent + stability: experimental short: File owner's username. type: keyword file.path: @@ -4924,6 +5074,9 @@ file.path: type: match_only_text name: path normalize: [] + otel: + - relation: match + stability: experimental short: Full path to the file, including the file name. type: keyword file.pe.architecture: @@ -5222,6 +5375,9 @@ file.size: level: extended name: size normalize: [] + otel: + - relation: match + stability: experimental short: File size in bytes. type: long file.target_path: @@ -5236,6 +5392,10 @@ file.target_path: type: match_only_text name: target_path normalize: [] + otel: + - attribute: file.symbolic_link.target_path + relation: equivalent + stability: experimental short: Target path for symlinks. type: keyword file.type: @@ -5258,6 +5418,10 @@ file.uid: level: extended name: uid normalize: [] + otel: + - attribute: file.owner.id + relation: equivalent + stability: experimental short: The user ID (UID) or security identifier (SID) of the file owner. type: keyword file.x509.alternative_names: @@ -5606,6 +5770,10 @@ host.architecture: level: core name: architecture normalize: [] + otel: + - attribute: host.arch + relation: equivalent + stability: experimental short: Operating system architecture. type: keyword host.boot.id: @@ -5636,6 +5804,10 @@ host.cpu.usage: level: extended name: cpu.usage normalize: [] + otel: + - metric: system.cpu.utilization + relation: metric + stability: experimental scaling_factor: 1000 short: Percent CPU used, between 0 and 1. type: scaled_float @@ -5647,6 +5819,10 @@ host.disk.read.bytes: level: extended name: disk.read.bytes normalize: [] + otel: + - metric: system.disk.io + relation: metric + stability: experimental short: The number of bytes read by all disks. type: long host.disk.write.bytes: @@ -5657,6 +5833,10 @@ host.disk.write.bytes: level: extended name: disk.write.bytes normalize: [] + otel: + - metric: system.disk.io + relation: metric + stability: experimental short: The number of bytes written on all disks. type: long host.domain: @@ -5837,6 +6017,9 @@ host.id: level: core name: id normalize: [] + otel: + - relation: match + stability: experimental short: Unique host id. type: keyword host.ip: @@ -5847,6 +6030,9 @@ host.ip: name: ip normalize: - array + otel: + - relation: match + stability: experimental short: Host ip addresses. type: ip host.mac: @@ -5863,6 +6049,9 @@ host.mac: name: mac normalize: - array + otel: + - relation: match + stability: experimental pattern: ^[A-F0-9]{2}(-[A-F0-9]{2}){5,}$ short: Host MAC addresses. type: keyword @@ -5878,6 +6067,9 @@ host.name: level: core name: name normalize: [] + otel: + - relation: match + stability: experimental short: Name of the host. type: keyword host.network.egress.bytes: @@ -5888,6 +6080,10 @@ host.network.egress.bytes: level: extended name: network.egress.bytes normalize: [] + otel: + - metric: system.network.io + relation: metric + stability: experimental short: The number of bytes sent on all network interfaces. type: long host.network.egress.packets: @@ -5898,6 +6094,10 @@ host.network.egress.packets: level: extended name: network.egress.packets normalize: [] + otel: + - metric: system.network.packets + relation: metric + stability: experimental short: The number of packets sent on all network interfaces. type: long host.network.ingress.bytes: @@ -5908,6 +6108,10 @@ host.network.ingress.bytes: level: extended name: network.ingress.bytes normalize: [] + otel: + - metric: system.network.io + relation: metric + stability: experimental short: The number of bytes received on all network interfaces. type: long host.network.ingress.packets: @@ -5918,6 +6122,10 @@ host.network.ingress.packets: level: extended name: network.ingress.packets normalize: [] + otel: + - metric: system.network.packets + relation: metric + stability: experimental short: The number of packets received on all network interfaces. type: long host.os.family: @@ -6129,6 +6337,9 @@ host.type: level: core name: type normalize: [] + otel: + - relation: match + stability: experimental short: Type of host. type: keyword host.uptime: @@ -6139,6 +6350,10 @@ host.uptime: level: extended name: uptime normalize: [] + otel: + - metric: system.uptime + relation: metric + stability: experimental short: Seconds the host has been up. type: long http.request.body.bytes: @@ -6150,6 +6365,10 @@ http.request.body.bytes: level: extended name: request.body.bytes normalize: [] + otel: + - attribute: http.request.body.size + relation: equivalent + stability: experimental short: Size in bytes of the request body. type: long http.request.body.content: @@ -6175,6 +6394,10 @@ http.request.bytes: level: extended name: request.bytes normalize: [] + otel: + - attribute: http.request.size + relation: equivalent + stability: experimental short: Total size in bytes of the request (body and headers). type: long http.request.id: @@ -6204,6 +6427,16 @@ http.request.method: level: extended name: request.method normalize: [] + otel: + - attribute: http.request.method_original + relation: equivalent + stability: stable + - attribute: http.request.method + note: "`http.request.method` in SemConv is the known, normalized, upper case value\ + \ of the request method, other than the ECS' `http.request.method` that retains\ + \ casing from the original event. \n" + relation: conflict + stability: stable short: HTTP request method. type: keyword http.request.mime_type: @@ -6241,6 +6474,10 @@ http.response.body.bytes: level: extended name: response.body.bytes normalize: [] + otel: + - attribute: http.response.body.size + relation: equivalent + stability: experimental short: Size in bytes of the response body. type: long http.response.body.content: @@ -6266,6 +6503,10 @@ http.response.bytes: level: extended name: response.bytes normalize: [] + otel: + - attribute: http.response.size + relation: equivalent + stability: experimental short: Total size in bytes of the response (body and headers). type: long http.response.mime_type: @@ -6292,6 +6533,9 @@ http.response.status_code: level: extended name: response.status_code normalize: [] + otel: + - relation: match + stability: stable short: HTTP response status code. type: long http.version: @@ -6303,6 +6547,17 @@ http.version: level: extended name: version normalize: [] + otel: + - attribute: network.protocol.name + relation: related + stability: stable + - attribute: network.protocol.version + note: 'In OTel SemConv, `network.protocol.version` specifies the HTTP version if + the value of `network.protocol.name` is `http`. + + ' + relation: related + stability: stable short: HTTP version. type: keyword labels: @@ -6333,6 +6588,9 @@ log.file.path: level: extended name: file.path normalize: [] + otel: + - relation: match + stability: experimental short: Full path to the log file this event came from. type: keyword log.level: @@ -6740,6 +6998,10 @@ network.protocol: level: core name: protocol normalize: [] + otel: + - attribute: network.protocol.name + relation: equivalent + stability: stable short: Application protocol name. type: keyword network.transport: @@ -6754,6 +7016,9 @@ network.transport: level: core name: transport normalize: [] + otel: + - relation: match + stability: stable short: Protocol Name corresponding to the field `iana_number`. type: keyword network.type: @@ -6768,6 +7033,9 @@ network.type: level: core name: type normalize: [] + otel: + - relation: match + stability: stable short: In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc type: keyword @@ -7685,6 +7953,9 @@ process.args_count: level: extended name: args_count normalize: [] + otel: + - relation: match + stability: experimental short: Length of the process.args array. type: long process.code_signature.digest_algorithm: @@ -7839,6 +8110,9 @@ process.command_line: type: match_only_text name: command_line normalize: [] + otel: + - relation: match + stability: experimental short: Full command line that started the process. type: wildcard process.elf.architecture: @@ -9134,6 +9408,9 @@ process.group_leader.pid: name: pid normalize: [] original_fieldset: process + otel: + - relation: match + stability: experimental short: Process id. type: long process.group_leader.real_group.id: @@ -9507,6 +9784,9 @@ process.interactive: level: extended name: interactive normalize: [] + otel: + - relation: match + stability: experimental short: Whether the process is connected to an interactive shell. type: boolean process.io: @@ -11859,6 +12139,9 @@ process.pid: level: core name: pid normalize: [] + otel: + - relation: match + stability: experimental short: Process id. type: long process.previous.args: @@ -11940,6 +12223,9 @@ process.real_user.id: name: id normalize: [] original_fieldset: user + otel: + - relation: match + stability: experimental short: Unique identifier of the user. type: keyword process.real_user.name: @@ -11956,6 +12242,9 @@ process.real_user.name: name: name normalize: [] original_fieldset: user + otel: + - relation: match + stability: experimental short: Short name or login of the user. type: keyword process.saved_group.id: @@ -11990,6 +12279,9 @@ process.saved_user.id: name: id normalize: [] original_fieldset: user + otel: + - relation: match + stability: experimental short: Unique identifier of the user. type: keyword process.saved_user.name: @@ -12006,6 +12298,9 @@ process.saved_user.name: name: name normalize: [] original_fieldset: user + otel: + - relation: match + stability: experimental short: Short name or login of the user. type: keyword process.session_leader.args: @@ -12282,6 +12577,9 @@ process.session_leader.pid: name: pid normalize: [] original_fieldset: process + otel: + - relation: match + stability: experimental short: Process id. type: long process.session_leader.real_group.id: @@ -12643,6 +12941,9 @@ process.title: type: match_only_text name: title normalize: [] + otel: + - relation: match + stability: experimental short: Process title. type: keyword process.tty: @@ -12727,6 +13028,9 @@ process.user.id: name: id normalize: [] original_fieldset: user + otel: + - relation: match + stability: experimental short: Unique identifier of the user. type: keyword process.user.name: @@ -12743,6 +13047,9 @@ process.user.name: name: name normalize: [] original_fieldset: user + otel: + - relation: match + stability: experimental short: Short name or login of the user. type: keyword process.vpid: @@ -12758,6 +13065,9 @@ process.vpid: level: core name: vpid normalize: [] + otel: + - relation: match + stability: experimental short: Virtual process id. type: long process.working_directory: @@ -12773,6 +13083,9 @@ process.working_directory: type: match_only_text name: working_directory normalize: [] + otel: + - relation: match + stability: experimental short: The working directory of the process. type: keyword registry.data.bytes: @@ -13044,6 +13357,9 @@ server.address: level: extended name: address normalize: [] + otel: + - relation: match + stability: stable short: Server network address. type: keyword server.as.number: @@ -13307,6 +13623,9 @@ server.port: level: core name: port normalize: [] + otel: + - relation: match + stability: stable short: Port of the server. type: long server.registered_domain: @@ -13520,6 +13839,10 @@ service.environment: level: extended name: environment normalize: [] + otel: + - attribute: deployment.environment.name + relation: equivalent + stability: experimental short: Environment of the service. type: keyword service.ephemeral_id: @@ -13570,6 +13893,9 @@ service.name: level: core name: name normalize: [] + otel: + - relation: match + stability: stable short: Name of the service. type: keyword service.node.name: @@ -13592,6 +13918,10 @@ service.node.name: level: extended name: node.name normalize: [] + otel: + - attribute: service.instance.id + relation: equivalent + stability: experimental short: Name of the service node. type: keyword service.node.role: @@ -14076,6 +14406,9 @@ service.version: level: core name: version normalize: [] + otel: + - relation: match + stability: stable short: Version of the service. type: keyword source.address: @@ -14091,6 +14424,9 @@ source.address: level: extended name: address normalize: [] + otel: + - relation: match + stability: experimental short: Source network address. type: keyword source.as.number: @@ -14354,6 +14690,9 @@ source.port: level: core name: port normalize: [] + otel: + - relation: match + stability: experimental short: Port of the source. type: long source.registered_domain: @@ -20120,6 +20459,9 @@ tls.cipher: level: extended name: cipher normalize: [] + otel: + - relation: match + stability: experimental short: String indicating the cipher used during the current connection. type: keyword tls.client.certificate: @@ -20133,6 +20475,9 @@ tls.client.certificate: level: extended name: client.certificate normalize: [] + otel: + - relation: match + stability: experimental short: PEM-encoded stand-alone certificate offered by the client. type: keyword tls.client.certificate_chain: @@ -20147,6 +20492,9 @@ tls.client.certificate_chain: name: client.certificate_chain normalize: - array + otel: + - relation: match + stability: experimental short: Array of PEM-encoded certificates that make up the certificate chain offered by the client. type: keyword @@ -20161,6 +20509,9 @@ tls.client.hash.md5: level: extended name: client.hash.md5 normalize: [] + otel: + - relation: match + stability: experimental short: Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the client. type: keyword @@ -20175,6 +20526,9 @@ tls.client.hash.sha1: level: extended name: client.hash.sha1 normalize: [] + otel: + - relation: match + stability: experimental short: Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the client. type: keyword @@ -20189,6 +20543,9 @@ tls.client.hash.sha256: level: extended name: client.hash.sha256 normalize: [] + otel: + - relation: match + stability: experimental short: Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the client. type: keyword @@ -20202,6 +20559,9 @@ tls.client.issuer: level: extended name: client.issuer normalize: [] + otel: + - relation: match + stability: experimental short: Distinguished name of subject of the issuer of the x.509 certificate presented by the client. type: keyword @@ -20215,6 +20575,9 @@ tls.client.ja3: level: extended name: client.ja3 normalize: [] + otel: + - relation: match + stability: experimental short: A hash that identifies clients based on how they perform an SSL/TLS handshake. type: keyword tls.client.not_after: @@ -20226,6 +20589,9 @@ tls.client.not_after: level: extended name: client.not_after normalize: [] + otel: + - relation: match + stability: experimental short: Date/Time indicating when client certificate is no longer considered valid. type: date tls.client.not_before: @@ -20236,6 +20602,9 @@ tls.client.not_before: level: extended name: client.not_before normalize: [] + otel: + - relation: match + stability: experimental short: Date/Time indicating when client certificate is first considered valid. type: date tls.client.server_name: @@ -20261,6 +20630,9 @@ tls.client.subject: level: extended name: client.subject normalize: [] + otel: + - relation: match + stability: experimental short: Distinguished name of subject of the x.509 certificate presented by the client. type: keyword tls.client.supported_ciphers: @@ -20274,6 +20646,9 @@ tls.client.supported_ciphers: name: client.supported_ciphers normalize: - array + otel: + - relation: match + stability: experimental short: Array of ciphers offered by the client during the client hello. type: keyword tls.client.x509.alternative_names: @@ -20590,6 +20965,9 @@ tls.curve: level: extended name: curve normalize: [] + otel: + - relation: match + stability: experimental short: String indicating the curve used for the given cipher, when applicable. type: keyword tls.established: @@ -20600,6 +20978,9 @@ tls.established: level: extended name: established normalize: [] + otel: + - relation: match + stability: experimental short: Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel. type: boolean @@ -20614,6 +20995,9 @@ tls.next_protocol: level: extended name: next_protocol normalize: [] + otel: + - relation: match + stability: experimental short: String indicating the protocol being tunneled. type: keyword tls.resumed: @@ -20624,6 +21008,9 @@ tls.resumed: level: extended name: resumed normalize: [] + otel: + - relation: match + stability: experimental short: Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation. type: boolean @@ -20638,6 +21025,9 @@ tls.server.certificate: level: extended name: server.certificate normalize: [] + otel: + - relation: match + stability: experimental short: PEM-encoded stand-alone certificate offered by the server. type: keyword tls.server.certificate_chain: @@ -20652,6 +21042,9 @@ tls.server.certificate_chain: name: server.certificate_chain normalize: - array + otel: + - relation: match + stability: experimental short: Array of PEM-encoded certificates that make up the certificate chain offered by the server. type: keyword @@ -20666,6 +21059,9 @@ tls.server.hash.md5: level: extended name: server.hash.md5 normalize: [] + otel: + - relation: match + stability: experimental short: Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. type: keyword @@ -20680,6 +21076,9 @@ tls.server.hash.sha1: level: extended name: server.hash.sha1 normalize: [] + otel: + - relation: match + stability: experimental short: Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. type: keyword @@ -20694,6 +21093,9 @@ tls.server.hash.sha256: level: extended name: server.hash.sha256 normalize: [] + otel: + - relation: match + stability: experimental short: Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. type: keyword @@ -20706,6 +21108,9 @@ tls.server.issuer: level: extended name: server.issuer normalize: [] + otel: + - relation: match + stability: experimental short: Subject of the issuer of the x.509 certificate presented by the server. type: keyword tls.server.ja3s: @@ -20718,6 +21123,9 @@ tls.server.ja3s: level: extended name: server.ja3s normalize: [] + otel: + - relation: match + stability: experimental short: A hash that identifies servers based on how they perform an SSL/TLS handshake. type: keyword tls.server.not_after: @@ -20729,6 +21137,9 @@ tls.server.not_after: level: extended name: server.not_after normalize: [] + otel: + - relation: match + stability: experimental short: Timestamp indicating when server certificate is no longer considered valid. type: date tls.server.not_before: @@ -20739,6 +21150,9 @@ tls.server.not_before: level: extended name: server.not_before normalize: [] + otel: + - relation: match + stability: experimental short: Timestamp indicating when server certificate is first considered valid. type: date tls.server.subject: @@ -20750,6 +21164,9 @@ tls.server.subject: level: extended name: server.subject normalize: [] + otel: + - relation: match + stability: experimental short: Subject of the x.509 certificate presented by the server. type: keyword tls.server.x509.alternative_names: @@ -21122,6 +21539,9 @@ url.domain: level: extended name: domain normalize: [] + otel: + - relation: match + stability: experimental short: Domain of the url. type: keyword url.extension: @@ -21142,6 +21562,9 @@ url.extension: level: extended name: extension normalize: [] + otel: + - relation: match + stability: experimental short: File extension from the request url, excluding the leading dot. type: keyword url.fragment: @@ -21154,6 +21577,9 @@ url.fragment: level: extended name: fragment normalize: [] + otel: + - relation: match + stability: stable short: Portion of the url after the `#`. type: keyword url.full: @@ -21169,6 +21595,9 @@ url.full: type: match_only_text name: full normalize: [] + otel: + - relation: match + stability: stable short: Full unparsed URL. type: wildcard url.original: @@ -21188,6 +21617,9 @@ url.original: type: match_only_text name: original normalize: [] + otel: + - relation: match + stability: experimental short: Unmodified original url as seen in the event source. type: wildcard url.password: @@ -21207,6 +21639,9 @@ url.path: level: extended name: path normalize: [] + otel: + - relation: match + stability: stable short: Path of the request, such as "/search". type: wildcard url.port: @@ -21218,6 +21653,9 @@ url.port: level: extended name: port normalize: [] + otel: + - relation: match + stability: experimental short: Port of the request, such as 443. type: long url.query: @@ -21234,6 +21672,9 @@ url.query: level: extended name: query normalize: [] + otel: + - relation: match + stability: stable short: Query string of the request. type: keyword url.registered_domain: @@ -21251,6 +21692,9 @@ url.registered_domain: level: extended name: registered_domain normalize: [] + otel: + - relation: match + stability: experimental short: The highest registered url domain, stripped of the subdomain. type: keyword url.scheme: @@ -21264,6 +21708,9 @@ url.scheme: level: extended name: scheme normalize: [] + otel: + - relation: match + stability: stable short: Scheme of the url. type: keyword url.subdomain: @@ -21282,6 +21729,9 @@ url.subdomain: level: extended name: subdomain normalize: [] + otel: + - relation: match + stability: experimental short: The subdomain of the domain. type: keyword url.top_level_domain: @@ -21299,6 +21749,9 @@ url.top_level_domain: level: extended name: top_level_domain normalize: [] + otel: + - relation: match + stability: experimental short: The effective top level domain (com, org, net, co.uk). type: keyword url.username: @@ -21593,6 +22046,9 @@ user.email: level: extended name: email normalize: [] + otel: + - relation: match + stability: experimental short: User email address. type: keyword user.full_name: @@ -21608,6 +22064,9 @@ user.full_name: type: match_only_text name: full_name normalize: [] + otel: + - relation: match + stability: experimental short: User's full name, if available. type: keyword user.group.domain: @@ -21657,6 +22116,9 @@ user.hash: level: extended name: hash normalize: [] + otel: + - relation: match + stability: experimental short: Unique user hash to correlate information for a user in anonymized form. type: keyword user.id: @@ -21668,6 +22130,9 @@ user.id: level: core name: id normalize: [] + otel: + - relation: match + stability: experimental short: Unique identifier of the user. type: keyword user.name: @@ -21683,6 +22148,9 @@ user.name: type: match_only_text name: name normalize: [] + otel: + - relation: match + stability: experimental short: Short name or login of the user. type: keyword user.risk.calculated_level: @@ -21775,6 +22243,9 @@ user.roles: name: roles normalize: - array + otel: + - relation: match + stability: experimental short: Array of user roles at the time of the event. type: keyword user.target.domain: @@ -21928,6 +22399,9 @@ user_agent.name: level: extended name: name normalize: [] + otel: + - relation: match + stability: experimental short: Name of the user agent. type: keyword user_agent.original: @@ -21944,6 +22418,9 @@ user_agent.original: type: match_only_text name: original normalize: [] + otel: + - relation: match + stability: stable short: Unparsed user_agent string. type: keyword user_agent.os.family: @@ -22060,6 +22537,9 @@ user_agent.version: level: extended name: version normalize: [] + otel: + - relation: match + stability: experimental short: Version of the user agent. type: keyword volume.bus_type: diff --git a/generated/ecs/ecs_nested.yml b/generated/ecs/ecs_nested.yml index c068d535a1..ee92180b32 100644 --- a/generated/ecs/ecs_nested.yml +++ b/generated/ecs/ecs_nested.yml @@ -262,6 +262,9 @@ client: level: extended name: address normalize: [] + otel: + - relation: match + stability: stable short: Client network address. type: keyword client.as.number: @@ -527,6 +530,9 @@ client: level: core name: port normalize: [] + otel: + - relation: match + stability: stable short: Port of the client. type: long client.registered_domain: @@ -748,6 +754,9 @@ cloud: level: extended name: account.id normalize: [] + otel: + - relation: match + stability: experimental short: The cloud account or organization id. type: keyword cloud.account.name: @@ -773,6 +782,9 @@ cloud: level: extended name: availability_zone normalize: [] + otel: + - relation: match + stability: experimental short: Availability zone in which this host, resource, or service is located. type: keyword cloud.instance.id: @@ -989,6 +1001,9 @@ cloud: level: extended name: provider normalize: [] + otel: + - relation: match + stability: experimental short: Name of the cloud provider. type: keyword cloud.region: @@ -1000,6 +1015,9 @@ cloud: level: extended name: region normalize: [] + otel: + - relation: match + stability: experimental short: Region in which this host, resource, or service is located. type: keyword cloud.service.name: @@ -1015,6 +1033,10 @@ cloud: level: extended name: service.name normalize: [] + otel: + - attribute: cloud.platform + relation: equivalent + stability: experimental short: The cloud service name. type: keyword cloud.target.account.id: @@ -1375,6 +1397,10 @@ container: level: extended name: cpu.usage normalize: [] + otel: + - metric: container.cpu.usage + relation: metric + stability: experimental scaling_factor: 1000 short: Percent CPU used, between 0 and 1. type: scaled_float @@ -1406,6 +1432,9 @@ container: level: core name: id normalize: [] + otel: + - relation: match + stability: experimental short: Unique container id. type: keyword container.image.hash.all: @@ -1420,6 +1449,10 @@ container: name: image.hash.all normalize: - array + otel: + - attribute: container.image.repo_digests + relation: equivalent + stability: experimental short: An array of digests of the image the container was built on. type: keyword container.image.name: @@ -1430,6 +1463,9 @@ container: level: extended name: image.name normalize: [] + otel: + - relation: match + stability: experimental short: Name of the image the container was built on. type: keyword container.image.tag: @@ -1441,6 +1477,10 @@ container: name: image.tag normalize: - array + otel: + - attribute: container.image.tags + relation: equivalent + stability: experimental short: Container image tags. type: keyword container.labels: @@ -1451,6 +1491,10 @@ container: name: labels normalize: [] object_type: keyword + otel: + - attribute: container.label + relation: related + stability: experimental short: Image labels. type: object container.memory.usage: @@ -1461,6 +1505,10 @@ container: level: extended name: memory.usage normalize: [] + otel: + - metric: container.memory.usage + relation: metric + stability: experimental scaling_factor: 1000 short: Percent memory used, between 0 and 1. type: scaled_float @@ -1472,6 +1520,9 @@ container: level: extended name: name normalize: [] + otel: + - relation: match + stability: experimental short: Container name. type: keyword container.network.egress.bytes: @@ -1503,6 +1554,9 @@ container: level: extended name: runtime normalize: [] + otel: + - relation: match + stability: experimental short: Runtime managing this container. type: keyword container.security_context.privileged: @@ -1614,6 +1668,9 @@ destination: level: extended name: address normalize: [] + otel: + - relation: match + stability: experimental short: Destination network address. type: keyword destination.as.number: @@ -1878,6 +1935,9 @@ destination: level: core name: port normalize: [] + otel: + - relation: match + stability: experimental short: Port of the destination. type: long destination.registered_domain: @@ -2110,6 +2170,9 @@ device: level: extended name: id normalize: [] + otel: + - relation: match + stability: experimental short: The unique identifier of a device. type: keyword device.manufacturer: @@ -2121,6 +2184,9 @@ device: level: extended name: manufacturer normalize: [] + otel: + - relation: match + stability: experimental short: The vendor name of the device manufacturer. type: keyword device.model.identifier: @@ -2132,6 +2198,9 @@ device: level: extended name: model.identifier normalize: [] + otel: + - relation: match + stability: experimental short: The machine readable identifier of the device model. type: keyword device.model.name: @@ -2143,6 +2212,9 @@ device: level: extended name: model.name normalize: [] + otel: + - relation: match + stability: experimental short: The human readable marketing name of the device model. type: keyword device.serial_number: @@ -2899,6 +2971,9 @@ dns: level: extended name: question.name normalize: [] + otel: + - relation: match + stability: experimental short: The name being queried. type: keyword dns.question.registered_domain: @@ -3835,6 +3910,10 @@ error: level: core name: message normalize: [] + otel: + - attribute: exception.message + relation: equivalent + stability: stable short: Error message. type: match_only_text error.stack_trace: @@ -3848,6 +3927,10 @@ error: type: match_only_text name: stack_trace normalize: [] + otel: + - attribute: exception.stacktrace + relation: equivalent + stability: stable short: The stack trace of this error in plain text. type: wildcard error.type: @@ -3859,6 +3942,9 @@ error: level: extended name: type normalize: [] + otel: + - relation: match + stability: stable short: The type of the error, for example the class name of the exception. type: keyword group: 2 @@ -4772,6 +4858,9 @@ faas: level: extended name: coldstart normalize: [] + otel: + - relation: match + stability: experimental short: Boolean value indicating a cold start of a function. type: boolean faas.execution: @@ -4783,6 +4872,10 @@ faas: level: extended name: execution normalize: [] + otel: + - attribute: faas.invocation_id + relation: equivalent + stability: experimental short: The execution ID of the current function execution. type: keyword faas.id: @@ -4808,6 +4901,9 @@ faas: level: extended name: name normalize: [] + otel: + - relation: match + stability: experimental short: The name of a serverless function. type: keyword faas.trigger.request_id: @@ -4836,6 +4932,10 @@ faas: level: extended name: trigger.type normalize: [] + otel: + - attribute: faas.trigger + relation: equivalent + stability: experimental short: The trigger for the function execution. type: keyword faas.version: @@ -4847,6 +4947,9 @@ faas: level: extended name: version normalize: [] + otel: + - relation: match + stability: experimental short: The version of a serverless function. type: keyword group: 2 @@ -4873,6 +4976,9 @@ file: level: extended name: accessed normalize: [] + otel: + - relation: match + stability: experimental short: Last time the file was accessed. type: date file.attributes: @@ -4889,6 +4995,9 @@ file: name: attributes normalize: - array + otel: + - relation: match + stability: experimental short: Array of file attributes. type: keyword file.code_signature.digest_algorithm: @@ -5037,6 +5146,9 @@ file: level: extended name: created normalize: [] + otel: + - relation: match + stability: experimental short: File creation time. type: date file.ctime: @@ -5049,6 +5161,10 @@ file: level: extended name: ctime normalize: [] + otel: + - attribute: file.changed + relation: equivalent + stability: experimental short: Last time the file attributes or metadata changed. type: date file.device: @@ -5072,6 +5188,9 @@ file: level: extended name: directory normalize: [] + otel: + - relation: match + stability: experimental short: Directory where the file is located. type: keyword file.drive_letter: @@ -5543,6 +5662,9 @@ file: level: extended name: extension normalize: [] + otel: + - relation: match + stability: experimental short: File extension, excluding the leading dot. type: keyword file.fork_name: @@ -5566,6 +5688,9 @@ file: level: extended name: fork_name normalize: [] + otel: + - relation: match + stability: experimental short: A fork is additional data associated with a filesystem object. type: keyword file.gid: @@ -5577,6 +5702,10 @@ file: level: extended name: gid normalize: [] + otel: + - attribute: file.group.id + relation: equivalent + stability: experimental short: Primary group ID (GID) of the file. type: keyword file.group: @@ -5588,6 +5717,10 @@ file: level: extended name: group normalize: [] + otel: + - attribute: file.group.name + relation: equivalent + stability: experimental short: Primary group name of the file. type: keyword file.hash.cdhash: @@ -5690,6 +5823,9 @@ file: level: extended name: inode normalize: [] + otel: + - relation: match + stability: experimental short: Inode representing the file in the filesystem. type: keyword file.macho.go_import_hash: @@ -5913,6 +6049,9 @@ file: level: extended name: mode normalize: [] + otel: + - relation: match + stability: experimental short: Mode of the file in octal representation. type: keyword file.mtime: @@ -5922,6 +6061,10 @@ file: level: extended name: mtime normalize: [] + otel: + - attribute: file.modified + relation: equivalent + stability: experimental short: Last time the file content was modified. type: date file.name: @@ -5933,6 +6076,9 @@ file: level: extended name: name normalize: [] + otel: + - relation: match + stability: experimental short: Name of the file including the extension, without the directory. type: keyword file.owner: @@ -5944,6 +6090,10 @@ file: level: extended name: owner normalize: [] + otel: + - attribute: file.owner.name + relation: equivalent + stability: experimental short: File owner's username. type: keyword file.path: @@ -5960,6 +6110,9 @@ file: type: match_only_text name: path normalize: [] + otel: + - relation: match + stability: experimental short: Full path to the file, including the file name. type: keyword file.pe.architecture: @@ -6259,6 +6412,9 @@ file: level: extended name: size normalize: [] + otel: + - relation: match + stability: experimental short: File size in bytes. type: long file.target_path: @@ -6273,6 +6429,10 @@ file: type: match_only_text name: target_path normalize: [] + otel: + - attribute: file.symbolic_link.target_path + relation: equivalent + stability: experimental short: Target path for symlinks. type: keyword file.type: @@ -6295,6 +6455,10 @@ file: level: extended name: uid normalize: [] + otel: + - attribute: file.owner.id + relation: equivalent + stability: experimental short: The user ID (UID) or security identifier (SID) of the file owner. type: keyword file.x509.alternative_names: @@ -6662,6 +6826,10 @@ geo: level: core name: city_name normalize: [] + otel: + - attribute: geo.locality.name + relation: equivalent + stability: experimental short: City name. type: keyword geo.continent_code: @@ -6673,6 +6841,10 @@ geo: level: core name: continent_code normalize: [] + otel: + - attribute: geo.continent.code + relation: equivalent + stability: experimental short: Continent code. type: keyword geo.continent_name: @@ -6695,6 +6867,10 @@ geo: level: core name: country_iso_code normalize: [] + otel: + - attribute: geo.country.iso_code + relation: equivalent + stability: experimental short: Country ISO code. type: keyword geo.country_name: @@ -6716,6 +6892,13 @@ geo: level: core name: location normalize: [] + otel: + - attribute: geo.location.lat + relation: related + stability: experimental + - attribute: geo.location.lon + relation: related + stability: experimental short: Longitude and latitude. type: geo_point geo.name: @@ -6747,6 +6930,9 @@ geo: level: core name: postal_code normalize: [] + otel: + - relation: match + stability: experimental short: Postal code. type: keyword geo.region_iso_code: @@ -6758,6 +6944,10 @@ geo: level: core name: region_iso_code normalize: [] + otel: + - attribute: geo.region.iso_code + relation: equivalent + stability: experimental short: Region ISO code. type: keyword geo.region_name: @@ -7021,6 +7211,10 @@ host: level: core name: architecture normalize: [] + otel: + - attribute: host.arch + relation: equivalent + stability: experimental short: Operating system architecture. type: keyword host.boot.id: @@ -7051,6 +7245,10 @@ host: level: extended name: cpu.usage normalize: [] + otel: + - metric: system.cpu.utilization + relation: metric + stability: experimental scaling_factor: 1000 short: Percent CPU used, between 0 and 1. type: scaled_float @@ -7062,6 +7260,10 @@ host: level: extended name: disk.read.bytes normalize: [] + otel: + - metric: system.disk.io + relation: metric + stability: experimental short: The number of bytes read by all disks. type: long host.disk.write.bytes: @@ -7072,6 +7274,10 @@ host: level: extended name: disk.write.bytes normalize: [] + otel: + - metric: system.disk.io + relation: metric + stability: experimental short: The number of bytes written on all disks. type: long host.domain: @@ -7253,6 +7459,9 @@ host: level: core name: id normalize: [] + otel: + - relation: match + stability: experimental short: Unique host id. type: keyword host.ip: @@ -7263,6 +7472,9 @@ host: name: ip normalize: - array + otel: + - relation: match + stability: experimental short: Host ip addresses. type: ip host.mac: @@ -7280,6 +7492,9 @@ host: name: mac normalize: - array + otel: + - relation: match + stability: experimental pattern: ^[A-F0-9]{2}(-[A-F0-9]{2}){5,}$ short: Host MAC addresses. type: keyword @@ -7295,6 +7510,9 @@ host: level: core name: name normalize: [] + otel: + - relation: match + stability: experimental short: Name of the host. type: keyword host.network.egress.bytes: @@ -7305,6 +7523,10 @@ host: level: extended name: network.egress.bytes normalize: [] + otel: + - metric: system.network.io + relation: metric + stability: experimental short: The number of bytes sent on all network interfaces. type: long host.network.egress.packets: @@ -7315,6 +7537,10 @@ host: level: extended name: network.egress.packets normalize: [] + otel: + - metric: system.network.packets + relation: metric + stability: experimental short: The number of packets sent on all network interfaces. type: long host.network.ingress.bytes: @@ -7325,6 +7551,10 @@ host: level: extended name: network.ingress.bytes normalize: [] + otel: + - metric: system.network.io + relation: metric + stability: experimental short: The number of bytes received on all network interfaces. type: long host.network.ingress.packets: @@ -7335,6 +7565,10 @@ host: level: extended name: network.ingress.packets normalize: [] + otel: + - metric: system.network.packets + relation: metric + stability: experimental short: The number of packets received on all network interfaces. type: long host.os.family: @@ -7547,6 +7781,9 @@ host: level: core name: type normalize: [] + otel: + - relation: match + stability: experimental short: Type of host. type: keyword host.uptime: @@ -7557,6 +7794,10 @@ host: level: extended name: uptime normalize: [] + otel: + - metric: system.uptime + relation: metric + stability: experimental short: Seconds the host has been up. type: long group: 2 @@ -7592,6 +7833,10 @@ http: level: extended name: request.body.bytes normalize: [] + otel: + - attribute: http.request.body.size + relation: equivalent + stability: experimental short: Size in bytes of the request body. type: long http.request.body.content: @@ -7617,6 +7862,10 @@ http: level: extended name: request.bytes normalize: [] + otel: + - attribute: http.request.size + relation: equivalent + stability: experimental short: Total size in bytes of the request (body and headers). type: long http.request.id: @@ -7646,6 +7895,16 @@ http: level: extended name: request.method normalize: [] + otel: + - attribute: http.request.method_original + relation: equivalent + stability: stable + - attribute: http.request.method + note: "`http.request.method` in SemConv is the known, normalized, upper case\ + \ value of the request method, other than the ECS' `http.request.method`\ + \ that retains casing from the original event. \n" + relation: conflict + stability: stable short: HTTP request method. type: keyword http.request.mime_type: @@ -7684,6 +7943,10 @@ http: level: extended name: response.body.bytes normalize: [] + otel: + - attribute: http.response.body.size + relation: equivalent + stability: experimental short: Size in bytes of the response body. type: long http.response.body.content: @@ -7709,6 +7972,10 @@ http: level: extended name: response.bytes normalize: [] + otel: + - attribute: http.response.size + relation: equivalent + stability: experimental short: Total size in bytes of the response (body and headers). type: long http.response.mime_type: @@ -7736,6 +8003,9 @@ http: level: extended name: response.status_code normalize: [] + otel: + - relation: match + stability: stable short: HTTP response status code. type: long http.version: @@ -7747,6 +8017,17 @@ http: level: extended name: version normalize: [] + otel: + - attribute: network.protocol.name + relation: related + stability: stable + - attribute: network.protocol.version + note: 'In OTel SemConv, `network.protocol.version` specifies the HTTP version if + the value of `network.protocol.name` is `http`. + + ' + relation: related + stability: stable short: HTTP version. type: keyword group: 2 @@ -7834,6 +8115,9 @@ log: level: extended name: file.path normalize: [] + otel: + - relation: match + stability: experimental short: Full path to the log file this event came from. type: keyword log.level: @@ -8448,6 +8732,10 @@ network: level: core name: protocol normalize: [] + otel: + - attribute: network.protocol.name + relation: equivalent + stability: stable short: Application protocol name. type: keyword network.transport: @@ -8462,6 +8750,9 @@ network: level: core name: transport normalize: [] + otel: + - relation: match + stability: stable short: Protocol Name corresponding to the field `iana_number`. type: keyword network.type: @@ -8476,6 +8767,9 @@ network: level: core name: type normalize: [] + otel: + - relation: match + stability: stable short: In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc type: keyword @@ -9361,6 +9655,9 @@ os: type: match_only_text name: name normalize: [] + otel: + - relation: match + stability: experimental short: Operating system name, without the version. type: keyword os.platform: @@ -9395,6 +9692,12 @@ os: level: extended name: type normalize: [] + otel: + - attribute: os.type + note: The expected values in ECS for `os.type` do not correspond with the + values defined in semantic conventions! + relation: conflict + stability: experimental short: 'Which commercial OS family (one of: linux, macos, unix, windows, ios or android).' type: keyword @@ -9407,6 +9710,9 @@ os: level: extended name: version normalize: [] + otel: + - relation: match + stability: experimental short: Operating system version as a raw string. type: keyword group: 2 @@ -9909,6 +10215,9 @@ process: level: extended name: args_count normalize: [] + otel: + - relation: match + stability: experimental short: Length of the process.args array. type: long process.code_signature.digest_algorithm: @@ -10063,6 +10372,9 @@ process: type: match_only_text name: command_line normalize: [] + otel: + - relation: match + stability: experimental short: Full command line that started the process. type: wildcard process.elf.architecture: @@ -11359,6 +11671,9 @@ process: name: pid normalize: [] original_fieldset: process + otel: + - relation: match + stability: experimental short: Process id. type: long process.group_leader.real_group.id: @@ -11732,6 +12047,9 @@ process: level: extended name: interactive normalize: [] + otel: + - relation: match + stability: experimental short: Whether the process is connected to an interactive shell. type: boolean process.io: @@ -14092,6 +14410,9 @@ process: level: core name: pid normalize: [] + otel: + - relation: match + stability: experimental short: Process id. type: long process.previous.args: @@ -14173,6 +14494,9 @@ process: name: id normalize: [] original_fieldset: user + otel: + - relation: match + stability: experimental short: Unique identifier of the user. type: keyword process.real_user.name: @@ -14189,6 +14513,9 @@ process: name: name normalize: [] original_fieldset: user + otel: + - relation: match + stability: experimental short: Short name or login of the user. type: keyword process.saved_group.id: @@ -14223,6 +14550,9 @@ process: name: id normalize: [] original_fieldset: user + otel: + - relation: match + stability: experimental short: Unique identifier of the user. type: keyword process.saved_user.name: @@ -14239,6 +14569,9 @@ process: name: name normalize: [] original_fieldset: user + otel: + - relation: match + stability: experimental short: Short name or login of the user. type: keyword process.session_leader.args: @@ -14515,6 +14848,9 @@ process: name: pid normalize: [] original_fieldset: process + otel: + - relation: match + stability: experimental short: Process id. type: long process.session_leader.real_group.id: @@ -14876,6 +15212,9 @@ process: type: match_only_text name: title normalize: [] + otel: + - relation: match + stability: experimental short: Process title. type: keyword process.tty: @@ -14960,6 +15299,9 @@ process: name: id normalize: [] original_fieldset: user + otel: + - relation: match + stability: experimental short: Unique identifier of the user. type: keyword process.user.name: @@ -14976,6 +15318,9 @@ process: name: name normalize: [] original_fieldset: user + otel: + - relation: match + stability: experimental short: Short name or login of the user. type: keyword process.vpid: @@ -14991,6 +15336,9 @@ process: level: core name: vpid normalize: [] + otel: + - relation: match + stability: experimental short: Virtual process id. type: long process.working_directory: @@ -15006,6 +15354,9 @@ process: type: match_only_text name: working_directory normalize: [] + otel: + - relation: match + stability: experimental short: The working directory of the process. type: keyword group: 2 @@ -15635,6 +15986,9 @@ server: level: extended name: address normalize: [] + otel: + - relation: match + stability: stable short: Server network address. type: keyword server.as.number: @@ -15900,6 +16254,9 @@ server: level: core name: port normalize: [] + otel: + - relation: match + stability: stable short: Port of the server. type: long server.registered_domain: @@ -16139,6 +16496,10 @@ service: level: extended name: environment normalize: [] + otel: + - attribute: deployment.environment.name + relation: equivalent + stability: experimental short: Environment of the service. type: keyword service.ephemeral_id: @@ -16190,6 +16551,9 @@ service: level: core name: name normalize: [] + otel: + - relation: match + stability: stable short: Name of the service. type: keyword service.node.name: @@ -16212,6 +16576,10 @@ service: level: extended name: node.name normalize: [] + otel: + - attribute: service.instance.id + relation: equivalent + stability: experimental short: Name of the service node. type: keyword service.node.role: @@ -16701,6 +17069,9 @@ service: level: core name: version normalize: [] + otel: + - relation: match + stability: stable short: Version of the service. type: keyword footnote: The service fields may be self-nested under service.origin.* and service.target.* @@ -16770,6 +17141,9 @@ source: level: extended name: address normalize: [] + otel: + - relation: match + stability: experimental short: Source network address. type: keyword source.as.number: @@ -17035,6 +17409,9 @@ source: level: core name: port normalize: [] + otel: + - relation: match + stability: experimental short: Port of the source. type: long source.registered_domain: @@ -22888,6 +23265,9 @@ tls: level: extended name: cipher normalize: [] + otel: + - relation: match + stability: experimental short: String indicating the cipher used during the current connection. type: keyword tls.client.certificate: @@ -22901,6 +23281,9 @@ tls: level: extended name: client.certificate normalize: [] + otel: + - relation: match + stability: experimental short: PEM-encoded stand-alone certificate offered by the client. type: keyword tls.client.certificate_chain: @@ -22915,6 +23298,9 @@ tls: name: client.certificate_chain normalize: - array + otel: + - relation: match + stability: experimental short: Array of PEM-encoded certificates that make up the certificate chain offered by the client. type: keyword @@ -22929,6 +23315,9 @@ tls: level: extended name: client.hash.md5 normalize: [] + otel: + - relation: match + stability: experimental short: Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the client. type: keyword @@ -22943,6 +23332,9 @@ tls: level: extended name: client.hash.sha1 normalize: [] + otel: + - relation: match + stability: experimental short: Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the client. type: keyword @@ -22957,6 +23349,9 @@ tls: level: extended name: client.hash.sha256 normalize: [] + otel: + - relation: match + stability: experimental short: Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the client. type: keyword @@ -22970,6 +23365,9 @@ tls: level: extended name: client.issuer normalize: [] + otel: + - relation: match + stability: experimental short: Distinguished name of subject of the issuer of the x.509 certificate presented by the client. type: keyword @@ -22983,6 +23381,9 @@ tls: level: extended name: client.ja3 normalize: [] + otel: + - relation: match + stability: experimental short: A hash that identifies clients based on how they perform an SSL/TLS handshake. type: keyword tls.client.not_after: @@ -22994,6 +23395,9 @@ tls: level: extended name: client.not_after normalize: [] + otel: + - relation: match + stability: experimental short: Date/Time indicating when client certificate is no longer considered valid. type: date @@ -23006,6 +23410,9 @@ tls: level: extended name: client.not_before normalize: [] + otel: + - relation: match + stability: experimental short: Date/Time indicating when client certificate is first considered valid. type: date tls.client.server_name: @@ -23031,6 +23438,9 @@ tls: level: extended name: client.subject normalize: [] + otel: + - relation: match + stability: experimental short: Distinguished name of subject of the x.509 certificate presented by the client. type: keyword @@ -23045,6 +23455,9 @@ tls: name: client.supported_ciphers normalize: - array + otel: + - relation: match + stability: experimental short: Array of ciphers offered by the client during the client hello. type: keyword tls.client.x509.alternative_names: @@ -23362,6 +23775,9 @@ tls: level: extended name: curve normalize: [] + otel: + - relation: match + stability: experimental short: String indicating the curve used for the given cipher, when applicable. type: keyword tls.established: @@ -23372,6 +23788,9 @@ tls: level: extended name: established normalize: [] + otel: + - relation: match + stability: experimental short: Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel. type: boolean @@ -23386,6 +23805,9 @@ tls: level: extended name: next_protocol normalize: [] + otel: + - relation: match + stability: experimental short: String indicating the protocol being tunneled. type: keyword tls.resumed: @@ -23396,6 +23818,9 @@ tls: level: extended name: resumed normalize: [] + otel: + - relation: match + stability: experimental short: Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation. type: boolean @@ -23410,6 +23835,9 @@ tls: level: extended name: server.certificate normalize: [] + otel: + - relation: match + stability: experimental short: PEM-encoded stand-alone certificate offered by the server. type: keyword tls.server.certificate_chain: @@ -23424,6 +23852,9 @@ tls: name: server.certificate_chain normalize: - array + otel: + - relation: match + stability: experimental short: Array of PEM-encoded certificates that make up the certificate chain offered by the server. type: keyword @@ -23438,6 +23869,9 @@ tls: level: extended name: server.hash.md5 normalize: [] + otel: + - relation: match + stability: experimental short: Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. type: keyword @@ -23452,6 +23886,9 @@ tls: level: extended name: server.hash.sha1 normalize: [] + otel: + - relation: match + stability: experimental short: Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. type: keyword @@ -23466,6 +23903,9 @@ tls: level: extended name: server.hash.sha256 normalize: [] + otel: + - relation: match + stability: experimental short: Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. type: keyword @@ -23479,6 +23919,9 @@ tls: level: extended name: server.issuer normalize: [] + otel: + - relation: match + stability: experimental short: Subject of the issuer of the x.509 certificate presented by the server. type: keyword tls.server.ja3s: @@ -23491,6 +23934,9 @@ tls: level: extended name: server.ja3s normalize: [] + otel: + - relation: match + stability: experimental short: A hash that identifies servers based on how they perform an SSL/TLS handshake. type: keyword tls.server.not_after: @@ -23502,6 +23948,9 @@ tls: level: extended name: server.not_after normalize: [] + otel: + - relation: match + stability: experimental short: Timestamp indicating when server certificate is no longer considered valid. type: date @@ -23514,6 +23963,9 @@ tls: level: extended name: server.not_before normalize: [] + otel: + - relation: match + stability: experimental short: Timestamp indicating when server certificate is first considered valid. type: date tls.server.subject: @@ -23525,6 +23977,9 @@ tls: level: extended name: server.subject normalize: [] + otel: + - relation: match + stability: experimental short: Subject of the x.509 certificate presented by the server. type: keyword tls.server.x509.alternative_names: @@ -23950,6 +24405,9 @@ url: level: extended name: domain normalize: [] + otel: + - relation: match + stability: experimental short: Domain of the url. type: keyword url.extension: @@ -23970,6 +24428,9 @@ url: level: extended name: extension normalize: [] + otel: + - relation: match + stability: experimental short: File extension from the request url, excluding the leading dot. type: keyword url.fragment: @@ -23982,6 +24443,9 @@ url: level: extended name: fragment normalize: [] + otel: + - relation: match + stability: stable short: Portion of the url after the `#`. type: keyword url.full: @@ -23998,6 +24462,9 @@ url: type: match_only_text name: full normalize: [] + otel: + - relation: match + stability: stable short: Full unparsed URL. type: wildcard url.original: @@ -24017,6 +24484,9 @@ url: type: match_only_text name: original normalize: [] + otel: + - relation: match + stability: experimental short: Unmodified original url as seen in the event source. type: wildcard url.password: @@ -24036,6 +24506,9 @@ url: level: extended name: path normalize: [] + otel: + - relation: match + stability: stable short: Path of the request, such as "/search". type: wildcard url.port: @@ -24047,6 +24520,9 @@ url: level: extended name: port normalize: [] + otel: + - relation: match + stability: experimental short: Port of the request, such as 443. type: long url.query: @@ -24063,6 +24539,9 @@ url: level: extended name: query normalize: [] + otel: + - relation: match + stability: stable short: Query string of the request. type: keyword url.registered_domain: @@ -24080,6 +24559,9 @@ url: level: extended name: registered_domain normalize: [] + otel: + - relation: match + stability: experimental short: The highest registered url domain, stripped of the subdomain. type: keyword url.scheme: @@ -24093,6 +24575,9 @@ url: level: extended name: scheme normalize: [] + otel: + - relation: match + stability: stable short: Scheme of the url. type: keyword url.subdomain: @@ -24111,6 +24596,9 @@ url: level: extended name: subdomain normalize: [] + otel: + - relation: match + stability: experimental short: The subdomain of the domain. type: keyword url.top_level_domain: @@ -24128,6 +24616,9 @@ url: level: extended name: top_level_domain normalize: [] + otel: + - relation: match + stability: experimental short: The effective top level domain (com, org, net, co.uk). type: keyword url.username: @@ -24444,6 +24935,9 @@ user: level: extended name: email normalize: [] + otel: + - relation: match + stability: experimental short: User email address. type: keyword user.full_name: @@ -24459,6 +24953,9 @@ user: type: match_only_text name: full_name normalize: [] + otel: + - relation: match + stability: experimental short: User's full name, if available. type: keyword user.group.domain: @@ -24508,6 +25005,9 @@ user: level: extended name: hash normalize: [] + otel: + - relation: match + stability: experimental short: Unique user hash to correlate information for a user in anonymized form. type: keyword user.id: @@ -24519,6 +25019,9 @@ user: level: core name: id normalize: [] + otel: + - relation: match + stability: experimental short: Unique identifier of the user. type: keyword user.name: @@ -24534,6 +25037,9 @@ user: type: match_only_text name: name normalize: [] + otel: + - relation: match + stability: experimental short: Short name or login of the user. type: keyword user.risk.calculated_level: @@ -24626,6 +25132,9 @@ user: name: roles normalize: - array + otel: + - relation: match + stability: experimental short: Array of user roles at the time of the event. type: keyword user.target.domain: @@ -24857,6 +25366,9 @@ user_agent: level: extended name: name normalize: [] + otel: + - relation: match + stability: experimental short: Name of the user agent. type: keyword user_agent.original: @@ -24873,6 +25385,9 @@ user_agent: type: match_only_text name: original normalize: [] + otel: + - relation: match + stability: stable short: Unparsed user_agent string. type: keyword user_agent.os.family: @@ -24989,6 +25504,9 @@ user_agent: level: extended name: version normalize: [] + otel: + - relation: match + stability: experimental short: Version of the user agent. type: keyword group: 2 diff --git a/otel-semconv-version b/otel-semconv-version new file mode 100644 index 0000000000..4799ffed4f --- /dev/null +++ b/otel-semconv-version @@ -0,0 +1 @@ +v1.29.0 \ No newline at end of file diff --git a/schemas/client.yml b/schemas/client.yml index cfa1ae0da0..742f98945b 100644 --- a/schemas/client.yml +++ b/schemas/client.yml @@ -46,6 +46,9 @@ Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. + otel: + - relation: match + - name: ip level: core @@ -60,6 +63,8 @@ type: long description: > Port of the client. + otel: + - relation: match - name: mac level: core diff --git a/schemas/cloud.yml b/schemas/cloud.yml index 904270b588..2a7f2d29b4 100644 --- a/schemas/cloud.yml +++ b/schemas/cloud.yml @@ -60,6 +60,8 @@ description: > Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. + otel: + - relation: match - name: availability_zone level: extended @@ -67,6 +69,8 @@ type: keyword description: > Availability zone in which this host, resource, or service is located. + otel: + - relation: match - name: region level: extended @@ -74,6 +78,8 @@ example: us-east-1 description: > Region in which this host, resource, or service is located. + otel: + - relation: match - name: instance.id level: extended @@ -106,6 +112,8 @@ Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. + otel: + - relation: match - name: account.name level: extended @@ -129,6 +137,9 @@ GCP GCE vs App Engine, Azure VM vs App Server. Examples: app engine, app service, cloud run, fargate, lambda. + otel: + - attribute: cloud.platform + relation: equivalent - name: project.id level: extended diff --git a/schemas/container.yml b/schemas/container.yml index 7cdbdac8f4..6625b2b362 100644 --- a/schemas/container.yml +++ b/schemas/container.yml @@ -35,6 +35,9 @@ description: > Percent CPU used which is normalized by the number of CPU cores and it ranges from 0 to 1. Scaling factor: 1000. + otel: + - metric: container.cpu.usage + relation: metric - name: disk.read.bytes type: long @@ -57,12 +60,16 @@ type: keyword description: > Unique container id. + otel: + - relation: match - name: image.name level: extended type: keyword description: > Name of the image the container was built on. + otel: + - relation: match - name: image.tag level: extended @@ -71,6 +78,9 @@ Container image tags. normalize: - array + otel: + - attribute: container.image.tags + relation: equivalent - name: image.hash.all level: extended @@ -83,6 +93,9 @@ example: '[sha256:f8fefc80e3273dc756f288a63945820d6476ad64883892c771b5e2ece6bf1b26]' normalize: - array + otel: + - attribute: container.image.repo_digests + relation: equivalent - name: labels level: extended @@ -90,6 +103,9 @@ object_type: keyword description: > Image labels. + otel: + - attribute: container.label + relation: related - name: memory.usage type: scaled_float @@ -98,12 +114,17 @@ short: Percent memory used, between 0 and 1. description: > Memory usage percentage and it ranges from 0 to 1. Scaling factor: 1000. + otel: + - metric: container.memory.usage + relation: metric - name: name level: extended type: keyword description: > Container name. + otel: + - relation: match - name: network.ingress.bytes type: long @@ -134,3 +155,5 @@ description: > Runtime managing this container. example: docker + otel: + - relation: match diff --git a/schemas/destination.yml b/schemas/destination.yml index 3606b2eae3..ef68f5e6ac 100644 --- a/schemas/destination.yml +++ b/schemas/destination.yml @@ -41,6 +41,8 @@ Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. + otel: + - relation: match - name: ip level: core @@ -55,6 +57,8 @@ type: long description: > Port of the destination. + otel: + - relation: match - name: mac level: core diff --git a/schemas/device.yml b/schemas/device.yml index 3e03e4ab1d..ccdf7e58c8 100644 --- a/schemas/device.yml +++ b/schemas/device.yml @@ -41,24 +41,32 @@ On Android, this value must be equal to the Firebase Installation ID or a globally unique UUID which is persisted across sessions in your application. For GDPR and data protection law reasons this identifier should not carry information that would allow to identify a user. + otel: + - relation: match - name: model.name level: extended example: Samsung Galaxy S6 type: keyword description: > The human readable marketing name of the device model. + otel: + - relation: match - name: model.identifier level: extended example: SM-G920F type: keyword description: > The machine readable identifier of the device model. + otel: + - relation: match - name: manufacturer level: extended example: Samsung type: keyword description: > The vendor name of the device manufacturer. + otel: + - relation: match - name: serial_number level: core type: keyword diff --git a/schemas/dns.yml b/schemas/dns.yml index 1dc8a3bdb9..cf716fd404 100644 --- a/schemas/dns.yml +++ b/schemas/dns.yml @@ -99,7 +99,8 @@ Tabs, carriage returns, and line feeds should be converted to \t, \r, and \n respectively. example: www.example.com - + otel: + - relation: match - name: question.type level: extended type: keyword diff --git a/schemas/error.yml b/schemas/error.yml index b98e73aa54..f5b1c262ab 100644 --- a/schemas/error.yml +++ b/schemas/error.yml @@ -38,6 +38,9 @@ type: match_only_text description: > Error message. + otel: + - relation: equivalent + attribute: exception.message - name: code level: core @@ -51,6 +54,8 @@ example: java.lang.NullPointerException description: > The type of the error, for example the class name of the exception. + otel: + - relation: match - name: stack_trace level: extended @@ -60,3 +65,6 @@ multi_fields: - type: match_only_text name: text + otel: + - relation: equivalent + attribute: exception.stacktrace diff --git a/schemas/faas.yml b/schemas/faas.yml index 018e3f93a9..302930abb4 100644 --- a/schemas/faas.yml +++ b/schemas/faas.yml @@ -32,6 +32,8 @@ type: keyword level: extended example: "my-function" + otel: + - relation: match - name: id short: The unique identifier of a serverless function. description: > @@ -47,17 +49,24 @@ type: keyword level: extended example: "123" + otel: + - relation: match - name: coldstart description: > Boolean value indicating a cold start of a function. type: boolean level: extended + otel: + - relation: match - name: execution description: > The execution ID of the current function execution. type: keyword level: extended example: "af9d5aa4-a685-4c5f-a22b-444f80b3cc28" + otel: + - relation: equivalent + attribute: faas.invocation_id - name: trigger.type level: extended type: keyword @@ -71,6 +80,9 @@ - timer - other example: http + otel: + - relation: equivalent + attribute: faas.trigger - name: trigger.request_id level: extended type: keyword diff --git a/schemas/file.yml b/schemas/file.yml index a5e3e76cf7..b4017865ff 100644 --- a/schemas/file.yml +++ b/schemas/file.yml @@ -39,7 +39,8 @@ type: keyword description: Name of the file including the extension, without the directory. example: example.png - + otel: + - relation: match - name: attributes level: extended type: keyword @@ -53,7 +54,8 @@ example: '["readonly", "system"]' normalize: - array - + otel: + - relation: match - name: directory level: extended type: keyword @@ -62,7 +64,8 @@ Directory where the file is located. It should include the drive letter, when appropriate. example: "/home/alice" - + otel: + - relation: match - name: drive_letter level: extended type: keyword @@ -85,7 +88,8 @@ multi_fields: - type: match_only_text name: text - + otel: + - relation: match - name: target_path level: extended type: keyword @@ -93,7 +97,9 @@ multi_fields: - type: match_only_text name: text - + otel: + - relation: equivalent + attribute: file.symbolic_link.target_path - name: extension level: extended type: keyword @@ -104,7 +110,8 @@ Note that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz"). example: png - + otel: + - relation: match - name: type level: extended type: keyword @@ -122,38 +129,48 @@ type: keyword description: Inode representing the file in the filesystem. example: "256383" - + otel: + - relation: match - name: uid level: extended type: keyword description: > The user ID (UID) or security identifier (SID) of the file owner. example: "1001" - + otel: + - relation: equivalent + attribute: file.owner.id - name: owner level: extended type: keyword description: File owner's username. example: alice - + otel: + - relation: equivalent + attribute: file.owner.name - name: gid level: extended type: keyword description: Primary group ID (GID) of the file. example: "1001" - + otel: + - relation: equivalent + attribute: file.group.id - name: group level: extended type: keyword description: Primary group name of the file. example: alice - + otel: + - relation: equivalent + attribute: file.group.name - name: mode level: extended type: keyword description: Mode of the file in octal representation. example: "0640" - + otel: + - relation: match - name: size level: extended type: long @@ -163,12 +180,15 @@ Only relevant when `file.type` is "file". example: 16384 - + otel: + - relation: match - name: mtime level: extended type: date description: Last time the file content was modified. - + otel: + - relation: equivalent + attribute: file.modified - name: ctime level: extended type: date @@ -179,7 +199,9 @@ Note that changes to the file content will update `mtime`. This implies `ctime` will be adjusted at the same time, since `mtime` is an attribute of the file. - + otel: + - relation: equivalent + attribute: file.changed - name: created level: extended type: date @@ -188,7 +210,8 @@ File creation time. Note that not all filesystems store the creation time. - + otel: + - relation: match - name: accessed level: extended type: date @@ -197,7 +220,8 @@ Last time the file was accessed. Note that not all filesystems keep track of access time. - + otel: + - relation: match - name: mime_type level: extended type: keyword @@ -225,3 +249,5 @@ short: A fork is additional data associated with a filesystem object. example: Zone.Identifer + otel: + - relation: match diff --git a/schemas/geo.yml b/schemas/geo.yml index bd04a03e9e..51a2f4cc58 100644 --- a/schemas/geo.yml +++ b/schemas/geo.yml @@ -46,7 +46,11 @@ description: > Longitude and latitude. example: '{ "lon": -73.614830, "lat": 45.505918 }' - + otel: + - relation: related + attribute: geo.location.lat + - relation: related + attribute: geo.location.lon - name: continent_code level: core type: keyword @@ -54,7 +58,9 @@ description: > Two-letter code representing continent's name. example: NA - + otel: + - relation: equivalent + attribute: geo.continent.code - name: continent_name level: core type: keyword @@ -82,14 +88,18 @@ description: > City name. example: Montreal - + otel: + - relation: equivalent + attribute: geo.locality.name - name: country_iso_code level: core type: keyword description: > Country ISO code. example: CA - + otel: + - relation: equivalent + attribute: geo.country.iso_code - name: postal_code level: core type: keyword @@ -101,14 +111,17 @@ as a postcode or ZIP code and will vary widely from country to country. example: 94040 - + otel: + - relation: match - name: region_iso_code level: core type: keyword description: > Region ISO code. example: CA-QC - + otel: + - relation: equivalent + attribute: geo.region.iso_code - name: timezone level: core type: keyword diff --git a/schemas/host.yml b/schemas/host.yml index 9b7373ad1e..ef5f2f762f 100644 --- a/schemas/host.yml +++ b/schemas/host.yml @@ -46,6 +46,8 @@ It can contain what hostname returns on Unix systems, the fully qualified domain name (FQDN), or a name specified by the user. The recommended value is the lowercase FQDN of the host. + otel: + - relation: match - name: id level: core @@ -58,6 +60,8 @@ in your environment. Example: The current usage of `beat.name`. + otel: + - relation: match - name: ip level: core @@ -66,6 +70,8 @@ Host ip addresses. normalize: - array + otel: + - relation: match - name: mac level: core @@ -82,6 +88,8 @@ hyphen. normalize: - array + otel: + - relation: match - name: type level: core @@ -93,6 +101,8 @@ 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. + otel: + - relation: match - name: uptime level: extended @@ -100,6 +110,9 @@ example: 1325 description: > Seconds the host has been up. + otel: + - metric: system.uptime + relation: metric - name: architecture level: core @@ -107,6 +120,9 @@ example: "x86_64" description: > Operating system architecture. + otel: + - relation: equivalent + attribute: host.arch - name: domain level: extended @@ -132,6 +148,9 @@ For example: For a two core host, this value should be the average of the two cores, between 0 and 1. + otel: + - metric: system.cpu.utilization + relation: metric - name: disk.read.bytes type: long @@ -140,6 +159,9 @@ description: > The total number of bytes (gauge) read successfully (aggregated from all disks) since the last metric collection. + otel: + - metric: system.disk.io + relation: metric - name: disk.write.bytes type: long @@ -148,6 +170,9 @@ description: > The total number of bytes (gauge) written successfully (aggregated from all disks) since the last metric collection. + otel: + - metric: system.disk.io + relation: metric - name: network.ingress.bytes type: long @@ -156,6 +181,9 @@ description: > The number of bytes received (gauge) on all network interfaces by the host since the last metric collection. + otel: + - metric: system.network.io + relation: metric - name: network.ingress.packets type: long @@ -164,6 +192,9 @@ description: > The number of packets (gauge) received on all network interfaces by the host since the last metric collection. + otel: + - metric: system.network.packets + relation: metric - name: network.egress.bytes type: long @@ -172,6 +203,9 @@ description: > The number of bytes (gauge) sent out on all network interfaces by the host since the last metric collection. + otel: + - metric: system.network.io + relation: metric - name: network.egress.packets type: long @@ -180,6 +214,9 @@ description: > The number of packets (gauge) sent out on all network interfaces by the host since the last metric collection. + otel: + - metric: system.network.packets + relation: metric - name: boot.id level: extended diff --git a/schemas/http.yml b/schemas/http.yml index 5e1447482c..615c752b0d 100644 --- a/schemas/http.yml +++ b/schemas/http.yml @@ -49,6 +49,16 @@ for this field. example: POST + otel: + - attribute: http.request.method_original + relation: equivalent + - attribute: http.request.method + relation: conflict + note: > + `http.request.method` in SemConv is the known, normalized, upper case + value of the request method, other than the ECS' `http.request.method` + that retains casing from the original event. + - name: request.mime_type level: extended @@ -88,6 +98,8 @@ description: > HTTP response status code. example: 404 + otel: + - relation: match - name: response.mime_type level: extended @@ -119,6 +131,14 @@ description: > HTTP version. example: 1.1 + otel: + - attribute: network.protocol.name + relation: related + - attribute: network.protocol.version + relation: related + note: > + In OTel SemConv, `network.protocol.version` specifies the HTTP version + if the value of `network.protocol.name` is `http`. # Metrics - name: request.bytes @@ -128,7 +148,9 @@ description: > Total size in bytes of the request (body and headers). example: 1437 - + otel: + - attribute: http.request.size + relation: equivalent - name: request.body.bytes level: extended type: long @@ -136,7 +158,9 @@ description: > Size in bytes of the request body. example: 887 - + otel: + - attribute: http.request.body.size + relation: equivalent - name: response.bytes level: extended type: long @@ -144,7 +168,9 @@ description: > Total size in bytes of the response (body and headers). example: 1437 - + otel: + - attribute: http.response.size + relation: equivalent - name: response.body.bytes level: extended type: long @@ -152,3 +178,6 @@ description: > Size in bytes of the response body. example: 887 + otel: + - attribute: http.response.body.size + relation: equivalent diff --git a/schemas/log.yml b/schemas/log.yml index 2d90ef0a96..b1154cacff 100644 --- a/schemas/log.yml +++ b/schemas/log.yml @@ -55,6 +55,8 @@ If the event wasn't read from a log file, do not populate this field. example: "/var/log/fun-times.log" + otel: + - relation: match - name: logger level: core diff --git a/schemas/network.yml b/schemas/network.yml index 6a6f1e045f..553e3356ae 100644 --- a/schemas/network.yml +++ b/schemas/network.yml @@ -42,6 +42,8 @@ The field value must be normalized to lowercase for querying. example: ipv4 + otel: + - relation: match - name: iana_number level: extended @@ -63,6 +65,8 @@ The field value must be normalized to lowercase for querying. example: tcp + otel: + - relation: match - name: application level: extended @@ -91,6 +95,9 @@ The field value must be normalized to lowercase for querying. example: http + otel: + - attribute: network.protocol.name + relation: equivalent - name: direction level: core diff --git a/schemas/os.yml b/schemas/os.yml index de3d51bb1e..1676a7ac4a 100644 --- a/schemas/os.yml +++ b/schemas/os.yml @@ -48,6 +48,10 @@ - ios - android example: macos + otel: + - relation: conflict + attribute: os.type + note: The expected values in ECS for `os.type` do not correspond with the values defined in semantic conventions! - name: platform level: extended @@ -65,6 +69,8 @@ multi_fields: - type: match_only_text name: text + otel: + - relation: match - name: full level: extended @@ -89,6 +95,8 @@ example: "10.14.1" description: > Operating system version as a raw string. + otel: + - relation: match - name: kernel level: extended diff --git a/schemas/process.yml b/schemas/process.yml index abb5366d00..0c10f46e6f 100644 --- a/schemas/process.yml +++ b/schemas/process.yml @@ -83,6 +83,15 @@ description: > Process id. example: 4242 + otel: + - relation: match + otel_reuse: + - ecs: process.group_leader.pid + mapping: + relation: match + - ecs: process.session_leader.pid + mapping: + relation: match - name: vpid format: string @@ -96,6 +105,8 @@ unique across all processes on the host but it is unique within the process namespace that the process exists within. example: 4242 + otel: + - relation: match - name: entity_id level: extended @@ -151,6 +162,8 @@ multi_fields: - type: match_only_text name: text + otel: + - relation: match - name: args level: extended @@ -175,6 +188,8 @@ how many arguments were provided to start a process. More arguments may be an indication of suspicious activity. example: 4 + otel: + - relation: match - name: executable level: extended @@ -206,6 +221,8 @@ multi_fields: - type: match_only_text name: text + otel: + - relation: match - name: thread.id format: string @@ -269,6 +286,8 @@ multi_fields: - type: match_only_text name: text + otel: + - relation: match - name: exit_code level: extended @@ -299,6 +318,8 @@ Process interactivity is inferred from the processes file descriptors. If the character device for the controlling tty is the same as stdin and stderr for the process, the process is considered interactive. Note: A non-interactive process can belong to an interactive session and is simply one that does not have open file descriptors reading the controlling TTY on FD 0 (stdin) or writing to the controlling TTY on FD 2 (stderr). A backgrounded process is still considered interactive if stdin and stderr are connected to the controlling TTY. + otel: + - relation: match - name: same_as_process level: extended diff --git a/schemas/server.yml b/schemas/server.yml index 2352470ab4..09542a8c74 100644 --- a/schemas/server.yml +++ b/schemas/server.yml @@ -46,6 +46,8 @@ Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. + otel: + - relation: match - name: ip level: core @@ -60,6 +62,8 @@ type: long description: > Port of the server. + otel: + - relation: match - name: mac level: core diff --git a/schemas/service.yml b/schemas/service.yml index ecfbc99ed2..7f45722698 100644 --- a/schemas/service.yml +++ b/schemas/service.yml @@ -62,7 +62,9 @@ group services and applications from the same environment. example: production - + otel: + - relation: equivalent + attribute: deployment.environment.name - name: id level: core type: keyword @@ -95,6 +97,8 @@ 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. + otel: + - relation: match - name: node.name level: extended @@ -115,7 +119,9 @@ instances that make up this service. If those do not provide uniqueness (e.g. multiple instances of the service running on the same host) - the node name can be manually set. - + otel: + - relation: equivalent + attribute: service.instance.id - name: node.role level: extended type: keyword @@ -183,6 +189,8 @@ This allows to look at a data set only for a specific version of a service. + otel: + - relation: match - name: ephemeral_id level: extended diff --git a/schemas/source.yml b/schemas/source.yml index 266bfc33bf..f094957a9c 100644 --- a/schemas/source.yml +++ b/schemas/source.yml @@ -48,7 +48,8 @@ Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. - + otel: + - relation: match - name: ip level: core type: ip @@ -62,7 +63,8 @@ type: long description: > Port of the source. - + otel: + - relation: match - name: mac level: core type: keyword diff --git a/schemas/tls.yml b/schemas/tls.yml index 44ba36aa3a..6670d18b99 100644 --- a/schemas/tls.yml +++ b/schemas/tls.yml @@ -42,23 +42,31 @@ level: extended description: String indicating the cipher used during the current connection. example: "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256" + otel: + - relation: match - name: curve type: keyword level: extended description: String indicating the curve used for the given cipher, when applicable. example: "secp256r1" + otel: + - relation: match - name: resumed type: boolean level: extended description: Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation. + otel: + - relation: match - name: established type: boolean level: extended description: > Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel. + otel: + - relation: match - name: next_protocol type: keyword @@ -69,12 +77,16 @@ (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), this string should be lower case. example: "http/1.1" + otel: + - relation: match - name: client.ja3 type: keyword level: extended description: A hash that identifies clients based on how they perform an SSL/TLS handshake. example: d4e5b18d6b55c71272893221c96ba240 + otel: + - relation: match - name: client.server_name type: keyword @@ -92,30 +104,40 @@ example: "[\"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\", \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\", \"...\"]" normalize: - array + otel: + - relation: match - name: client.subject type: keyword level: extended description: Distinguished name of subject of the x.509 certificate presented by the client. example: "CN=myclient, OU=Documentation Team, DC=example, DC=com" + otel: + - relation: match - name: client.issuer type: keyword level: extended description: Distinguished name of subject of the issuer of the x.509 certificate presented by the client. example: "CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com" + otel: + - relation: match - name: client.not_before type: date level: extended description: Date/Time indicating when client certificate is first considered valid. example: "1970-01-01T00:00:00.000Z" + otel: + - relation: match - name: client.not_after type: date level: extended description: Date/Time indicating when client certificate is no longer considered valid. example: "2021-01-01T00:00:00.000Z" + otel: + - relation: match - name: client.certificate_chain type: keyword @@ -128,6 +150,8 @@ example: "[\"MII...\", \"MII...\"]" normalize: - array + otel: + - relation: match - name: client.certificate type: keyword @@ -137,6 +161,8 @@ PEM-encoded stand-alone certificate offered by the client. This is usually mutually-exclusive of `client.certificate_chain` since this value also exists in that list. example: "MII..." + otel: + - relation: match - name: client.hash.md5 type: keyword @@ -146,6 +172,8 @@ Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. example: 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC + otel: + - relation: match - name: client.hash.sha1 type: keyword @@ -156,6 +184,8 @@ Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. example: 9E393D93138888D288266C2D915214D1D1CCEB2A + otel: + - relation: match - name: client.hash.sha256 type: keyword @@ -165,36 +195,48 @@ Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. example: 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 + otel: + - relation: match - name: server.ja3s type: keyword level: extended description: A hash that identifies servers based on how they perform an SSL/TLS handshake. example: 394441ab65754e2207b1e1b457b3641d + otel: + - relation: match - name: server.subject type: keyword level: extended description: Subject of the x.509 certificate presented by the server. example: "CN=www.example.com, OU=Infrastructure Team, DC=example, DC=com" + otel: + - relation: match - name: server.issuer type: keyword level: extended description: Subject of the issuer of the x.509 certificate presented by the server. example: "CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com" + otel: + - relation: match - name: server.not_before type: date level: extended description: Timestamp indicating when server certificate is first considered valid. example: "1970-01-01T00:00:00.000Z" + otel: + - relation: match - name: server.not_after type: date level: extended description: Timestamp indicating when server certificate is no longer considered valid. example: "2021-01-01T00:00:00.000Z" + otel: + - relation: match - name: server.certificate_chain type: keyword @@ -207,6 +249,8 @@ example: "[\"MII...\", \"MII...\"]" normalize: - array + otel: + - relation: match - name: server.certificate type: keyword @@ -216,6 +260,8 @@ PEM-encoded stand-alone certificate offered by the server. This is usually mutually-exclusive of `server.certificate_chain` since this value also exists in that list. example: "MII..." + otel: + - relation: match - name: server.hash.md5 type: keyword @@ -225,6 +271,8 @@ Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. example: 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC + otel: + - relation: match - name: server.hash.sha1 type: keyword @@ -234,6 +282,8 @@ Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. example: 9E393D93138888D288266C2D915214D1D1CCEB2A + otel: + - relation: match - name: server.hash.sha256 type: keyword @@ -243,3 +293,5 @@ Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. example: 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 + otel: + - relation: match diff --git a/schemas/url.yml b/schemas/url.yml index 4a904249a7..febfb29e4e 100644 --- a/schemas/url.yml +++ b/schemas/url.yml @@ -48,6 +48,8 @@ multi_fields: - type: match_only_text name: text + otel: + - relation: match - name: full level: extended @@ -61,6 +63,8 @@ multi_fields: - type: match_only_text name: text + otel: + - relation: match - name: scheme level: extended @@ -71,6 +75,8 @@ Note: The `:` is not part of the scheme. example: https + otel: + - relation: match - name: domain level: extended @@ -85,6 +91,8 @@ If the URL contains a literal IPv6 address enclosed by `[` and `]` (IETF RFC 2732), the `[` and `]` characters should also be captured in the `domain` field. example: www.elastic.co + otel: + - relation: match - name: registered_domain level: extended @@ -99,6 +107,8 @@ suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". example: example.com + otel: + - relation: match - name: top_level_domain level: extended @@ -113,6 +123,8 @@ suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". example: co.uk + otel: + - relation: match - name: subdomain level: extended @@ -128,6 +140,8 @@ If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period. example: east + otel: + - relation: match - name: port format: string @@ -136,12 +150,16 @@ description: > Port of the request, such as 443. example: 443 + otel: + - relation: match - name: path level: extended type: wildcard description: > Path of the request, such as "/search". + otel: + - relation: match - name: query level: extended @@ -155,6 +173,8 @@ 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. + otel: + - relation: match - name: extension level: extended @@ -171,6 +191,8 @@ Note that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz"). example: png + otel: + - relation: match - name: fragment level: extended @@ -180,6 +202,8 @@ Portion of the url after the `#`, such as "top". The `#` is not part of the fragment. + otel: + - relation: match - name: username level: extended diff --git a/schemas/user.yml b/schemas/user.yml index 0e126bfd03..b037b8ed0d 100644 --- a/schemas/user.yml +++ b/schemas/user.yml @@ -65,6 +65,18 @@ example: S-1-5-21-202424912787-2692429404-2351956786-1000 description: > Unique identifier of the user. + otel: + - relation: match + otel_reuse: + - ecs: process.user.id + mapping: + relation: match + - ecs: process.real_user.id + mapping: + relation: match + - ecs: process.saved_user.id + mapping: + relation: match - name: name level: core @@ -75,6 +87,18 @@ multi_fields: - type: match_only_text name: text + otel: + - relation: match + otel_reuse: + - ecs: process.user.name + mapping: + relation: match + - ecs: process.real_user.name + mapping: + relation: match + - ecs: process.saved_user.name + mapping: + relation: match - name: full_name level: extended @@ -85,12 +109,16 @@ multi_fields: - type: match_only_text name: text + otel: + - relation: match - name: email level: extended type: keyword description: > User email address. + otel: + - relation: match - name: hash level: extended @@ -101,6 +129,8 @@ Useful if `user.id` or `user.name` contain confidential information and cannot be used. + otel: + - relation: match - name: domain level: extended @@ -119,3 +149,5 @@ description: > Array of user roles at the time of the event. example: '["kibana_admin", "reporting_user"]' + otel: + - relation: match diff --git a/schemas/user_agent.yml b/schemas/user_agent.yml index b30a5a011d..5c495fd022 100644 --- a/schemas/user_agent.yml +++ b/schemas/user_agent.yml @@ -35,6 +35,8 @@ description: > Unparsed user_agent string. 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" + otel: + - relation: match - name: name level: extended @@ -42,6 +44,8 @@ example: Safari description: > Name of the user agent. + otel: + - relation: match - name: version level: extended @@ -49,6 +53,8 @@ description: > Version of the user agent. example: 12.0 + otel: + - relation: match - name: device.name level: extended diff --git a/scripts/_types/__init__.py b/scripts/_types/__init__.py index 4b729b1bb5..add031a99b 100644 --- a/scripts/_types/__init__.py +++ b/scripts/_types/__init__.py @@ -24,6 +24,14 @@ MultiField, Reuseable, SchemaDetails, + OTelMapping, +) + +from .otel_types import ( + OTelAttribute, + OTelGroup, + OTelModelFile, + OTelMappingSummary, ) __all__ = [ @@ -35,4 +43,9 @@ "MultiField", "Reuseable", "SchemaDetails", + "OTelMapping", + "OTelAttribute", + "OTelGroup", + "OTelModelFile", + "OTelMappingSummary", ] diff --git a/scripts/_types/otel_types.py b/scripts/_types/otel_types.py new file mode 100644 index 0000000000..5736aa63ab --- /dev/null +++ b/scripts/_types/otel_types.py @@ -0,0 +1,35 @@ +from typing import ( + List, + TypedDict, +) + +class OTelAttribute(TypedDict, total=False): + id: str + stability: str + ref: str + deprecated: str + group_display_name: str + +class OTelGroup(TypedDict, total=False): + id: str + type: str + prefix: str + display_name: str + attributes: List[OTelAttribute] + stability: str + metric_name: str + +class OTelModelFile(TypedDict, total=False): + groups: List[OTelGroup] + +class OTelMappingSummary(TypedDict, total=False): + namespace: str + title: str + nr_plain_ecs_fields: int + nr_all_ecs_fields: int + nr_otel_fields: int + nr_matching_fields: int + nr_equivalent_fields: int + nr_conflicting_fields: int + nr_related_fields: int + nr_metric_fields: int diff --git a/scripts/_types/schema_fields.py b/scripts/_types/schema_fields.py index 9dd849533e..b889545348 100644 --- a/scripts/_types/schema_fields.py +++ b/scripts/_types/schema_fields.py @@ -37,6 +37,19 @@ class AllowedValues(TypedDict, total=False): description: str +class OTelMapping(TypedDict, total=False): + attribute: str + metric: str + relation: str + stability: str = "stable" + note: str + + +class OTelReuseMapping(TypedDict, total=False): + ecs: str + mapping: OTelMapping + + class Field(TypedDict, total=False): allowed_values: List[AllowedValues] dashed_name: str @@ -54,6 +67,8 @@ class Field(TypedDict, total=False): node_name: str normalize: List[str] norms: bool + otel: List[OTelMapping] + otel_reuse: List[OTelReuseMapping] required: bool short: str type: str diff --git a/scripts/generator.py b/scripts/generator.py index a394978d16..c6e7fb84ae 100644 --- a/scripts/generator.py +++ b/scripts/generator.py @@ -27,6 +27,7 @@ from generators import es_template from generators import ecs_helpers from generators import intermediate_files +from generators import otel from schema import loader from schema import cleaner @@ -41,6 +42,9 @@ def main() -> None: args = argument_parser() + if not args.semconv_version: + raise KeyError("OTel Semantic Conventions version has not been provided as a config option '--semconv-version'") + ecs_generated_version: str = read_version(args.ref) print('Running generator. ECS version ' + ecs_generated_version) @@ -70,6 +74,11 @@ def main() -> None: finalizer.finalize(fields) fields, docs_only_fields = subset_filter.filter(fields, args.subset, out_dir) fields = exclude_filter.exclude(fields, args.exclude) + + otel_generator = otel.OTelGenerator(args.semconv_version) + otel_generator.check_otel_attributes_mapping(fields) + otel_generator.set_otel_attributes_stability_property(fields) + nested, flat = intermediate_files.generate(fields, os.path.join(out_dir, 'ecs'), default_dirs) if args.intermediate_only: @@ -85,7 +94,7 @@ def main() -> None: ecs_helpers.make_dirs(docs_dir) docs_only_nested = intermediate_files.generate_nested_fields(docs_only_fields) - asciidoc_fields.generate(nested, docs_only_nested, ecs_generated_version, docs_dir) + asciidoc_fields.generate(nested, docs_only_nested, ecs_generated_version, args.semconv_version, otel_generator, docs_dir) def argument_parser() -> argparse.Namespace: @@ -110,7 +119,9 @@ def argument_parser() -> argparse.Namespace: parser.add_argument('--intermediate-only', action='store_true', help='generate intermediary files only') parser.add_argument('--force-docs', action='store_true', - help='generate ECS docs even if --subset, --include, or --exclude are set') + help='generate ECS docs even if --subset, --include, or --exclude are set') + parser.add_argument('--semconv-version', action='store', + help='Load OpenTelemetry Semantic Conventions from this specified version') args = parser.parse_args() # Clean up empty include of the Makefile if args.include and [''] == args.include: diff --git a/scripts/generators/asciidoc_fields.py b/scripts/generators/asciidoc_fields.py index 7b59aff25d..2ab096d794 100644 --- a/scripts/generators/asciidoc_fields.py +++ b/scripts/generators/asciidoc_fields.py @@ -21,18 +21,25 @@ import jinja2 from generators import ecs_helpers +from copy import deepcopy -def generate(nested, docs_only_nested, ecs_generated_version, out_dir): +def generate(nested, docs_only_nested, ecs_generated_version, semconv_version, otel_generator, out_dir): # fields docs now have a dedicated docs subdir: docs/fields fields_docs_dir = out_dir + '/fields' + otel_docs_dir = out_dir + '/opentelemetry' ecs_helpers.make_dirs(fields_docs_dir) + if semconv_version.startswith('v'): + semconv_version = semconv_version[1:] + save_asciidoc(path.join(out_dir, 'index.asciidoc'), page_index(ecs_generated_version)) save_asciidoc(path.join(fields_docs_dir, 'fields.asciidoc'), page_field_index(nested, ecs_generated_version)) save_asciidoc(path.join(fields_docs_dir, 'field-details.asciidoc'), page_field_details(nested, docs_only_nested)) save_asciidoc(path.join(fields_docs_dir, 'field-values.asciidoc'), page_field_values(nested)) + save_asciidoc(path.join(otel_docs_dir, 'otel-fields-mapping.asciidoc'), page_otel_mapping(nested, ecs_generated_version, semconv_version)) + save_asciidoc(path.join(otel_docs_dir, 'otel-mapping-summary.asciidoc'), page_otel_summary(otel_generator, nested, ecs_generated_version, semconv_version)) # Helpers @@ -191,6 +198,34 @@ def generate_field_details_page(fieldset): sorted_fields=sorted_fields, usage_doc=usage_doc) +# OTel Fields Mapping Page + +@templated('otel_mapping.j2') +def page_otel_mapping(nested, ecs_generated_version, semconv_version): + fieldsets = [deepcopy(fieldset) for fieldset in ecs_helpers.dict_sorted_by_keys(nested, ['group', 'name']) if is_eligable_for_otel_mapping(fieldset)] + for fieldset in fieldsets: + sorted_fields = sort_fields(fieldset) + fieldset['fields'] = sorted_fields + + return dict(fieldsets=fieldsets, + semconv_version=semconv_version, + ecs_generated_version=ecs_generated_version) + +def is_eligable_for_otel_mapping(fieldset): + for field in fieldset['fields'].values(): + if 'otel' in field: + return True + return False + +# OTel Mapping Summary Page + +@templated('otel_summary.j2') +def page_otel_summary(otel_generator, nested, ecs_generated_version, semconv_version): + fieldsets = ecs_helpers.dict_sorted_by_keys(nested, ['group', 'name']) + summaries = otel_generator.get_mapping_summaries(fieldsets) + return dict(summaries=summaries, + semconv_version=semconv_version, + ecs_generated_version=ecs_generated_version) # Allowed values section diff --git a/scripts/generators/otel.py b/scripts/generators/otel.py new file mode 100644 index 0000000000..b89b35c555 --- /dev/null +++ b/scripts/generators/otel.py @@ -0,0 +1,231 @@ +import git +import os +import shutil +from typing import ( + Dict, + List, +) +import yaml +from schema import visitor +from generators import ecs_helpers +from _types import ( + OTelModelFile, + OTelMapping, + OTelAttribute, + FieldEntry, + FieldNestedEntry, + Field, + OTelMappingSummary, + OTelGroup, +) + +OTEL_SEMCONV_GIT = "git@github.com:open-telemetry/semantic-conventions.git" +LOCAL_TARGET_DIR_OTEL_SEMCONV = "./build/otel-semconv/" + +def get_model_files( + git_repo: str, + semconv_version: str, +) -> List[OTelModelFile]: + """Loads OpenTelemetry Semantic Conventions model from GitHub""" + target_dir = "model" + tree: git.objects.tree.Tree = get_tree_by_url(git_repo, semconv_version) + if ecs_helpers.path_exists_in_git_tree(tree, target_dir): + return collectOTelModelFiles(tree[target_dir]) + else: + raise KeyError(f"Target directory './{target_dir}' not present in git '{git_repo}'!") + +def get_attributes( + model_files: List[OTelModelFile] +) -> Dict[str, OTelAttribute]: + """Retrieves (non-deprecated) OTel attributes from the model files""" + + attributes: Dict[str, OTelAttribute] = {} + for mode_file in model_files: + for group in mode_file['groups']: + if 'type' in group and group['type'] == 'attribute_group' and 'deprecated' not in group and 'attributes' in group: + for attribute in group['attributes']: + if 'id' in attribute and 'deprecated' not in attribute: + if 'prefix' in group: + attribute['id'] = group['prefix'] + "." + attribute['id'] + attributes[attribute['id']] = attribute + if 'display_name' in group: + attribute['group_display_name'] = group['display_name'] + return attributes + +def get_metrics( + model_files: List[OTelModelFile] +) -> Dict[str, OTelAttribute]: + """Retrieves (non-deprecated) OTel metrics from the model files""" + + metrics: Dict[str, OTelGroup] = {} + for mode_file in model_files: + for group in mode_file['groups']: + if 'type' in group and group['type'] == 'metric' and 'metric_name' in group and 'deprecated' not in group: + metrics[group['metric_name']] = group + return metrics + +def collectOTelModelFiles( + tree: git.objects.tree.Tree, + level=0 +) -> List[OTelModelFile]: + otel_model_files: List[OTelModelFile] = [] + for entry in tree: + if entry.type == "tree": + otel_model_files.extend(collectOTelModelFiles(entry, level + 1)) + elif entry.type == "blob" and (entry.name.endswith('.yml') or entry.name.endswith('.yaml')): + content: str = entry.data_stream.read().decode('utf-8') + model_file: OTelModelFile = yaml.safe_load(content) + otel_model_files.append(model_file) + return otel_model_files + +def get_tree_by_url( + url: str, + git_ref: str, +) -> git.objects.tree.Tree: + repo: git.repo.base.Repo + clone_from_remote = False + if os.path.exists(LOCAL_TARGET_DIR_OTEL_SEMCONV): + repo = git.Repo(LOCAL_TARGET_DIR_OTEL_SEMCONV) + + if not git_ref in repo.tags and not git_ref in repo.branches: + shutil.rmtree(LOCAL_TARGET_DIR_OTEL_SEMCONV) + clone_from_remote = True + else: + clone_from_remote = True + + if clone_from_remote: + print(f'Loading OpenTelemetry Semantic Conventions version "{git_ref}"') + repo = git.Repo.clone_from(url, LOCAL_TARGET_DIR_OTEL_SEMCONV) + + repo.git.checkout(git_ref) + return repo.head.commit.tree + +def get_otel_attribute_name( + field: Field, + otel: OTelMapping + ) -> str: + if otel['relation'] == 'match': + return field['flat_name'] + elif 'attribute' in otel: + return otel['attribute'] + +class OTelGenerator: + + def __init__(self, semconv_version: str): + model_files = get_model_files(OTEL_SEMCONV_GIT, semconv_version) + + self.attributes: Dict[str, OTelAttribute] = get_attributes(model_files) + self.otel_attribute_names = list(self.attributes.keys()) + + self.metrics: Dict[str, OTelGroup] = get_metrics(model_files) + self.otel_metric_names = list(self.metrics.keys()) + + self.semconv_version = semconv_version + + def __set_stability(self, details): + field_details = details['field_details'] + if 'flat_name' in field_details and 'otel' in field_details: + for otel in field_details['otel']: + if otel['relation'] == 'metric' and 'metric' in otel: + otel['stability'] = self.metrics[otel['metric']]['stability'] + else: + otel['stability'] = self.attributes[get_otel_attribute_name(field_details, otel)]['stability'] + + def __check_mapping(self, details): + field_details = details['field_details'] + if 'flat_name' in field_details and (not 'intermediate' in field_details or not field_details['intermediate']): + ecs_field_name = field_details['flat_name'] + if 'otel' in field_details: + for otel in field_details['otel']: + if otel['relation'] == 'metric' and 'metric' in otel: + if not otel['metric'] in self.otel_metric_names: + raise ValueError(f"Metric '{otel['metric']}' does not exist in Semantic Conventions version {self.semconv_version}!") + else: + otel_attr_name = get_otel_attribute_name(field_details, otel) + if not otel_attr_name in self.otel_attribute_names: + raise ValueError(f"Attribute '{otel_attr_name}' does not exist in Semantic Conventions version {self.semconv_version}!") + elif ecs_field_name in self.otel_attribute_names: + if ecs_field_name == "faas.trigger": + print("### "+ repr(field_details)) + print(f'WARNING: Field "{ecs_field_name}" exists in OTel Semantic Conventions with exactly the same name but is not mapped in ECS!') + + + def set_otel_attributes_stability_property( + self, + field_entries: Dict[str, FieldEntry] + ) -> None: + visitor.visit_fields(field_entries, None, self.__set_stability) + + + def check_otel_attributes_mapping( + self, + field_entries: Dict[str, FieldEntry] + ) -> None: + visitor.visit_fields(field_entries, None, self.__check_mapping) + + def get_mapping_summaries( + self, + fieldsets: List[FieldNestedEntry], + ) -> List[OTelMappingSummary]: + summaries : List[OTelMappingSummary] = [] + + otel_namespaces = set([attr.split('.')[0] for attr in self.attributes.keys()]) + + for fieldset in fieldsets: + summary : OTelMappingSummary = {} + + summary['namespace'] = fieldset['name'] + if fieldset['name'] in otel_namespaces: + otel_namespaces.remove(fieldset['name']) + + summary['title'] = fieldset['title'] + summary['nr_all_ecs_fields'] = 0 + summary['nr_plain_ecs_fields'] = 0 + summary['nr_otel_fields'] = 0 + summary['nr_matching_fields'] = 0 + summary['nr_equivalent_fields'] = 0 + summary['nr_related_fields'] = 0 + summary['nr_metric_fields'] = 0 + summary['nr_conflicting_fields'] = 0 + + for field in fieldset['fields'].values(): + summary['nr_all_ecs_fields'] += 1 + if 'original_fieldset' not in field: + summary['nr_plain_ecs_fields'] += 1 + + if 'otel' in field: + for otel in (o for o in field['otel'] if 'relation' in o): + if otel['relation'] == "match": + summary['nr_matching_fields'] += 1 + elif otel['relation'] == "equivalent": + summary['nr_equivalent_fields'] += 1 + elif otel['relation'] == "related": + summary['nr_related_fields'] += 1 + elif otel['relation'] == "metric": + summary['nr_metric_fields'] += 1 + elif otel['relation'] == "conflict": + summary['nr_conflicting_fields'] += 1 + + summary['nr_otel_fields'] += len([attr for attr in list(self.attributes.keys()) if attr.startswith(summary['namespace'] + ".")]) + summaries.append(summary) + + for otel_ns in otel_namespaces: + summary : OTelMappingSummary = {} + summary['namespace'] = otel_ns + summary['title'] = otel_ns + ex_attr = next( attr for attr in list(self.attributes.values()) if attr['id'].startswith(otel_ns + ".")) + if 'group_display_name' in ex_attr: + disp_name = ex_attr['group_display_name'] + if disp_name.endswith(" Attributes"): + disp_name = disp_name[:-11] + summary['title'] = disp_name + summary['nr_otel_fields'] = len([attr for attr in list(self.attributes.keys()) if attr.startswith(otel_ns + ".")]) + summary['nr_all_ecs_fields'] = 0 + summary['nr_plain_ecs_fields'] = 0 + summary['nr_matching_fields'] = 0 + summary['nr_equivalent_fields'] = 0 + summary['nr_related_fields'] = 0 + summary['nr_conflicting_fields'] = 0 + summaries.append(summary) + + return sorted(summaries, key=lambda s: s['namespace']) \ No newline at end of file diff --git a/scripts/schema/finalizer.py b/scripts/schema/finalizer.py index b3788f99e0..34a0f2815d 100644 --- a/scripts/schema/finalizer.py +++ b/scripts/schema/finalizer.py @@ -200,6 +200,20 @@ def field_finalizer(details, path): """This is the function called by the visitor to perform the work of calculate_final_values""" name_array = path + [details['field_details']['node_name']] flat_name = '.'.join(name_array) + + if 'original_fieldset' in details['field_details']: + if 'otel' in details['field_details']: + details['field_details'].pop('otel') + + if 'otel_reuse' in details['field_details']: + otel_reuse = details['field_details']['otel_reuse'] + for r_mapping in otel_reuse: + if 'ecs' in r_mapping and 'mapping' in r_mapping and r_mapping['ecs'] == flat_name: + details['field_details']['otel'] = [r_mapping['mapping']] + + if 'otel_reuse' in details['field_details']: + details['field_details'].pop('otel_reuse') + details['field_details']['flat_name'] = flat_name details['field_details']['dashed_name'] = re.sub('[_\.]', '-', flat_name).replace('@', '') if 'multi_fields' in details['field_details']: diff --git a/scripts/templates/field_details.j2 b/scripts/templates/field_details.j2 index 15c0158f89..bfe7742e34 100644 --- a/scripts/templates/field_details.j2 +++ b/scripts/templates/field_details.j2 @@ -1,3 +1,4 @@ +{%- import 'macros.j2' as macros -%} {# Title & Description -#} [[ecs-{{ fieldset['name'] }}]] @@ -82,6 +83,22 @@ example: `{{ field['example'] }}` {%- endif %}{# if 'allowed_values' elif 'example' #} +{%-if field['otel'] -%} +{%- for otel in field['otel'] -%} +{%- if otel['relation'] == 'metric' %} + +{{ macros.otel_badge }} {{ macros.otel_relation_badge(otel) }} {{ macros.otel_metric_link(otel) }} +{%- else %} + +{{ macros.otel_badge }} {{ macros.otel_relation_badge(otel) }} {{ macros.otel_attribute_link(field, otel) }} +{%- endif -%} +{%- if 'note' in otel %} + +Note: {{ otel['note'] }} +{%- endif -%}{# if 'note' #} +{%- endfor -%}{# for otel #} +{%- endif -%}{# if 'otel' #} + {# `Level` column -#} | {{ field['level'] }} diff --git a/scripts/templates/index.j2 b/scripts/templates/index.j2 index bf73e357bc..fb8cd22cd0 100644 --- a/scripts/templates/index.j2 +++ b/scripts/templates/index.j2 @@ -69,5 +69,6 @@ include::using-ecs/index.asciidoc[] include::fields/fields.asciidoc[] include::fields/field-values.asciidoc[] include::migrating/index.asciidoc[] +include::opentelemetry/index.asciidoc[] include::additional-info/index.asciidoc[] include::release-notes/index.asciidoc[] diff --git a/scripts/templates/macros.j2 b/scripts/templates/macros.j2 new file mode 100644 index 0000000000..fb6f61ddcd --- /dev/null +++ b/scripts/templates/macros.j2 @@ -0,0 +1,65 @@ +{# macro - OTel attribute #} +{%- macro otel_attribute(field, otel) -%} +{%- if 'relation' in otel and otel['relation'] == 'match' -%} +{{ field['flat_name'] }} +{%- else -%} +{{ otel['attribute'] }} +{%- endif -%} +{%- endmacro -%} + +{# macro - OTel attribute dashed name #} +{%- macro otel_attribute_dashed_name(field, otel) -%} +{{ otel_attribute(field, otel) | trim | lower | replace("_", "-") | replace(".", "-") }} +{%- endmacro -%} + +{# macro - OTel attribute link #} +{%- macro otel_attribute_link(field, otel) -%} +https://opentelemetry.io/docs/specs/semconv/attributes-registry/ +{{- otel_attribute(field, otel).split(".")[0] -}} +/# +{{- otel_attribute_dashed_name(field, otel) -}} +[{{ otel_attribute(field, otel) }}] +{%- endmacro -%} + +{# macro - OTel attribute link #} +{%- macro otel_metric_link(otel) -%} +https://github.com/search?q=repo%3Aopen-telemetry%2Fsemantic-conventions+%22%3C%21--\+semconv+metric.{{otel['metric']}}+--%3E%22&type=code[{{ otel['metric'] }}] +{%- endmacro -%} + +{# macro - OTel relation badge #} +{%- macro otel_relation_badge(otel)-%} +image:https://img.shields.io/badge/ +{%- if 'relation' in otel and otel['relation'] == 'match' -%} +exact%20match-93c93e?style=flat[relation,title=match] +{%- elif 'relation' in otel and otel['relation'] == 'equivalent' -%} +equivalent-1ba9f5?style=flat[relation,title=equivalent] +{%- elif 'relation' in otel and otel['relation'] == 'metric' -%} +metric-cb00cb?style=flat[relation,title=metric] +{%- elif 'relation' in otel and otel['relation'] == 'conflict' -%} +conflict-910000?style=flat[relation,title=conflict] +{%- else -%} +related-f2f4fb?style=flat[relation,title=related] +{%- endif -%} + +{%- endmacro -%} + +{# macro - OTel stability badge #} +{%- macro otel_stability_badge(otel)-%} +{%- if 'stability' in otel and otel['stability'] == 'experimental' -%} +image:https://img.shields.io/badge/✘-fed10c?style=flat[experimental,title=experimental] +{%- else -%} +image:https://img.shields.io/badge/✔-93c93e?style=flat[stable,title=stable] +{%- endif -%} +{%- endmacro -%} + +{# macro - format number #} +{%- macro format_number(num) -%} +{%- if num == 0 -%} +- +{%- else -%} +{{ num }} +{%- endif -%} +{%- endmacro -%} + +{# OTel badge #} +{%- set otel_badge = "image:https://img.shields.io/badge/OpenTelemetry-4a5ca6?style=flat&logo=opentelemetry[OTel Badge]" -%} \ No newline at end of file diff --git a/scripts/templates/otel_mapping.j2 b/scripts/templates/otel_mapping.j2 new file mode 100644 index 0000000000..8255fa3dac --- /dev/null +++ b/scripts/templates/otel_mapping.j2 @@ -0,0 +1,56 @@ +{%- import 'macros.j2' as macros -%} +The following table gives an overview of mappings between individual ECS fields (in ECS version `{{ ecs_generated_version }}`) +and corresponding OTel semantic convention attributes (in SemConv version `{{ semconv_version }}`). + +[%header] +|==== +| ECS Field | Relation | OTel Semantic Conventions Attribute | Stability + +{% for fieldset in fieldsets -%} + +[[otel-mapping-namespace-{{fieldset['name']}}]] +4+e| *{{ fieldset['title'] }} Fields* + +{# Iterate through each field in the set -#} +{% for field in fieldset['fields'] -%} +{% if 'otel' in field -%} + +{# `ECS` column -#} +.{{ field['otel'] | length }}+| +{% if 'original_fieldset' not in field -%} +[[otel-mapping-for-{{field['dashed_name']}}]] +<> +{%- else -%} +{{ field['flat_name'] }} +{%- endif%}{# if 'original_fieldset' #} {% if 'beta' in fieldset or 'beta' in field -%} +{{ '[beta]' }} +{%- endif%}{# if 'beta' #} + +{% for otel in field['otel'] %} + +{# `Relation` column -#} +^| {{ macros.otel_relation_badge(otel) }} + +{# `SemConv` column -#} +<| +{%- if otel['relation'] == 'metric' -%} +{{ macros.otel_metric_link(otel) }} +{%- else -%} +{{ macros.otel_attribute_link(field, otel) }} +{%- endif %} + +{% if 'note' in otel %} +Note: {{ otel['note'] }} +{% endif %}{# if 'note' #} + +{# `Stability` column -#} +^| {{ macros.otel_stability_badge(otel) }} + + +// =============================================================== +{% endfor %}{# for 'otel' -#} +{% endif %}{# if 'otel' -#} +{% endfor %}{# for 'field' -#} + +{% endfor %}{# for 'fieldset' -#} + +|==== \ No newline at end of file diff --git a/scripts/templates/otel_summary.j2 b/scripts/templates/otel_summary.j2 new file mode 100644 index 0000000000..8641e312c6 --- /dev/null +++ b/scripts/templates/otel_summary.j2 @@ -0,0 +1,30 @@ +{%import 'macros.j2' as macros%} +The following table summarizes the alignment status by namespaces between ECS in version `{{ ecs_generated_version }}` +and OpenTelemetry semantic conventions in version `{{ semconv_version }}`. + +[cols="8*"] +|==== +h| +7+^h| Number of Fields / Attributes + +h| Namespace +h| ECS +h| OTel +h| image:https://img.shields.io/badge/exact%20match-93c93e?style=flat[relation,title=match] +h| image:https://img.shields.io/badge/equivalent-1ba9f5?style=flat[relation,title=equivalent] +h| image:https://img.shields.io/badge/related-f2f4fb?style=flat[relation,title=related] +h| image:https://img.shields.io/badge/metric-cb00cb?style=flat[relation,title=metric] +h| image:https://img.shields.io/badge/conflict-910000?style=flat[relation,title=conflict] + +{% for summary in summaries %} +| {{ summary['title'] }} +| {{ macros.format_number(summary['nr_plain_ecs_fields']) }} +| {{ macros.format_number(summary['nr_otel_fields']) }} +| {{ macros.format_number(summary['nr_matching_fields']) }} +| {{ macros.format_number(summary['nr_equivalent_fields']) }} +| {{ macros.format_number(summary['nr_related_fields']) }} +| {{ macros.format_number(summary['nr_metric_fields']) }} +| {{ macros.format_number(summary['nr_conflicting_fields']) }} + +{% endfor %}{# for 'summary' -#} +|====