-
Notifications
You must be signed in to change notification settings - Fork 282
Add TimeSeries based Service Map Processor #6389
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
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
left a comment
There was a problem hiding this comment.
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 { |
There was a problem hiding this comment.
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 { |
There was a problem hiding this comment.
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 @@ | |||
| /* | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please use the updated license headers:
| @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; |
There was a problem hiding this comment.
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; |
There was a problem hiding this comment.
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"; |
There was a problem hiding this comment.
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.
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
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.