-
Notifications
You must be signed in to change notification settings - Fork 188
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add Internal and external latency to OpenSearch and S3 sinks. (#3583)
Add Internal and external latency to OpenSearch and S3 sinks Signed-off-by: Krishna Kondaka <krishkdk@dev-dsk-krishkdk-2c-bd29c437.us-west-2.amazon.com> Co-authored-by: Krishna Kondaka <krishkdk@dev-dsk-krishkdk-2c-bd29c437.us-west-2.amazon.com>
- Loading branch information
Showing
19 changed files
with
388 additions
and
46 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
33 changes: 33 additions & 0 deletions
33
data-prepper-api/src/main/java/org/opensearch/dataprepper/model/sink/SinkLatencyMetrics.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
/* | ||
* Copyright OpenSearch Contributors | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
package org.opensearch.dataprepper.model.sink; | ||
|
||
import org.opensearch.dataprepper.metrics.PluginMetrics; | ||
import io.micrometer.core.instrument.DistributionSummary; | ||
import org.opensearch.dataprepper.model.event.EventHandle; | ||
|
||
import java.time.Duration; | ||
import java.time.Instant; | ||
|
||
public class SinkLatencyMetrics { | ||
public static final String INTERNAL_LATENCY = "internalLatency"; | ||
public static final String EXTERNAL_LATENCY = "externalLatency"; | ||
private final DistributionSummary internalLatencySummary; | ||
private final DistributionSummary externalLatencySummary; | ||
|
||
public SinkLatencyMetrics(PluginMetrics pluginMetrics) { | ||
internalLatencySummary = pluginMetrics.summary(INTERNAL_LATENCY); | ||
externalLatencySummary = pluginMetrics.summary(EXTERNAL_LATENCY); | ||
} | ||
public void update(final EventHandle eventHandle) { | ||
Instant now = Instant.now(); | ||
internalLatencySummary.record(Duration.between(eventHandle.getInternalOriginationTime(), now).toMillis()); | ||
if (eventHandle.getExternalOriginationTime() == null) { | ||
return; | ||
} | ||
externalLatencySummary.record(Duration.between(eventHandle.getExternalOriginationTime(), now).toMillis()); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
71 changes: 71 additions & 0 deletions
71
...epper-api/src/test/java/org/opensearch/dataprepper/model/sink/SinkLatencyMetricsTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
/* | ||
* Copyright OpenSearch Contributors | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
package org.opensearch.dataprepper.model.sink; | ||
|
||
import org.opensearch.dataprepper.metrics.PluginMetrics; | ||
import org.opensearch.dataprepper.model.event.EventHandle; | ||
import io.micrometer.core.instrument.simple.SimpleMeterRegistry; | ||
import io.micrometer.core.instrument.DistributionSummary; | ||
|
||
import org.junit.jupiter.api.BeforeEach; | ||
import org.junit.jupiter.api.Test; | ||
|
||
import static org.mockito.Mockito.mock; | ||
import static org.mockito.Mockito.when; | ||
import static org.hamcrest.MatcherAssert.assertThat; | ||
import static org.hamcrest.Matchers.equalTo; | ||
import static org.hamcrest.Matchers.greaterThanOrEqualTo; | ||
|
||
import java.time.Instant; | ||
|
||
class SinkLatencyMetricsTest { | ||
|
||
private PluginMetrics pluginMetrics; | ||
private EventHandle eventHandle; | ||
private SinkLatencyMetrics latencyMetrics; | ||
private DistributionSummary internalLatencySummary; | ||
private DistributionSummary externalLatencySummary; | ||
|
||
public SinkLatencyMetrics createObjectUnderTest() { | ||
return new SinkLatencyMetrics(pluginMetrics); | ||
} | ||
|
||
@BeforeEach | ||
void setup() { | ||
pluginMetrics = mock(PluginMetrics.class); | ||
SimpleMeterRegistry registry = new SimpleMeterRegistry(); | ||
internalLatencySummary = DistributionSummary | ||
.builder("internalLatency") | ||
.baseUnit("milliseconds") | ||
.register(registry); | ||
externalLatencySummary = DistributionSummary | ||
.builder("externalLatency") | ||
.baseUnit("milliseconds") | ||
.register(registry); | ||
when(pluginMetrics.summary(SinkLatencyMetrics.INTERNAL_LATENCY)).thenReturn(internalLatencySummary); | ||
when(pluginMetrics.summary(SinkLatencyMetrics.EXTERNAL_LATENCY)).thenReturn(externalLatencySummary); | ||
eventHandle = mock(EventHandle.class); | ||
when(eventHandle.getInternalOriginationTime()).thenReturn(Instant.now()); | ||
latencyMetrics = createObjectUnderTest(); | ||
} | ||
|
||
@Test | ||
public void testInternalOriginationTime() { | ||
latencyMetrics.update(eventHandle); | ||
assertThat(internalLatencySummary.count(), equalTo(1L)); | ||
} | ||
|
||
@Test | ||
public void testExternalOriginationTime() { | ||
when(eventHandle.getExternalOriginationTime()).thenReturn(Instant.now().minusMillis(10)); | ||
latencyMetrics.update(eventHandle); | ||
assertThat(internalLatencySummary.count(), equalTo(1L)); | ||
assertThat(externalLatencySummary.count(), equalTo(1L)); | ||
assertThat(externalLatencySummary.max(), greaterThanOrEqualTo(10.0)); | ||
} | ||
} | ||
|
||
|
43 changes: 43 additions & 0 deletions
43
data-prepper-api/src/test/java/org/opensearch/dataprepper/model/sink/SinkTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
/* | ||
* Copyright OpenSearch Contributors | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
package org.opensearch.dataprepper.model.sink; | ||
|
||
import org.opensearch.dataprepper.model.record.Record; | ||
import org.junit.jupiter.api.Test; | ||
|
||
import java.util.Collection; | ||
import java.util.Collections; | ||
|
||
public class SinkTest { | ||
private static class SinkTestClass implements Sink<Record<?>> { | ||
|
||
@Override | ||
public boolean isReady() { | ||
return true; | ||
} | ||
|
||
@Override | ||
public void shutdown() { | ||
} | ||
|
||
@Override | ||
public void initialize() { | ||
} | ||
|
||
@Override | ||
public void output(Collection<Record<?>> records) { | ||
} | ||
|
||
}; | ||
|
||
SinkTestClass sink; | ||
|
||
@Test | ||
public void testSinkUpdateLatencyMetrics() { | ||
sink = new SinkTestClass(); | ||
sink.updateLatencyMetrics(Collections.emptyList()); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.