Skip to content
Open
Show file tree
Hide file tree
Changes from 36 commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
f062bd0
Add proposed new fields in .yml format
susan-shu-c Sep 18, 2025
bbc490f
Add built doc files
susan-shu-c Sep 18, 2025
4b32811
Update proposed type for tool.call.result
susan-shu-c Sep 18, 2025
9b177e4
Merge generated files from main
susan-shu-c Oct 2, 2025
9b1cc75
Checkout files from main
susan-shu-c Oct 2, 2025
7ef579f
Fix typo
susan-shu-c Oct 2, 2025
22cdf78
Update generated docs
susan-shu-c Oct 2, 2025
2b1011a
Rebuild generated files
mjwolf Oct 2, 2025
5f878bd
Update examples
susan-shu-c Oct 8, 2025
8a89add
Grab doc file from main
susan-shu-c Oct 8, 2025
368ece1
Merge remote-tracking branch 'upstream/main' into additional-gen_ai-s…
mjwolf Oct 9, 2025
47aa573
Update field types based on feedback tradeoffs
susan-shu-c Oct 9, 2025
dc83c90
Change field beta reuse wording
susan-shu-c Oct 10, 2025
2b53588
Clean up wording and examples in rfcs/text
susan-shu-c Oct 10, 2025
0b7379e
Update schemas/gen_ai.yml
susan-shu-c Oct 10, 2025
33c9f2e
Merge branch 'main' into additional-gen_ai-stage-2
trisch-me Oct 17, 2025
065887c
Comment out not-merged OTel fields
susan-shu-c Oct 17, 2025
4bf7e59
Comment out not-merged OTel fields
susan-shu-c Oct 17, 2025
d90ed1c
Update related OTel
susan-shu-c Oct 17, 2025
72330fd
Remove trailing spaces via lint
susan-shu-c Oct 17, 2025
aebee50
Update proposal text file
susan-shu-c Oct 17, 2025
672d40d
Update generated files
susan-shu-c Oct 17, 2025
d391627
Merge remote-tracking branch 'upstream/main' into additional-gen_ai-s…
mjwolf Oct 17, 2025
dab5178
Merge remote-tracking branch 'origin/main' into additional-gen_ai-sta…
susan-shu-c Mar 24, 2026
d8c0a5b
Update to flattened types, update rfc to include new advancements and…
susan-shu-c Mar 24, 2026
79a7d1a
Run make clean
susan-shu-c Mar 24, 2026
a996aac
Merge branch 'main' into additional-gen_ai-stage-2
susan-shu-c Apr 7, 2026
34b3d33
Resolve merge conflicts
susan-shu-c Apr 15, 2026
f06c884
Update proposal stage
susan-shu-c Apr 15, 2026
4d5a430
Merge branch 'additional-gen_ai-stage-2' of github.com:elastic/ecs in…
susan-shu-c Apr 15, 2026
f7744c7
Tidy up RFC, add info per reviewer
susan-shu-c Apr 17, 2026
ebf4aca
Formatting
susan-shu-c Apr 17, 2026
6df68fe
Update on new flattened support ES
susan-shu-c Apr 17, 2026
501bb02
Merge branch 'main' into additional-gen_ai-stage-2
susan-shu-c Apr 17, 2026
869867e
Rename gen_ai.system to gen_ai.provider.name due to OTel deprecation.…
susan-shu-c Apr 20, 2026
90a9ea2
Update generated build files
susan-shu-c Apr 20, 2026
6b232eb
Merge branch 'main' into additional-gen_ai-stage-2
trisch-me Apr 29, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion docs/reference/ecs-gen_ai.md

Large diffs are not rendered by default.

8 changes: 7 additions & 1 deletion docs/reference/ecs-otel-alignment-details.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,11 @@ The following table gives an overview of mappings between individual ECS fields
| $$$otel-mapping-for-gen-ai-agent-description$$$ [gen_ai.agent.description](/reference/ecs-gen_ai.md#field-gen-ai-agent-description) | [![match](https://img.shields.io/badge/match-93c93e?style=flat)](/reference/ecs-opentelemetry.md#ecs-opentelemetry-relation) | [gen_ai.agent.description](https://opentelemetry.io/docs/specs/semconv/attributes-registry/gen-ai/#gen-ai-agent-description) | ![development](https://img.shields.io/badge/✘-fed10c?style=flat) |
| $$$otel-mapping-for-gen-ai-agent-id$$$ [gen_ai.agent.id](/reference/ecs-gen_ai.md#field-gen-ai-agent-id) | [![match](https://img.shields.io/badge/match-93c93e?style=flat)](/reference/ecs-opentelemetry.md#ecs-opentelemetry-relation) | [gen_ai.agent.id](https://opentelemetry.io/docs/specs/semconv/attributes-registry/gen-ai/#gen-ai-agent-id) | ![development](https://img.shields.io/badge/✘-fed10c?style=flat) |
| $$$otel-mapping-for-gen-ai-agent-name$$$ [gen_ai.agent.name](/reference/ecs-gen_ai.md#field-gen-ai-agent-name) | [![match](https://img.shields.io/badge/match-93c93e?style=flat)](/reference/ecs-opentelemetry.md#ecs-opentelemetry-relation) | [gen_ai.agent.name](https://opentelemetry.io/docs/specs/semconv/attributes-registry/gen-ai/#gen-ai-agent-name) | ![development](https://img.shields.io/badge/✘-fed10c?style=flat) |
| $$$otel-mapping-for-gen-ai-input-messages$$$ [gen_ai.input.messages](/reference/ecs-gen_ai.md#field-gen-ai-input-messages) | [![match](https://img.shields.io/badge/match-93c93e?style=flat)](/reference/ecs-opentelemetry.md#ecs-opentelemetry-relation) | [gen_ai.input.messages](https://opentelemetry.io/docs/specs/semconv/attributes-registry/gen-ai/#gen-ai-input-messages) | ![development](https://img.shields.io/badge/✘-fed10c?style=flat) |
| $$$otel-mapping-for-gen-ai-operation-name$$$ [gen_ai.operation.name](/reference/ecs-gen_ai.md#field-gen-ai-operation-name) | [![match](https://img.shields.io/badge/match-93c93e?style=flat)](/reference/ecs-opentelemetry.md#ecs-opentelemetry-relation) | [gen_ai.operation.name](https://opentelemetry.io/docs/specs/semconv/attributes-registry/gen-ai/#gen-ai-operation-name) | ![development](https://img.shields.io/badge/✘-fed10c?style=flat) |
| $$$otel-mapping-for-gen-ai-output-messages$$$ [gen_ai.output.messages](/reference/ecs-gen_ai.md#field-gen-ai-output-messages) | [![match](https://img.shields.io/badge/match-93c93e?style=flat)](/reference/ecs-opentelemetry.md#ecs-opentelemetry-relation) | [gen_ai.output.messages](https://opentelemetry.io/docs/specs/semconv/attributes-registry/gen-ai/#gen-ai-output-messages) | ![development](https://img.shields.io/badge/✘-fed10c?style=flat) |
| $$$otel-mapping-for-gen-ai-output-type$$$ [gen_ai.output.type](/reference/ecs-gen_ai.md#field-gen-ai-output-type) | [![match](https://img.shields.io/badge/match-93c93e?style=flat)](/reference/ecs-opentelemetry.md#ecs-opentelemetry-relation) | [gen_ai.output.type](https://opentelemetry.io/docs/specs/semconv/attributes-registry/gen-ai/#gen-ai-output-type) | ![development](https://img.shields.io/badge/✘-fed10c?style=flat) |
| $$$otel-mapping-for-gen-ai-provider-name$$$ [gen_ai.provider.name](/reference/ecs-gen_ai.md#field-gen-ai-provider-name) | [![match](https://img.shields.io/badge/match-93c93e?style=flat)](/reference/ecs-opentelemetry.md#ecs-opentelemetry-relation) | [gen_ai.provider.name](https://opentelemetry.io/docs/specs/semconv/attributes-registry/gen-ai/#gen-ai-provider-name) | ![development](https://img.shields.io/badge/✘-fed10c?style=flat) |
| $$$otel-mapping-for-gen-ai-request-choice-count$$$ [gen_ai.request.choice.count](/reference/ecs-gen_ai.md#field-gen-ai-request-choice-count) | [![match](https://img.shields.io/badge/match-93c93e?style=flat)](/reference/ecs-opentelemetry.md#ecs-opentelemetry-relation) | [gen_ai.request.choice.count](https://opentelemetry.io/docs/specs/semconv/attributes-registry/gen-ai/#gen-ai-request-choice-count) | ![development](https://img.shields.io/badge/✘-fed10c?style=flat) |
| $$$otel-mapping-for-gen-ai-request-encoding-formats$$$ [gen_ai.request.encoding_formats](/reference/ecs-gen_ai.md#field-gen-ai-request-encoding-formats) | [![match](https://img.shields.io/badge/match-93c93e?style=flat)](/reference/ecs-opentelemetry.md#ecs-opentelemetry-relation) | [gen_ai.request.encoding_formats](https://opentelemetry.io/docs/specs/semconv/attributes-registry/gen-ai/#gen-ai-request-encoding-formats) | ![development](https://img.shields.io/badge/✘-fed10c?style=flat) |
| $$$otel-mapping-for-gen-ai-request-frequency-penalty$$$ [gen_ai.request.frequency_penalty](/reference/ecs-gen_ai.md#field-gen-ai-request-frequency-penalty) | [![match](https://img.shields.io/badge/match-93c93e?style=flat)](/reference/ecs-opentelemetry.md#ecs-opentelemetry-relation) | [gen_ai.request.frequency_penalty](https://opentelemetry.io/docs/specs/semconv/attributes-registry/gen-ai/#gen-ai-request-frequency-penalty) | ![development](https://img.shields.io/badge/✘-fed10c?style=flat) |
Expand All @@ -105,9 +108,12 @@ The following table gives an overview of mappings between individual ECS fields
| $$$otel-mapping-for-gen-ai-response-finish-reasons$$$ [gen_ai.response.finish_reasons](/reference/ecs-gen_ai.md#field-gen-ai-response-finish-reasons) | [![match](https://img.shields.io/badge/match-93c93e?style=flat)](/reference/ecs-opentelemetry.md#ecs-opentelemetry-relation) | [gen_ai.response.finish_reasons](https://opentelemetry.io/docs/specs/semconv/attributes-registry/gen-ai/#gen-ai-response-finish-reasons) | ![development](https://img.shields.io/badge/✘-fed10c?style=flat) |
| $$$otel-mapping-for-gen-ai-response-id$$$ [gen_ai.response.id](/reference/ecs-gen_ai.md#field-gen-ai-response-id) | [![match](https://img.shields.io/badge/match-93c93e?style=flat)](/reference/ecs-opentelemetry.md#ecs-opentelemetry-relation) | [gen_ai.response.id](https://opentelemetry.io/docs/specs/semconv/attributes-registry/gen-ai/#gen-ai-response-id) | ![development](https://img.shields.io/badge/✘-fed10c?style=flat) |
| $$$otel-mapping-for-gen-ai-response-model$$$ [gen_ai.response.model](/reference/ecs-gen_ai.md#field-gen-ai-response-model) | [![match](https://img.shields.io/badge/match-93c93e?style=flat)](/reference/ecs-opentelemetry.md#ecs-opentelemetry-relation) | [gen_ai.response.model](https://opentelemetry.io/docs/specs/semconv/attributes-registry/gen-ai/#gen-ai-response-model) | ![development](https://img.shields.io/badge/✘-fed10c?style=flat) |
| $$$otel-mapping-for-gen-ai-system$$$ [gen_ai.system](/reference/ecs-gen_ai.md#field-gen-ai-system) | [![equivalent](https://img.shields.io/badge/equivalent-1ba9f5?style=flat)](/reference/ecs-opentelemetry.md#ecs-opentelemetry-relation) | [gen_ai.provider.name](https://opentelemetry.io/docs/specs/semconv/attributes-registry/gen-ai/#gen-ai-provider-name) | ![development](https://img.shields.io/badge/✘-fed10c?style=flat) |
| $$$otel-mapping-for-gen-ai-system-instructions$$$ [gen_ai.system_instructions](/reference/ecs-gen_ai.md#field-gen-ai-system-instructions) | [![match](https://img.shields.io/badge/match-93c93e?style=flat)](/reference/ecs-opentelemetry.md#ecs-opentelemetry-relation) | [gen_ai.system_instructions](https://opentelemetry.io/docs/specs/semconv/attributes-registry/gen-ai/#gen-ai-system-instructions) | ![development](https://img.shields.io/badge/✘-fed10c?style=flat) |
| $$$otel-mapping-for-gen-ai-token-type$$$ [gen_ai.token.type](/reference/ecs-gen_ai.md#field-gen-ai-token-type) | [![match](https://img.shields.io/badge/match-93c93e?style=flat)](/reference/ecs-opentelemetry.md#ecs-opentelemetry-relation) | [gen_ai.token.type](https://opentelemetry.io/docs/specs/semconv/attributes-registry/gen-ai/#gen-ai-token-type) | ![development](https://img.shields.io/badge/✘-fed10c?style=flat) |
| $$$otel-mapping-for-gen-ai-tool-call-arguments$$$ [gen_ai.tool.call.arguments](/reference/ecs-gen_ai.md#field-gen-ai-tool-call-arguments) | [![match](https://img.shields.io/badge/match-93c93e?style=flat)](/reference/ecs-opentelemetry.md#ecs-opentelemetry-relation) | [gen_ai.tool.call.arguments](https://opentelemetry.io/docs/specs/semconv/attributes-registry/gen-ai/#gen-ai-tool-call-arguments) | ![development](https://img.shields.io/badge/✘-fed10c?style=flat) |
| $$$otel-mapping-for-gen-ai-tool-call-id$$$ [gen_ai.tool.call.id](/reference/ecs-gen_ai.md#field-gen-ai-tool-call-id) | [![match](https://img.shields.io/badge/match-93c93e?style=flat)](/reference/ecs-opentelemetry.md#ecs-opentelemetry-relation) | [gen_ai.tool.call.id](https://opentelemetry.io/docs/specs/semconv/attributes-registry/gen-ai/#gen-ai-tool-call-id) | ![development](https://img.shields.io/badge/✘-fed10c?style=flat) |
| $$$otel-mapping-for-gen-ai-tool-call-result$$$ [gen_ai.tool.call.result](/reference/ecs-gen_ai.md#field-gen-ai-tool-call-result) | [![match](https://img.shields.io/badge/match-93c93e?style=flat)](/reference/ecs-opentelemetry.md#ecs-opentelemetry-relation) | [gen_ai.tool.call.result](https://opentelemetry.io/docs/specs/semconv/attributes-registry/gen-ai/#gen-ai-tool-call-result) | ![development](https://img.shields.io/badge/✘-fed10c?style=flat) |
| $$$otel-mapping-for-gen-ai-tool-definitions$$$ [gen_ai.tool.definitions](/reference/ecs-gen_ai.md#field-gen-ai-tool-definitions) | [![match](https://img.shields.io/badge/match-93c93e?style=flat)](/reference/ecs-opentelemetry.md#ecs-opentelemetry-relation) | [gen_ai.tool.definitions](https://opentelemetry.io/docs/specs/semconv/attributes-registry/gen-ai/#gen-ai-tool-definitions) | ![development](https://img.shields.io/badge/✘-fed10c?style=flat) |
| $$$otel-mapping-for-gen-ai-tool-name$$$ [gen_ai.tool.name](/reference/ecs-gen_ai.md#field-gen-ai-tool-name) | [![match](https://img.shields.io/badge/match-93c93e?style=flat)](/reference/ecs-opentelemetry.md#ecs-opentelemetry-relation) | [gen_ai.tool.name](https://opentelemetry.io/docs/specs/semconv/attributes-registry/gen-ai/#gen-ai-tool-name) | ![development](https://img.shields.io/badge/✘-fed10c?style=flat) |
| $$$otel-mapping-for-gen-ai-tool-type$$$ [gen_ai.tool.type](/reference/ecs-gen_ai.md#field-gen-ai-tool-type) | [![match](https://img.shields.io/badge/match-93c93e?style=flat)](/reference/ecs-opentelemetry.md#ecs-opentelemetry-relation) | [gen_ai.tool.type](https://opentelemetry.io/docs/specs/semconv/attributes-registry/gen-ai/#gen-ai-tool-type) | ![development](https://img.shields.io/badge/✘-fed10c?style=flat) |
| $$$otel-mapping-for-gen-ai-usage-input-tokens$$$ [gen_ai.usage.input_tokens](/reference/ecs-gen_ai.md#field-gen-ai-usage-input-tokens) | [![match](https://img.shields.io/badge/match-93c93e?style=flat)](/reference/ecs-opentelemetry.md#ecs-opentelemetry-relation) | [gen_ai.usage.input_tokens](https://opentelemetry.io/docs/specs/semconv/attributes-registry/gen-ai/#gen-ai-usage-input-tokens) | ![development](https://img.shields.io/badge/✘-fed10c?style=flat) |
Expand Down
2 changes: 1 addition & 1 deletion docs/reference/ecs-otel-alignment-overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ The following table summarizes the alignment status by namespaces between ECS in
| Feature Flag | · | [8](https://opentelemetry.io/docs/specs/semconv/attributes-registry/feature-flag) | · | · | · | · | · | · | |
| File | [24](/reference/ecs-file.md) | [18](https://opentelemetry.io/docs/specs/semconv/attributes-registry/file) | 11 | 7 | · | · | · | · | · |
| GCP Client | · | [23](https://opentelemetry.io/docs/specs/semconv/attributes-registry/gcp) | · | · | · | · | · | · | |
| Gen AI | [26](/reference/ecs-gen_ai.md) | [40](https://opentelemetry.io/docs/specs/semconv/attributes-registry/gen-ai) | 25 | 1 | · | · | · | · | · |
| Gen AI | [32](/reference/ecs-gen_ai.md) | [40](https://opentelemetry.io/docs/specs/semconv/attributes-registry/gen-ai) | 32 | · | · | · | · | · | · |
| Geo | [11](/reference/ecs-geo.md) | [7](https://opentelemetry.io/docs/specs/semconv/attributes-registry/geo) | 1 | 4 | 2 | · | · | · | · |
| Go | · | [1](https://opentelemetry.io/docs/specs/semconv/attributes-registry/go) | · | · | · | · | · | · | |
| GraphQL | · | [3](https://opentelemetry.io/docs/specs/semconv/attributes-registry/graphql) | · | · | · | · | · | · | |
Expand Down
72 changes: 66 additions & 6 deletions generated/beats/fields.ecs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4132,20 +4132,51 @@
description: Human-readable name of the GenAI agent provided by the application.
example: Math Tutor; Fiction Writer
default_field: false
- name: input.messages
level: extended
type: flattened
description: The chat history provided to the model as an input.
example: "{\n \"role\": \"user\",\n \"parts\": [\n {\n \"type\": \"\
text\",\n \"content\": \"Weather in Paris?\"\n }\n ]\n}, {\n \"\
role\": \"assistant\",\n \"parts\": [\n {\n \"type\": \"tool_call\"\
,\n \"id\": \"call_VSPygqKTWdrhaFErNvMV18Yl\",\n \"name\": \"get_weather\"\
,\n \"arguments\": {\n \"location\": \"Paris\"\n }\n }\n\
\ ]\n}, {\n \"role\": \"tool\",\n \"parts\": [\n {\n \"type\":\
\ \"tool_call_response\",\n \"id\": \" call_VSPygqKTWdrhaFErNvMV18Yl\"\
,\n \"result\": \"rainy, 57°F\"\n }\n ]\n}"
default_field: false
- name: operation.name
level: extended
type: keyword
ignore_above: 1024
description: The name of the operation being performed.
example: chat; text_completion; embeddings
default_field: false
- name: output.messages
level: extended
type: flattened
description: Messages returned by the model where each message represents a
specific model response (choice, candidate).
example: "{\n \"role\": \"assistant\",\n \"parts\": [\n {\n \"type\"\
: \"text\",\n \"content\": \"The weather in Paris is currently rainy\
\ with a temperature of 57°F.\"\n }\n ],\n \"finish_reason\": \"stop\"\
\n}"
default_field: false
- name: output.type
level: extended
type: keyword
ignore_above: 1024
description: Represents the content type requested by the client.
example: text; json; image
default_field: false
- name: provider.name
level: extended
type: keyword
ignore_above: 1024
description: The Generative AI provider as identified by the client or server
instrumentation.
example: openai
default_field: false
- name: request.choice.count
level: extended
type: integer
Expand Down Expand Up @@ -4235,13 +4266,13 @@
description: The name of the model that generated the response.
example: gpt-4-0613
default_field: false
- name: system
- name: system_instructions
level: extended
type: keyword
ignore_above: 1024
description: The Generative AI product as identified by the client or server
instrumentation.
example: openai
type: flattened
description: The system message or instructions provided to the GenAI model
separately from the chat history.
example: "{\n \"type\": \"text\",\n \"content\": \"You are an Agent that greet\
\ users, always use greetings tool to respond\"\n}"
default_field: false
- name: token.type
level: extended
Expand All @@ -4250,13 +4281,42 @@
description: The type of token being counted.
example: input; output
default_field: false
- name: tool.call.arguments
level: extended
type: flattened
description: Parameters passed to the tool call.
example: "{\n \"location\": \"San Francisco?\",\n \"date\": \"2025-10-01\"\
\n}"
default_field: false
- name: tool.call.id
level: extended
type: keyword
ignore_above: 1024
description: The tool call identifier.
example: call_mszuSIzqtI65i1wAUOE8w5H4
default_field: false
- name: tool.call.result
level: extended
type: flattened
description: The result returned by the tool call (if any and if execution was
successful).
example: "{\n \"temperature_range\": {\n \"high\": 75,\n \"low\": 60\n\
\ },\n \"conditions\": \"sunny\"\n}"
default_field: false
- name: tool.definitions
level: extended
type: flattened
description: The list of source system tool definitions available to the GenAI
agent or model.
example: "{\n \"type\": \"function\",\n \"name\": \"get_current_weather\"\
,\n \"description\": \"Get the current weather in a given location\",\n \
\ \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \
\ \"location\": {\n \"type\": \"string\",\n \"description\"\
: \"The city and state, e.g. San Francisco, CA\"\n },\n \"unit\"\
: {\n \"type\": \"string\",\n \"enum\": [\n \"celsius\"\
,\n \"fahrenheit\"\n ]\n }\n },\n \"required\"\
: [\n \"location\",\n \"unit\"\n ]\n }\n}"
default_field: false
- name: tool.name
level: extended
type: keyword
Expand Down
Loading
Loading