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
49 changes: 47 additions & 2 deletions .generator/schemas/v2/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -67693,6 +67693,10 @@ components:
The `parse_grok` processor extracts structured fields from unstructured log messages using Grok patterns.

**Supported pipeline types:** logs
example:
id: "parse-grok-processor"
include: "service:my-service"
type: "parse_grok"
properties:
disable_library_rules:
default: false
Expand All @@ -67705,6 +67709,11 @@ components:
description: Indicates whether the processor is enabled.
example: true
type: boolean
field:
default: "message"
description: The log field to parse with the Grok rules.
example: "message"
type: string
id:
description: A unique identifier for this processor.
example: "parse-grok-processor"
Expand All @@ -67714,9 +67723,9 @@ components:
example: "service:my-service"
type: string
rules:
description: The list of Grok parsing rules. If multiple matching rules are provided, they are evaluated in order. The first successful match is applied.
description: The list of Grok parsing rules selected by either source field or include query.
items:
$ref: "#/components/schemas/ObservabilityPipelineParseGrokProcessorRule"
$ref: "#/components/schemas/ObservabilityPipelineParseGrokProcessorRuleItem"
type: array
type:
$ref: "#/components/schemas/ObservabilityPipelineParseGrokProcessorType"
Expand All @@ -67728,6 +67737,37 @@ components:
- enabled
type: object
x-pipeline-types: [logs]
ObservabilityPipelineParseGrokProcessorIncludeRule:
description: |-
A Grok parsing rule selected using the `include` query. Each rule defines how to extract structured fields
from logs matching a Datadog search query.
properties:
include:
description: A Datadog search query used to determine which logs this Grok rule targets.
example: "service:my-service"
type: string
match_rules:
description: |-
A list of Grok parsing rules that define how to extract fields from matching logs.
Each rule must contain a name and a valid Grok pattern.
example:
- name: "MyParsingRule"
rule: '%{word:user} connected on %{date("MM/dd/yyyy"):date}'
items:
$ref: "#/components/schemas/ObservabilityPipelineParseGrokProcessorRuleMatchRule"
type: array
support_rules:
description: A list of Grok helper rules that can be referenced by the parsing rules.
example:
- name: "user"
rule: "%{word:user.name}"
items:
$ref: "#/components/schemas/ObservabilityPipelineParseGrokProcessorRuleSupportRule"
type: array
required:
- include
- match_rules
type: object
ObservabilityPipelineParseGrokProcessorRule:
description: |-
A Grok parsing rule used in the `parse_grok` processor. Each rule defines how to extract structured fields
Expand Down Expand Up @@ -67760,6 +67800,11 @@ components:
- source
- match_rules
type: object
ObservabilityPipelineParseGrokProcessorRuleItem:
description: A single Grok parsing rule, selected by either source field or include query.
oneOf:
- $ref: "#/components/schemas/ObservabilityPipelineParseGrokProcessorRule"
- $ref: "#/components/schemas/ObservabilityPipelineParseGrokProcessorIncludeRule"
ObservabilityPipelineParseGrokProcessorRuleMatchRule:
description: |-
Defines a Grok parsing rule, which extracts structured fields from log content using named Grok patterns.
Expand Down
104 changes: 104 additions & 0 deletions examples/v2/observability-pipelines/ValidatePipeline_3345949653.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
// Validate an observability pipeline with parse grok processor source rules returns "OK" response

import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v2.api.ObservabilityPipelinesApi;
import com.datadog.api.client.v2.model.ObservabilityPipelineConfig;
import com.datadog.api.client.v2.model.ObservabilityPipelineConfigDestinationItem;
import com.datadog.api.client.v2.model.ObservabilityPipelineConfigProcessorGroup;
import com.datadog.api.client.v2.model.ObservabilityPipelineConfigProcessorItem;
import com.datadog.api.client.v2.model.ObservabilityPipelineConfigSourceItem;
import com.datadog.api.client.v2.model.ObservabilityPipelineDataAttributes;
import com.datadog.api.client.v2.model.ObservabilityPipelineDatadogAgentSource;
import com.datadog.api.client.v2.model.ObservabilityPipelineDatadogAgentSourceType;
import com.datadog.api.client.v2.model.ObservabilityPipelineDatadogLogsDestination;
import com.datadog.api.client.v2.model.ObservabilityPipelineDatadogLogsDestinationType;
import com.datadog.api.client.v2.model.ObservabilityPipelineParseGrokProcessor;
import com.datadog.api.client.v2.model.ObservabilityPipelineParseGrokProcessorRule;
import com.datadog.api.client.v2.model.ObservabilityPipelineParseGrokProcessorRuleItem;
import com.datadog.api.client.v2.model.ObservabilityPipelineParseGrokProcessorRuleMatchRule;
import com.datadog.api.client.v2.model.ObservabilityPipelineParseGrokProcessorType;
import com.datadog.api.client.v2.model.ObservabilityPipelineSpec;
import com.datadog.api.client.v2.model.ObservabilityPipelineSpecData;
import com.datadog.api.client.v2.model.ValidationResponse;
import java.util.Collections;

