Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
23426b0
Add new index settings support for profiling
MichelLosier Feb 17, 2026
9d94633
Add profiles policy template type for input packages
MichelLosier Feb 17, 2026
eba953e
Add good_input_profiles test
MichelLosier Feb 17, 2026
2edb3aa
Add PR links to changelogs
MichelLosier Feb 17, 2026
9368c6a
Use 'profiling' policy template type, instead of 'profiles'
MichelLosier Feb 18, 2026
7db0020
Undo formatting changes
MichelLosier Feb 18, 2026
a07acf3
Add support for 'profiles' type for input package policy_templates
MichelLosier Feb 19, 2026
2b46b0e
Rework good_input_profiles test package and start compliance test
MichelLosier Feb 19, 2026
a80f568
Add JSON patch for profiles input policy template type support below …
MichelLosier Feb 20, 2026
ca6edba
Add good_input_profiles to validator, remove fields def, change to no…
MichelLosier Feb 23, 2026
b8b7421
Remove index_template assertion for good_input_profiles compliance test
MichelLosier Feb 23, 2026
3b4915b
Remove elasticsearch config from good_input_profiles manifest
MichelLosier Feb 23, 2026
333d035
Fix formatting
MichelLosier Feb 23, 2026
95a9604
Fix removal of profiles enum for < 3.6.0 spec
MichelLosier Feb 24, 2026
039b78f
Update manifest spec to require input otelcol for profiles type
MichelLosier Feb 27, 2026
e8ce919
Fix allOf rule positioning, update json patch
MichelLosier Feb 27, 2026
41a6391
Add bad_input_profiles_non_otel test package
MichelLosier Feb 27, 2026
2c42d1b
Adjust location of profiles otelcol constraint in spec
MichelLosier Feb 27, 2026
6dae359
Merge branch 'main' into profiling-support
MichelLosier Mar 2, 2026
14b16e5
Add compliance test scenario for expected otel pipeline in input temp…
MichelLosier Mar 3, 2026
81638ee
Add comment for MustExistInputTemplateWithOtelPipeline
MichelLosier Mar 3, 2026
68f58af
Formatting
MichelLosier Mar 3, 2026
5997fa8
Revert input templates compliance test
MichelLosier Mar 4, 2026
c5cee93
Revert small format changes
MichelLosier Mar 4, 2026
fddc7c4
Merge branch 'main' into profiling-support
MichelLosier Mar 5, 2026
263a6e3
Add comment in compliance test about why we don't assert on es assets…
MichelLosier Mar 5, 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
7 changes: 7 additions & 0 deletions code/go/pkg/validator/validator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ func TestValidateFile(t *testing.T) {
"good_input": {},
"good_input_otel": {},
"good_input_dynamic_signal_type": {},
"good_input_profiles": {},
"good_input_template_paths": {},
"good_integration_template_paths": {},
"good_content": {},
Expand Down Expand Up @@ -390,6 +391,12 @@ func TestValidateFile(t *testing.T) {
"field policy_templates.0.input: Must not be present",
},
},
"bad_input_profiles_non_otel": {
"manifest.yml",
[]string{
"field policy_templates.0.input: policy_templates.0.input must be one of the following: \"otelcol\"",
},
},
"bad_input_dynamic_signal_types_non_otel": {
"manifest.yml",
[]string{
Expand Down
6 changes: 6 additions & 0 deletions compliance/features/basic.feature
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,9 @@ Feature: Basic package types support
Given the "good_v3" package is installed
And a policy is created with "good_v3" package, "1.1.0" version, "otel" template, "otelcol" input type and dataset "good_v3.otel_test"
Then there is an index template "logs-good_v3.otel_test" with pattern "logs-good_v3.otel_test.otel-*"

@3.6.0
Scenario: OTel input package with profiles type can be installed
Given the "good_input_profiles" package is installed
And a policy is created with "good_input_profiles" package, "0.0.1" version, "profilingreceiver" template, "profilingreceiver" input, "otelcol" input type and dataset "spec.otel_input_test"
# We omit assertions here because 'profiles' OTel packages should not produce ES assets which is currently handled by an ES plugin. https://github.com/elastic/package-spec/pull/1092#discussion_r2857893043
6 changes: 6 additions & 0 deletions spec/changelog.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,12 @@
- description: Allow to force the format used in the policy API in system and policy tests.
type: enhancement
link: https://github.com/elastic/package-spec/pull/1103
- description: Add support for auto_expand_replicas, max_result_window, and refresh_interval index settings in data stream templates.
type: enhancement
link: https://github.com/elastic/package-spec/pull/1092
- description: Add support for `profiles` policy template type in input packages
type: enhancement
link: https://github.com/elastic/package-spec/pull/1092
- version: 3.5.7
changes:
- description: Allow _dev directory for content-only packages; use _dev/shared for development files (e.g. dashboard YML sources).
Expand Down
44 changes: 30 additions & 14 deletions spec/input/manifest.spec.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ spec:
- logs
- synthetics
- traces
- profiles
examples:
- metrics
title:
Expand Down Expand Up @@ -96,23 +97,36 @@ spec:
allOf:
# Either template_path or template_paths must be present (mutually exclusive)
- oneOf:
- required:
- template_path
not:
required:
- template_paths
- required:
- required:
- template_path
not:
required:
- template_paths
not:
required:
- template_path
- required:
- template_paths
not:
required:
- template_path
# Either type is required, or dynamic_signal_types must be true
- oneOf:
- allOf:
- required:
- type
- properties:
dynamic_signal_types:
const: true
- type
# If type is profiles, can only use otelcol inputs
- if:
properties:
type:
const: profiles
then:
properties:
input:
enum:
- otelcol
- required:
- dynamic_signal_types
properties:
dynamic_signal_types:
const: true
required:
- name
- title
Expand Down Expand Up @@ -155,7 +169,7 @@ versions:
- op: remove
path: "/properties/policy_templates/items/properties/template_paths" # removes template_paths field for policy templates
- op: remove
path: "/properties/policy_templates/items/allOf" # removes allOf constraint for template_path/template_paths and dynamic_signal_types/type
path: "/properties/policy_templates/items/allOf" # removes allOf constraint for template_path/template_paths, dynamic_signal_types/type, and profiles otelcol input
- op: add
path: "/properties/policy_templates/items/required"
value:
Expand All @@ -173,6 +187,8 @@ versions:
path: "/properties/deprecated" # removes deprecated field for package
- op: remove
path: "/properties/policy_templates/items/properties/deprecated" # removes deprecated field for policy templates
- op: remove
path: "/properties/policy_templates/items/properties/type/enum/4" # removes 'profiles' as a valid policy template type, since it requires Kibana version >= 9.4.0 support
# Reserve otelcol input name before 3.5.0.
- before: 3.5.0
patch:
Expand Down
32 changes: 32 additions & 0 deletions spec/integration/data_stream/manifest.spec.yml
Original file line number Diff line number Diff line change
Expand Up @@ -263,6 +263,12 @@ spec:
$ref: "#/definitions/index_template_setting_index"
number_of_shards:
$ref: "#/definitions/index_template_setting_number_of_shards"
auto_expand_replicas:
$ref: "#/definitions/index_template_setting_auto_expand_replicas"
max_result_window:
$ref: "#/definitions/index_template_setting_max_result_window"
refresh_interval:
$ref: "#/definitions/index_template_setting_refresh_interval"
Comment thread
MichelLosier marked this conversation as resolved.
mappings:
description: Mappings section of index template
type: object
Expand Down Expand Up @@ -512,6 +518,32 @@ spec:
type: integer
minimum: 1
default: 1
index_template_setting_auto_expand_replicas:
description: |
Auto-expand the number of replicas based on the number of data nodes in the cluster.
Set to a dash delimited lower and upper bound (e.g. 0-5) or use `all` for the upper bound (e.g. 0-all). Defaults to false (i.e. disabled).
type: string
examples:
- "0-1"
- "0-all"
- "false"
index_template_setting_max_result_window:
description: |
The maximum value of `from + size` for searches to this index. Defaults to 10000.
Search requests take heap memory and time proportional to `from + size` and this limits that memory.
type: integer
minimum: 1
examples:
- 50000
index_template_setting_refresh_interval:
description: |
How often to perform a refresh operation, which makes recent changes to the index visible to search. The value defaults to `1s` in Elastic Stack and `5s` in Serverless. In Serverless, `5s` is also the minimum value that can be set.
Can be set to `-1` to disable refresh.
type: string
examples:
- "10s"
- "1m"
- "-1"
properties:
dataset:
description: Name of data set.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
receivers:
profiling:
{{#if samples_per_second}}
samples_per_second: {{samples_per_second}}
{{/if}}

service:
pipelines:
profiles:
receivers: [ profiling ]
5 changes: 5 additions & 0 deletions test/packages/bad_input_profiles_non_otel/changelog.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
- version: 0.0.1
changes:
- type: enhancement
description: Initial release for testing input policy templates with type `profiles` with a non otelcol input type.
link: https://github.com/elastic/package-spec/pull/1092
1 change: 1 addition & 0 deletions test/packages/bad_input_profiles_non_otel/docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
This is a template for the package README.
32 changes: 32 additions & 0 deletions test/packages/bad_input_profiles_non_otel/manifest.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
format_version: 3.6.0
name: bad_input_profiles_non_otel
title: "Bad OpenTelemetry Profiling"
version: 0.0.1
source:
license: "Elastic-2.0"
description: "Bad OpenTelemetry Profiling"
type: input
categories:
- custom
- observability
- opentelemetry
conditions:
kibana:
version: "^9.4.0"
elastic:
subscription: "basic"
policy_templates:
- name: profilingreceiver
type: profiles
title: OpenTelemetry Profiling receiver
description: Collect profiling data
input: logs
template_path: input.yml.hbs
vars:
- name: samples_per_second
type: integer
required: false
description: Defines the sampling frequency.
owner:
github: elastic/ingest-otel-data
type: elastic
10 changes: 10 additions & 0 deletions test/packages/good_input_profiles/agent/input/input.yml.hbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
receivers:
profiling:
{{#if samples_per_second}}
samples_per_second: {{samples_per_second}}
{{/if}}

service:
pipelines:
profiles:
receivers: [ profiling ]
5 changes: 5 additions & 0 deletions test/packages/good_input_profiles/changelog.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
- version: 0.0.1
changes:
- type: enhancement
description: Initial release for testing input policy templates with type `profiles`.
link: https://github.com/elastic/package-spec/pull/1092
1 change: 1 addition & 0 deletions test/packages/good_input_profiles/docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
This is a template for the package README.
32 changes: 32 additions & 0 deletions test/packages/good_input_profiles/manifest.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
format_version: 3.6.0
name: good_input_profiles
title: "OpenTelemetry Profiling"
version: 0.0.1
source:
license: "Elastic-2.0"
description: "OpenTelemetry Profiling"
type: input
categories:
- custom
- observability
- opentelemetry
conditions:
kibana:
version: "^9.4.0"
elastic:
subscription: "basic"
policy_templates:
- name: profilingreceiver
type: profiles
title: OpenTelemetry Profiling receiver
description: Collect profiling data
input: otelcol
template_path: input.yml.hbs
vars:
- name: samples_per_second
type: integer
required: false
description: Defines the sampling frequency.
owner:
github: elastic/ingest-otel-data
type: elastic
3 changes: 3 additions & 0 deletions test/packages/good_v3/data_stream/foo/manifest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,9 @@ elasticsearch:
dimension_fields:
limit: 32
number_of_shards: 1
auto_expand_replicas: "0-1"
max_result_window: 150000
refresh_interval: "10s"
mappings:
dynamic: strict
dynamic_templates:
Expand Down