Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
41e2bc0
Add TimeSeries based Service Map Processor
neeraj-nkm Dec 2, 2025
34fcae1
test cases fix
san81 Jan 9, 2026
d7e45a9
Merge remote-tracking branch 'data-prepper-apm/main' into otel-apm-se…
san81 Jan 15, 2026
0e74abd
Converting service topology output to have iso formatted date and tim…
san81 Jan 15, 2026
6d17448
fixing the corresponding opensearch template to produce ISO format date
san81 Jan 15, 2026
8c7ba74
fixing the corresponding opensearch template to produce ISO format date
san81 Jan 16, 2026
bc57bbc
Merge branch 'opensearch-project:main' into otel-apm-service-map-proc…
san81 Jan 16, 2026
62ca734
Merge remote-tracking branch 'origin/otel-apm-service-map-processor' …
san81 Jan 16, 2026
d730db1
Merge branch 'opensearch-project:main' into otel-apm-service-map-proc…
san81 Jan 27, 2026
e00a71d
License headers. Long to Instant or Duration type changes
san81 Jan 27, 2026
a708821
removed unused import
san81 Jan 27, 2026
1ed237f
Add TimeSeries based Service Map Processor
neeraj-nkm Dec 2, 2025
c728953
test cases fix
san81 Jan 9, 2026
31d714f
Converting service topology output to have iso formatted date and tim…
san81 Jan 15, 2026
88829d9
fixing the corresponding opensearch template to produce ISO format date
san81 Jan 15, 2026
512a789
fixing the corresponding opensearch template to produce ISO format date
san81 Jan 16, 2026
e69f394
Implement handling strategy for retryable vs non-retryable exceptons …
vecheka Jan 15, 2026
21f3df1
Add read timeout configuration for AWS Lambda plugin (#6408)
ashrao94 Jan 15, 2026
fce4386
Handling mysql decimal data types with precision 19 or higher (#6369)
divbok Jan 15, 2026
b265b93
Add kafka buffer backward compatibility test (#6406)
graytaylor0 Jan 15, 2026
f77e57b
Support building and releasing Docker multi-architecture images (#6411)
dlvenable Jan 16, 2026
de71512
Some clean up on the PrometheusSink class. There were several unused …
dlvenable Jan 16, 2026
899ffba
Add metadata for document version to OpenSearch source (#6416)
graytaylor0 Jan 20, 2026
dfd70c9
Adding functionality to read from specific timestamps for KDS source …
divbok Jan 20, 2026
bc85f25
remove json creator annotation from no-arg constructor in SinkForward…
kennedy-onyia Jan 22, 2026
7d33c9d
Fixes a false reporting bug for the invalidEventHandles counter (#6420)
dlvenable Jan 22, 2026
6771d90
Add thread-safe synchronization to startUpdatingOwnershipForShard (#6…
divbok Jan 23, 2026
7473b36
feat: Add intelligent subscription management and gated metrics for M…
chrisale000 Jan 23, 2026
096d3f4
Data Prepper developer documentation for debugging and using Maven ar…
dlvenable Jan 26, 2026
c18ded7
Synchronization fix for aggregate processor and aggregate event handl…
dlvenable Jan 26, 2026
d0b3b8b
refactor(metrics): migrate buffer/retry metrics to unified VendorAPIM…
chrisale000 Jan 26, 2026
7d73d25
feat: Add configurable lease interval for crawler source (#6432)
chrisale000 Jan 27, 2026
bf0c23c
License headers. Long to Instant or Duration type changes
san81 Jan 27, 2026
1311d55
removed unused import
san81 Jan 27, 2026
2a04d35
Merge branch 'otel-apm-service-map-processor' of github.com:san81/dat…
san81 Jan 27, 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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# Gradle directories
build
bin
.gradle
gradle/tools

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -434,6 +434,8 @@ private Map<String, Object> readIndexTemplate(final String templateFile, final I
templateURL = loadExistingTemplate(templateType, IndexConstants.RAW_STANDARD_TEMPLATE_FILE);
} else if (indexType.equals(IndexType.TRACE_ANALYTICS_SERVICE_MAP)) {
templateURL = loadExistingTemplate(templateType, IndexConstants.SERVICE_MAP_DEFAULT_TEMPLATE_FILE);
} else if (indexType.equals(IndexType.OTEL_APM_SERVICE_MAP)) {
templateURL = loadExistingTemplate(templateType, IndexConstants.OTEL_APM_SERVICE_MAP_TEMPLATE_FILE);
} else if (indexType.equals(IndexType.LOG_ANALYTICS)) {
templateURL = loadExistingTemplate(templateType, IndexConstants.LOGS_DEFAULT_TEMPLATE_FILE);
} else if (indexType.equals(IndexType.LOG_ANALYTICS_PLAIN)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,12 @@ public class IndexConstants {
public static final String ISM_ROLLOVER_ALIAS_SETTING = "opendistro.index_state_management.rollover_alias";
// TODO: extract out version number into version enum
public static final String SERVICE_MAP_DEFAULT_TEMPLATE_FILE = "otel-v1-apm-service-map-index-template.json";
public static final String OTEL_APM_SERVICE_MAP_TEMPLATE_FILE = "otel-apm-service-map-index-template.json";

static {
// TODO: extract out version number into version enum
TYPE_TO_DEFAULT_ALIAS.put(IndexType.TRACE_ANALYTICS_SERVICE_MAP, "otel-v1-apm-service-map");
TYPE_TO_DEFAULT_ALIAS.put(IndexType.OTEL_APM_SERVICE_MAP, "otel-apm-service-map");
TYPE_TO_DEFAULT_ALIAS.put(IndexType.TRACE_ANALYTICS_RAW, "otel-v1-apm-span");
TYPE_TO_DEFAULT_ALIAS.put(IndexType.TRACE_ANALYTICS_RAW_PLAIN, "otel-v1-apm-span");
TYPE_TO_DEFAULT_ALIAS.put(IndexType.LOG_ANALYTICS, "logs-otel-v1");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,10 @@ public final IndexManager getIndexManager(final IndexType indexType,
indexManager = new TraceAnalyticsServiceMapIndexManager(
restHighLevelClient, openSearchClient, openSearchSinkConfiguration, clusterSettingsParser, templateStrategy, indexAlias);
break;
case OTEL_APM_SERVICE_MAP:
indexManager = new OTelAPMServiceMapIndexManager(
restHighLevelClient, openSearchClient, openSearchSinkConfiguration, clusterSettingsParser, templateStrategy, indexAlias);
break;
case LOG_ANALYTICS:
case LOG_ANALYTICS_PLAIN:
indexManager = new LogAnalyticsIndexManager(
Expand Down Expand Up @@ -151,6 +155,19 @@ public TraceAnalyticsServiceMapIndexManager(final RestHighLevelClient restHighLe
}
}

private static class OTelAPMServiceMapIndexManager extends AbstractIndexManager {

public OTelAPMServiceMapIndexManager(final RestHighLevelClient restHighLevelClient,
final OpenSearchClient openSearchClient,
final OpenSearchSinkConfiguration openSearchSinkConfiguration,
final ClusterSettingsParser clusterSettingsParser,
final TemplateStrategy templateStrategy,
final String indexAlias) {
super(restHighLevelClient, openSearchClient, openSearchSinkConfiguration, clusterSettingsParser, templateStrategy, indexAlias);
this.ismPolicyManagementStrategy = new NoIsmPolicyManagement(openSearchClient, restHighLevelClient);
}
}

private static class LogAnalyticsIndexManager extends AbstractIndexManager {

public LogAnalyticsIndexManager(final RestHighLevelClient restHighLevelClient,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ public enum IndexType {
TRACE_ANALYTICS_RAW("trace-analytics-raw"),
TRACE_ANALYTICS_RAW_PLAIN("trace-analytics-plain-raw"),
TRACE_ANALYTICS_SERVICE_MAP("trace-analytics-service-map"),
OTEL_APM_SERVICE_MAP("otel-apm-service-map"),
LOG_ANALYTICS("log-analytics"),
LOG_ANALYTICS_PLAIN("log-analytics-plain"),
METRIC_ANALYTICS("metric-analytics"),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
{
"version": 0,
"index_patterns": ["otel-apm-service-map*"],
"mappings": {
"dynamic_templates": [
{
"long_service_group_by_attributes": {
"path_match": "service.groupByAttributes.*",
"match_mapping_type": "long",
"mapping": {
"type": "long"
}
}
},
{
"double_service_group_by_attributes": {
"path_match": "service.groupByAttributes.*",
"match_mapping_type": "double",
"mapping": {
"type": "double"
}
}
},
{
"string_service_group_by_attributes": {
"path_match": "service.groupByAttributes.*",
"match_mapping_type": "string",
"mapping": {
"ignore_above": 256,
"type": "keyword"
}
}
},
{
"long_operation_remote_service_group_by_attributes": {
"path_match": "operation.remoteService.groupByAttributes.*",
"match_mapping_type": "long",
"mapping": {
"type": "long"
}
}
},
{
"double_operation_remote_service_group_by_attributes": {
"path_match": "operation.remoteService.groupByAttributes.*",
"match_mapping_type": "double",
"mapping": {
"type": "double"
}
}
},
{
"string_operation_remote_service_group_by_attributes": {
"path_match": "operation.remoteService.groupByAttributes.*",
"match_mapping_type": "string",
"mapping": {
"ignore_above": 256,
"type": "keyword"
}
}
}
],
"date_detection": false,
"properties": {
"eventType": {
"type": "keyword"
},
"hashCode": {
"type": "keyword"
},
"operation": {
"properties": {
"name": {
"type": "keyword"
},
"remoteOperationName": {
"type": "keyword"
},
"remoteService": {
"properties": {
"groupByAttributes": {
"type": "object",
"dynamic": "true"
},
"keyAttributes": {
"properties": {
"environment": {
"type": "keyword"
},
"name": {
"type": "keyword"
}
}
}
}
}
}
},
"remoteService": {
"properties": {
"groupByAttributes": {
"type": "object",
"dynamic": "true"
},
"keyAttributes": {
"properties": {
"environment": {
"type": "keyword"
},
"name": {
"type": "keyword"
}
}
}
}
},
"service": {
"properties": {
"groupByAttributes": {
"type": "object",
"dynamic": "true"
},
"keyAttributes": {
"properties": {
"environment": {
"type": "keyword"
},
"name": {
"type": "keyword"
}
}
}
}
},
"timestamp": {
"type": "date",
"format": "strict_date_optional_time||epoch_millis"
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
{
"version": 0,
"index_patterns": ["otel-apm-service-map*"],
"mappings": {
"dynamic_templates": [
{
"long_service_group_by_attributes": {
"path_match": "service.groupByAttributes.*",
"match_mapping_type": "long",
"mapping": {
"type": "long"
}
}
},
{
"double_service_group_by_attributes": {
"path_match": "service.groupByAttributes.*",
"match_mapping_type": "double",
"mapping": {
"type": "double"
}
}
},
{
"string_service_group_by_attributes": {
"path_match": "service.groupByAttributes.*",
"match_mapping_type": "string",
"mapping": {
"ignore_above": 256,
"type": "keyword"
}
}
},
{
"long_operation_remote_service_group_by_attributes": {
"path_match": "operation.remoteService.groupByAttributes.*",
"match_mapping_type": "long",
"mapping": {
"type": "long"
}
}
},
{
"double_operation_remote_service_group_by_attributes": {
"path_match": "operation.remoteService.groupByAttributes.*",
"match_mapping_type": "double",
"mapping": {
"type": "double"
}
}
},
{
"string_operation_remote_service_group_by_attributes": {
"path_match": "operation.remoteService.groupByAttributes.*",
"match_mapping_type": "string",
"mapping": {
"ignore_above": 256,
"type": "keyword"
}
}
}
],
"date_detection": false,
"properties": {
"eventType": {
"type": "keyword"
},
"hashCode": {
"type": "keyword"
},
"operation": {
"properties": {
"name": {
"type": "keyword"
},
"remoteOperationName": {
"type": "keyword"
},
"remoteService": {
"properties": {
"groupByAttributes": {
"type": "object",
"dynamic": "true"
},
"keyAttributes": {
"properties": {
"environment": {
"type": "keyword"
},
"name": {
"type": "keyword"
}
}
}
}
}
}
},
"remoteService": {
"properties": {
"groupByAttributes": {
"type": "object",
"dynamic": "true"
},
"keyAttributes": {
"properties": {
"environment": {
"type": "keyword"
},
"name": {
"type": "keyword"
}
}
}
}
},
"service": {
"properties": {
"groupByAttributes": {
"type": "object",
"dynamic": "true"
},
"keyAttributes": {
"properties": {
"environment": {
"type": "keyword"
},
"name": {
"type": "keyword"
}
}
}
}
},
"timestamp": {
"type": "date",
"format": "strict_date_optional_time||epoch_millis"
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ public void getByValue() {
assertEquals(Optional.of(IndexType.TRACE_ANALYTICS_RAW), IndexType.getByValue("trace-analytics-raw"));
assertEquals(Optional.of(IndexType.TRACE_ANALYTICS_RAW_PLAIN), IndexType.getByValue("trace-analytics-plain-raw"));
assertEquals(Optional.of(IndexType.TRACE_ANALYTICS_SERVICE_MAP), IndexType.getByValue("trace-analytics-service-map"));
assertEquals(Optional.of(IndexType.OTEL_APM_SERVICE_MAP), IndexType.getByValue("otel-apm-service-map"));
assertEquals(Optional.of(IndexType.LOG_ANALYTICS), IndexType.getByValue("log-analytics"));
assertEquals(Optional.of(IndexType.LOG_ANALYTICS_PLAIN), IndexType.getByValue("log-analytics-plain"));
assertEquals(Optional.of(IndexType.METRIC_ANALYTICS), IndexType.getByValue("metric-analytics"));
Expand All @@ -36,7 +37,7 @@ public void getByValue() {

@Test
public void getIndexTypeValues() {
assertEquals("[trace-analytics-raw, trace-analytics-plain-raw, trace-analytics-service-map, log-analytics, log-analytics-plain, metric-analytics, metric-analytics-plain, custom, management_disabled]", IndexType.getIndexTypeValues());
assertEquals("[trace-analytics-raw, trace-analytics-plain-raw, trace-analytics-service-map, otel-apm-service-map, log-analytics, log-analytics-plain, metric-analytics, metric-analytics-plain, custom, management_disabled]", IndexType.getIndexTypeValues());
}

@ParameterizedTest
Expand Down
Loading
Loading