public class Example {
public static void main(String[] args) {
ApiClient defaultClient = ApiClient.getDefaultApiClient();
ObservabilityPipelinesApi apiInstance = new ObservabilityPipelinesApi(defaultClient);

ObservabilityPipelineSpec body =
new ObservabilityPipelineSpec()
.data(
new ObservabilityPipelineSpecData()
.attributes(
new ObservabilityPipelineDataAttributes()
.config(
new ObservabilityPipelineConfig()
.destinations(
Collections.singletonList(
new ObservabilityPipelineConfigDestinationItem(
new ObservabilityPipelineDatadogLogsDestination()
.id("datadog-logs-destination")
.inputs(
Collections.singletonList(
"my-processor-group"))
.type(
ObservabilityPipelineDatadogLogsDestinationType
.DATADOG_LOGS))))
.processorGroups(
Collections.singletonList(
new ObservabilityPipelineConfigProcessorGroup()
.enabled(true)
.id("my-processor-group")
.include("service:my-service")
.inputs(
Collections.singletonList(
"datadog-agent-source"))
.processors(
Collections.singletonList(
new ObservabilityPipelineConfigProcessorItem(
new ObservabilityPipelineParseGrokProcessor()
.enabled(true)
.id("parse-grok-processor")
.include("*")
.type(
ObservabilityPipelineParseGrokProcessorType
.PARSE_GROK)
.rules(
Collections.singletonList(
new ObservabilityPipelineParseGrokProcessorRuleItem(
new ObservabilityPipelineParseGrokProcessorRule()
.source("message")
.matchRules(
Collections
.singletonList(
new ObservabilityPipelineParseGrokProcessorRuleMatchRule()
.name(
"MyParsingRule")
.rule(
"%{word:user}")))))))))))
.sources(
Collections.singletonList(
new ObservabilityPipelineConfigSourceItem(
new ObservabilityPipelineDatadogAgentSource()
.id("datadog-agent-source")
.type(
ObservabilityPipelineDatadogAgentSourceType
.DATADOG_AGENT)))))
.name("Pipeline with Parse Grok Source Rules"))
.type("pipelines"));

try {
ValidationResponse result = apiInstance.validatePipeline(body);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ObservabilityPipelinesApi#validatePipeline");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}
106 changes: 106 additions & 0 deletions examples/v2/observability-pipelines/ValidatePipeline_3928499240.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
// Validate an observability pipeline with parse grok processor include rules returns "OK" response

import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v2.api.ObservabilityPipelinesApi;
import com.datadog.api.client.v2.model.ObservabilityPipelineConfig;
import com.datadog.api.client.v2.model.ObservabilityPipelineConfigDestinationItem;
import com.datadog.api.client.v2.model.ObservabilityPipelineConfigProcessorGroup;
import com.datadog.api.client.v2.model.ObservabilityPipelineConfigProcessorItem;
import com.datadog.api.client.v2.model.ObservabilityPipelineConfigSourceItem;
import com.datadog.api.client.v2.model.ObservabilityPipelineDataAttributes;
import com.datadog.api.client.v2.model.ObservabilityPipelineDatadogAgentSource;
import com.datadog.api.client.v2.model.ObservabilityPipelineDatadogAgentSourceType;
import com.datadog.api.client.v2.model.ObservabilityPipelineDatadogLogsDestination;
import com.datadog.api.client.v2.model.ObservabilityPipelineDatadogLogsDestinationType;
import com.datadog.api.client.v2.model.ObservabilityPipelineParseGrokProcessor;
import com.datadog.api.client.v2.model.ObservabilityPipelineParseGrokProcessorIncludeRule;
import com.datadog.api.client.v2.model.ObservabilityPipelineParseGrokProcessorRuleItem;
import com.datadog.api.client.v2.model.ObservabilityPipelineParseGrokProcessorRuleMatchRule;
import com.datadog.api.client.v2.model.ObservabilityPipelineParseGrokProcessorType;
import com.datadog.api.client.v2.model.ObservabilityPipelineSpec;
import com.datadog.api.client.v2.model.ObservabilityPipelineSpecData;
import com.datadog.api.client.v2.model.ValidationResponse;
import java.util.Collections;

public class Example {
public static void main(String[] args) {
ApiClient defaultClient = ApiClient.getDefaultApiClient();
ObservabilityPipelinesApi apiInstance = new ObservabilityPipelinesApi(defaultClient);

ObservabilityPipelineSpec body =
new ObservabilityPipelineSpec()
.data(
new ObservabilityPipelineSpecData()
.attributes(
new ObservabilityPipelineDataAttributes()
.config(
new ObservabilityPipelineConfig()
.destinations(
Collections.singletonList(
new ObservabilityPipelineConfigDestinationItem(
new ObservabilityPipelineDatadogLogsDestination()
.id("datadog-logs-destination")
.inputs(
Collections.singletonList(
"my-processor-group"))
.type(
ObservabilityPipelineDatadogLogsDestinationType
.DATADOG_LOGS))))
.processorGroups(
Collections.singletonList(
new ObservabilityPipelineConfigProcessorGroup()
.enabled(true)
.id("my-processor-group")
.include("service:my-service")
.inputs(
Collections.singletonList(
"datadog-agent-source"))
.processors(
Collections.singletonList(
new ObservabilityPipelineConfigProcessorItem(
new ObservabilityPipelineParseGrokProcessor()
.enabled(true)
.id("parse-grok-processor")
.include("*")
.type(
ObservabilityPipelineParseGrokProcessorType
.PARSE_GROK)
.field("content")
.rules(
Collections.singletonList(
new ObservabilityPipelineParseGrokProcessorRuleItem(
new ObservabilityPipelineParseGrokProcessorIncludeRule()
.include(
"service:foo")
.matchRules(
Collections
.singletonList(
new ObservabilityPipelineParseGrokProcessorRuleMatchRule()
.name(
"MyParsingRule")
.rule(
"%{word:user}")))))))))))
.sources(
Collections.singletonList(
new ObservabilityPipelineConfigSourceItem(
new ObservabilityPipelineDatadogAgentSource()
.id("datadog-agent-source")
.type(
ObservabilityPipelineDatadogAgentSourceType
.DATADOG_AGENT)))))
.name("Pipeline with Parse Grok Include Rules"))
.type("pipelines"));

try {
ValidationResponse result = apiInstance.validatePipeline(body);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ObservabilityPipelinesApi#validatePipeline");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}
Loading
Loading