Skip to content

Add TimeSeries based Service Map Processor#6389

Closed
san81 wants to merge 1 commit into
opensearch-project:mainfrom
neeraj-nkm:main
Closed

Add TimeSeries based Service Map Processor#6389
san81 wants to merge 1 commit into
opensearch-project:mainfrom
neeraj-nkm:main

Conversation

@san81

@san81 san81 commented Jan 5, 2026

Copy link
Copy Markdown
Collaborator

Implements time-series based APM service map generation from OpenTelemetry traces using three-window sliding architecture with off-heap storage for scalability. Generates service relationship events and performance metrics.

Description

[Describe what this change achieves]

Issues Resolved

Resolves #[Issue number to be closed when this PR is merged]

Check List

  • New functionality includes testing.
  • New functionality has a documentation issue. Please link to it in this PR.
    • New functionality has javadoc added
  • Commits are signed with a real name per the DCO

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Implements time-series based APM service map generation from OpenTelemetry traces using three-window sliding architecture with off-heap storage for scalability. Generates service relationship events and performance metrics.

@dlvenable dlvenable left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @san81 ! I only took a cursory look so far, but have a few comments.

testImplementation project(':data-prepper-test:test-common')
}

test {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You don't need this section.

useJUnitPlatform()
}

jacocoTestReport {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think you need this either.

@@ -0,0 +1,34 @@
/*

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JsonProperty(value = WINDOW_DURATION, defaultValue = "" + DEFAULT_WINDOW_DURATION)
@JsonPropertyDescription("Represents the fixed time window, in seconds, " +
"during which APM service map relationships are evaluated.")
private int windowDuration = DEFAULT_WINDOW_DURATION;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be defined as a Duration. You can set a min and max using @DurationMin and @DurationMax.

@JsonProperty(value = DB_PATH, defaultValue = DEFAULT_DB_PATH)
@JsonPropertyDescription("Represents folder path for creating database files storing transient data off heap memory" +
"when processing APM service-map data.")
private String dbPath = DEFAULT_DB_PATH;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if this is the right way to go. Why would somebody need to configure this path? I think ideally, this is part of the data-prepper directory structure and is automatically defined.

@JsonClassDescription("The <code>otel_apm_service_map</code> processor uses OpenTelemetry data to create APM service map " +
"relationships for visualization, generating ServiceDetails and ServiceRemoteDetails events.")
public class OtelApmServiceMapProcessorConfig {
private static final String WINDOW_DURATION = "window_duration";

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think there is any value to using these constants. Just put the literal value in the @JsonProperty. Some older implementations did this to support migration from legacy concepts.

@dlvenable

Copy link
Copy Markdown
Member

This was completed in #6479 and this PR is obsolete.

@dlvenable dlvenable closed this Apr 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants