Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
61 changes: 36 additions & 25 deletions .generator/schemas/v2/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -70300,6 +70300,8 @@ components:
$ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit"
maxItems: 100
type: array
tracking_mode:
$ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorTrackingMode"
type:
$ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorType"
value_limit:
Expand All @@ -70314,6 +70316,7 @@ components:
- type
- include
- limit_exceeded_action
- tracking_mode
- value_limit
- enabled
type: object
Expand All @@ -70328,6 +70331,16 @@ components:
x-enum-varnames:
- DROP_TAG
- DROP_EVENT
ObservabilityPipelineTagCardinalityLimitProcessorOverrideType:
description: How the override is applied. `limit_override` enforces a custom limit; `excluded` omits the metric or tag from cardinality tracking.
enum:
- limit_override
- excluded
example: limit_override
type: string
x-enum-varnames:
- LIMIT_OVERRIDE
- EXCLUDED
ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit:
description: A cardinality override applied to a specific metric.
properties:
Expand All @@ -70337,65 +70350,63 @@ components:
description: The name of the metric this override applies to.
example: "system.cpu.user"
type: string
mode:
$ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode"
override_type:
$ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorOverrideType"
per_tag_limits:
description: A list of per-tag cardinality overrides that apply within this metric. Must be omitted when `mode` is `excluded`.
description: A list of per-tag cardinality overrides that apply within this metric. Must be omitted when `override_type` is `excluded`.
items:
$ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit"
maxItems: 50
type: array
value_limit:
description: The maximum number of distinct tag value combinations allowed for this metric. Required when `mode` is `tracked`. Must be omitted when `mode` is `excluded`.
description: The maximum number of distinct tag value combinations allowed for this metric. Required when `override_type` is `limit_override`. Must be omitted when `override_type` is `excluded`.
example: 10000
format: int64
maximum: 1000000
minimum: 0
type: integer
required:
- metric_name
- mode
- override_type
type: object
ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode:
description: How the per-metric override is applied. `tracked` enforces a custom limit; `excluded` skips the metric entirely.
enum:
- tracked
- excluded
example: tracked
type: string
x-enum-varnames:
- TRACKED
- EXCLUDED
ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit:
description: A cardinality override for a specific tag key within a per-metric limit.
properties:
mode:
$ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode"
override_type:
$ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorOverrideType"
tag_key:
description: The tag key this override applies to.
example: "host"
type: string
value_limit:
description: The maximum number of distinct values allowed for this tag. Required when `mode` is `limit_override`. Must be omitted when `mode` is `excluded`.
description: The maximum number of distinct values allowed for this tag. Required when `override_type` is `limit_override`. Must be omitted when `override_type` is `excluded`.
example: 5000
format: int64
maximum: 1000000
minimum: 0
type: integer
required:
- tag_key
- override_type
type: object
ObservabilityPipelineTagCardinalityLimitProcessorTrackingMode:
description: Controls whether the processor uses exact or probabilistic tag tracking.
properties:
mode:
$ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorTrackingModeMode"
required:
- mode
type: object
ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode:
description: How the per-tag override is applied. `limit_override` enforces a custom limit on the tag; `excluded` skips the tag from cardinality tracking.
ObservabilityPipelineTagCardinalityLimitProcessorTrackingModeMode:
description: The cardinality tracking algorithm to use.
enum:
- limit_override
- excluded
example: limit_override
- exact_fingerprint
- probabilistic
example: exact_fingerprint
type: string
x-enum-varnames:
- LIMIT_OVERRIDE
- EXCLUDED
- EXACT_FINGERPRINT
- PROBABILISTIC
ObservabilityPipelineTagCardinalityLimitProcessorType:
default: tag_cardinality_limit
description: The processor type. The value must be `tag_cardinality_limit`.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
ObservabilityPipelineTagCardinalityLimitProcessor.JSON_PROPERTY_INCLUDE,
ObservabilityPipelineTagCardinalityLimitProcessor.JSON_PROPERTY_LIMIT_EXCEEDED_ACTION,
ObservabilityPipelineTagCardinalityLimitProcessor.JSON_PROPERTY_PER_METRIC_LIMITS,
ObservabilityPipelineTagCardinalityLimitProcessor.JSON_PROPERTY_TRACKING_MODE,
ObservabilityPipelineTagCardinalityLimitProcessor.JSON_PROPERTY_TYPE,
ObservabilityPipelineTagCardinalityLimitProcessor.JSON_PROPERTY_VALUE_LIMIT
})
Expand All @@ -58,6 +59,9 @@ public class ObservabilityPipelineTagCardinalityLimitProcessor {
private List<ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit> perMetricLimits =
null;

public static final String JSON_PROPERTY_TRACKING_MODE = "tracking_mode";
private ObservabilityPipelineTagCardinalityLimitProcessorTrackingMode trackingMode;

public static final String JSON_PROPERTY_TYPE = "type";
private ObservabilityPipelineTagCardinalityLimitProcessorType type =
ObservabilityPipelineTagCardinalityLimitProcessorType.TAG_CARDINALITY_LIMIT;
Expand All @@ -74,6 +78,8 @@ public ObservabilityPipelineTagCardinalityLimitProcessor(
@JsonProperty(required = true, value = JSON_PROPERTY_INCLUDE) String include,
@JsonProperty(required = true, value = JSON_PROPERTY_LIMIT_EXCEEDED_ACTION)
ObservabilityPipelineTagCardinalityLimitProcessorAction limitExceededAction,
@JsonProperty(required = true, value = JSON_PROPERTY_TRACKING_MODE)
ObservabilityPipelineTagCardinalityLimitProcessorTrackingMode trackingMode,
@JsonProperty(required = true, value = JSON_PROPERTY_TYPE)
ObservabilityPipelineTagCardinalityLimitProcessorType type,
@JsonProperty(required = true, value = JSON_PROPERTY_VALUE_LIMIT) Long valueLimit) {
Expand All @@ -82,6 +88,8 @@ public ObservabilityPipelineTagCardinalityLimitProcessor(
this.include = include;
this.limitExceededAction = limitExceededAction;
this.unparsed |= !limitExceededAction.isValid();
this.trackingMode = trackingMode;
this.unparsed |= trackingMode.unparsed;
this.type = type;
this.unparsed |= !type.isValid();
this.valueLimit = valueLimit;
Expand Down Expand Up @@ -233,6 +241,29 @@ public void setPerMetricLimits(
this.perMetricLimits = perMetricLimits;
}

public ObservabilityPipelineTagCardinalityLimitProcessor trackingMode(
ObservabilityPipelineTagCardinalityLimitProcessorTrackingMode trackingMode) {
this.trackingMode = trackingMode;
this.unparsed |= trackingMode.unparsed;
return this;
}

/**
* Controls whether the processor uses exact or probabilistic tag tracking.
*
* @return trackingMode
*/
@JsonProperty(JSON_PROPERTY_TRACKING_MODE)
@JsonInclude(value = JsonInclude.Include.ALWAYS)
public ObservabilityPipelineTagCardinalityLimitProcessorTrackingMode getTrackingMode() {
return trackingMode;
}

public void setTrackingMode(
ObservabilityPipelineTagCardinalityLimitProcessorTrackingMode trackingMode) {
this.trackingMode = trackingMode;
}

public ObservabilityPipelineTagCardinalityLimitProcessor type(
ObservabilityPipelineTagCardinalityLimitProcessorType type) {
this.type = type;
Expand Down Expand Up @@ -348,6 +379,8 @@ public boolean equals(Object o) {
observabilityPipelineTagCardinalityLimitProcessor.limitExceededAction)
&& Objects.equals(
this.perMetricLimits, observabilityPipelineTagCardinalityLimitProcessor.perMetricLimits)
&& Objects.equals(
this.trackingMode, observabilityPipelineTagCardinalityLimitProcessor.trackingMode)
&& Objects.equals(this.type, observabilityPipelineTagCardinalityLimitProcessor.type)
&& Objects.equals(
this.valueLimit, observabilityPipelineTagCardinalityLimitProcessor.valueLimit)
Expand All @@ -365,6 +398,7 @@ public int hashCode() {
include,
limitExceededAction,
perMetricLimits,
trackingMode,
type,
valueLimit,
additionalProperties);
Expand All @@ -382,6 +416,7 @@ public String toString() {
.append(toIndentedString(limitExceededAction))
.append("\n");
sb.append(" perMetricLimits: ").append(toIndentedString(perMetricLimits)).append("\n");
sb.append(" trackingMode: ").append(toIndentedString(trackingMode)).append("\n");
sb.append(" type: ").append(toIndentedString(type)).append("\n");
sb.append(" valueLimit: ").append(toIndentedString(valueLimit)).append("\n");
sb.append(" additionalProperties: ")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,41 +19,42 @@
import java.util.Set;

/**
* How the per-tag override is applied. <code>limit_override</code> enforces a custom limit on the
* tag; <code>excluded</code> skips the tag from cardinality tracking.
* How the override is applied. <code>limit_override</code> enforces a custom limit; <code>excluded
* </code> omits the metric or tag from cardinality tracking.
*/
@JsonSerialize(
using =
ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode
.ObservabilityPipelineTagCardinalityLimitProcessorPerTagModeSerializer.class)
public class ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode extends ModelEnum<String> {
ObservabilityPipelineTagCardinalityLimitProcessorOverrideType
.ObservabilityPipelineTagCardinalityLimitProcessorOverrideTypeSerializer.class)
public class ObservabilityPipelineTagCardinalityLimitProcessorOverrideType
extends ModelEnum<String> {

private static final Set<String> allowedValues =
new HashSet<String>(Arrays.asList("limit_override", "excluded"));

public static final ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode LIMIT_OVERRIDE =
new ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode("limit_override");
public static final ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode EXCLUDED =
new ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode("excluded");
public static final ObservabilityPipelineTagCardinalityLimitProcessorOverrideType LIMIT_OVERRIDE =
new ObservabilityPipelineTagCardinalityLimitProcessorOverrideType("limit_override");
public static final ObservabilityPipelineTagCardinalityLimitProcessorOverrideType EXCLUDED =
new ObservabilityPipelineTagCardinalityLimitProcessorOverrideType("excluded");

ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode(String value) {
ObservabilityPipelineTagCardinalityLimitProcessorOverrideType(String value) {
super(value, allowedValues);
}

public static class ObservabilityPipelineTagCardinalityLimitProcessorPerTagModeSerializer
extends StdSerializer<ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode> {
public ObservabilityPipelineTagCardinalityLimitProcessorPerTagModeSerializer(
Class<ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode> t) {
public static class ObservabilityPipelineTagCardinalityLimitProcessorOverrideTypeSerializer
extends StdSerializer<ObservabilityPipelineTagCardinalityLimitProcessorOverrideType> {
public ObservabilityPipelineTagCardinalityLimitProcessorOverrideTypeSerializer(
Class<ObservabilityPipelineTagCardinalityLimitProcessorOverrideType> t) {
super(t);
}

public ObservabilityPipelineTagCardinalityLimitProcessorPerTagModeSerializer() {
public ObservabilityPipelineTagCardinalityLimitProcessorOverrideTypeSerializer() {
this(null);
}

@Override
public void serialize(
ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode value,
ObservabilityPipelineTagCardinalityLimitProcessorOverrideType value,
JsonGenerator jgen,
SerializerProvider provider)
throws IOException, JsonProcessingException {
Expand All @@ -62,8 +63,8 @@ public void serialize(
}

@JsonCreator
public static ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode fromValue(
public static ObservabilityPipelineTagCardinalityLimitProcessorOverrideType fromValue(
String value) {
return new ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode(value);
return new ObservabilityPipelineTagCardinalityLimitProcessorOverrideType(value);
}
}
Loading
Loading