From 7c70fd0bdc75e7d356c5555b0e79344ab0524f41 Mon Sep 17 00:00:00 2001 From: Bjørn Christian Seime Date: Thu, 17 Jan 2019 14:03:30 +0100 Subject: Propagate jrt transport metrics to metrics framework --- .../yahoo/container/jdisc/metric/JrtMetrics.java | 44 ++++++++++++++++++++++ .../container/jdisc/metric/MetricUpdater.java | 3 ++ 2 files changed, 47 insertions(+) create mode 100644 container-disc/src/main/java/com/yahoo/container/jdisc/metric/JrtMetrics.java (limited to 'container-disc') diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/metric/JrtMetrics.java b/container-disc/src/main/java/com/yahoo/container/jdisc/metric/JrtMetrics.java new file mode 100644 index 00000000000..01709844f6a --- /dev/null +++ b/container-disc/src/main/java/com/yahoo/container/jdisc/metric/JrtMetrics.java @@ -0,0 +1,44 @@ +// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.container.jdisc.metric; + +import com.yahoo.jdisc.Metric; +import com.yahoo.jrt.TransportMetrics; + +import java.util.function.ToLongFunction; + +import static com.yahoo.jrt.TransportMetrics.*; + +/** + * Emits jrt metrics + * + * @author bjorncs + */ +class JrtMetrics { + + private final TransportMetrics transportMetrics = TransportMetrics.getInstance(); + private final Metric metric; + private volatile Snapshot previousSnapshot; + + JrtMetrics(Metric metric) { + this.metric = metric; + } + + void emitMetrics() { + Snapshot snapshot = transportMetrics.snapshot(); + increment("jrt.transport.tls-certificate-verification-failures", Snapshot::tlsCertificateVerificationFailures, snapshot); + increment("jrt.transport.peer-authorization-failures", Snapshot::peerAuthorizationFailures, snapshot); + increment("jrt.transport.server.tls-connections-established", Snapshot::serverTlsConnectionsEstablished, snapshot); + increment("jrt.transport.client.tls-connections-established", Snapshot::clientTlsConnectionsEstablished, snapshot); + increment("jrt.transport.server.unencrypted-connections-established", Snapshot::serverUnencryptedConnectionsEstablished, snapshot); + increment("jrt.transport.client.unencrypted-connections-established", Snapshot::clientUnencryptedConnectionsEstablished, snapshot); + previousSnapshot = snapshot; + } + + private void increment(String metricName, ToLongFunction metricGetter, Snapshot snapshot) { + long currentValue = metricGetter.applyAsLong(snapshot); + long increment = previousSnapshot != null + ? currentValue - metricGetter.applyAsLong(previousSnapshot) + : currentValue; + metric.add(metricName, increment, null); + } +} diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricUpdater.java b/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricUpdater.java index 98787eaeeeb..e11622b1fa3 100644 --- a/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricUpdater.java +++ b/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricUpdater.java @@ -88,11 +88,13 @@ public class MetricUpdater extends AbstractComponent { private final Metric metric; private final ContainerWatchdogMetrics containerWatchdogMetrics; private final GarbageCollectionMetrics garbageCollectionMetrics; + private final JrtMetrics jrtMetrics; public UpdaterTask(Metric metric, ContainerWatchdogMetrics containerWatchdogMetrics) { this.metric = metric; this.containerWatchdogMetrics = containerWatchdogMetrics; this.garbageCollectionMetrics = new GarbageCollectionMetrics(Clock.systemUTC()); + this.jrtMetrics = new JrtMetrics(metric); } @SuppressWarnings("deprecation") @@ -109,6 +111,7 @@ public class MetricUpdater extends AbstractComponent { containerWatchdogMetrics.emitMetrics(metric); garbageCollectionMetrics.emitMetrics(metric); + jrtMetrics.emitMetrics(); } } -- cgit v1.2.3