Skip to content

Commit e04a25f

Browse files
committed
record inflight and evicted at a regular rate
1 parent 5c0613b commit e04a25f

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

src/main/java/com/arpnetworking/tsdcore/sinks/HttpPostSinkActor.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
*/
1616
package com.arpnetworking.tsdcore.sinks;
1717

18-
import akka.actor.AbstractActor;
18+
import akka.actor.AbstractActorWithTimers;
1919
import akka.actor.Props;
2020
import akka.pattern.Patterns;
2121
import com.arpnetworking.logback.annotations.LogValue;
@@ -52,7 +52,7 @@
5252
*
5353
* @author Brandon Arp (brandon dot arp at inscopemetrics dot io)
5454
*/
55-
public class HttpPostSinkActor extends AbstractActor {
55+
public class HttpPostSinkActor extends AbstractActorWithTimers {
5656
/**
5757
* Factory method to create a Props.
5858
*
@@ -112,6 +112,7 @@ public HttpPostSinkActor(
112112
_responseStatusName = "sinks/http_post/" + sink.getMetricSafeName() + "/status";
113113
_samplesDroppedName = "sinks/http_post/" + sink.getMetricSafeName() + "/samples_dropped";
114114
_samplesSentName = "sinks/http_post/" + sink.getMetricSafeName() + "/samples_sent";
115+
timers().startTimerAtFixedRate("metrics", SampleMetrics.INSTANCE, Duration.ofSeconds(1), Duration.ofSeconds(1));
115116
}
116117

117118
@Override
@@ -179,9 +180,19 @@ public Receive createReceive() {
179180
.match(PostRejected.class, this::processRejectedRequest)
180181
.match(PostFailure.class, this::processFailedRequest)
181182
.match(WaitTimeExpired.class, this::waitTimeExpired)
183+
.match(SampleMetrics.class, this::sampleMetrics)
182184
.build();
183185
}
184186

187+
private void sampleMetrics(final SampleMetrics ignored) {
188+
_periodicMetrics.recordGauge(_inflightRequestsCountName, _inflightRequestsCount);
189+
_periodicMetrics.recordGauge(_pendingRequestsQueueSizeName, _pendingRequests.size());
190+
_periodicMetrics.recordCounter(_samplesSentName, 0);
191+
_periodicMetrics.recordCounter(_evictedRequestsName, 0);
192+
_periodicMetrics.recordCounter(_requestSuccessName, 0);
193+
_periodicMetrics.recordCounter(_samplesDroppedName, 0);
194+
}
195+
185196
private void waitTimeExpired(final WaitTimeExpired ignored) {
186197
LOGGER.debug()
187198
.setMessage("Received WaitTimeExpired message")
@@ -489,4 +500,9 @@ public void onThrowable(final Throwable throwable) {
489500

490501
private final CompletableFuture<Response> _promise;
491502
}
503+
504+
private static final class SampleMetrics {
505+
private SampleMetrics() { }
506+
private static final SampleMetrics INSTANCE = new SampleMetrics();
507+
}
492508
}

0 commit comments

Comments
 (0)