All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.outbrain.ob1k.server.jetty.metrics.StatisticsGuagesFactory Maven / Gradle / Ivy

The newest version!
package com.outbrain.ob1k.server.jetty.metrics;

import com.outbrain.swinfra.metrics.api.Gauge;
import com.outbrain.swinfra.metrics.api.MetricFactory;
import org.eclipse.jetty.server.ConnectorStatistics;
import org.eclipse.jetty.server.handler.StatisticsHandler;
import org.eclipse.jetty.util.thread.QueuedThreadPool;

/**
 * Creates gauges for the Jetty Server statistics
 *
 * @author Eran Harel
 */
public class StatisticsGuagesFactory {

  public static final String SERVER_STATS = "ServerStatistics";

  public static void createGauges(final StatisticsHandler stats, final MetricFactory metricFactory) {
    createResponsesGauges(stats, metricFactory);
    createRequestsGauges(stats, metricFactory);
  }

  private static void createRequestsGauges(final StatisticsHandler stats, final MetricFactory metricFactory) {
    metricFactory.registerGauge(SERVER_STATS, "requests", new Gauge() {
      @Override
      public Integer getValue() {
        return stats.getRequests();
      }
    });

    metricFactory.registerGauge(SERVER_STATS, "requestsActive", new Gauge() {
      @Override
      public Integer getValue() {
        return stats.getRequestsActive();
      }
    });

    metricFactory.registerGauge(SERVER_STATS, "requestTimeMax", new Gauge() {
      @Override
      public Long getValue() {
        return stats.getRequestTimeMax();
      }
    });

    metricFactory.registerGauge(SERVER_STATS, "requestTimeMean", new Gauge() {
      @Override
      public Double getValue() {
        return stats.getRequestTimeMean();
      }
    });

    metricFactory.registerGauge(SERVER_STATS, "requestTimeTotal", new Gauge() {
      @Override
      public Long getValue() {
        return stats.getRequestTimeTotal();
      }
    });
  }

  private static void createResponsesGauges(final StatisticsHandler stats, final MetricFactory metricFactory) {
    metricFactory.registerGauge(SERVER_STATS, "responsesBytesTotal", new Gauge() {
      @Override
      public Long getValue() {
        return stats.getResponsesBytesTotal();
      }
    });

    metricFactory.registerGauge(SERVER_STATS, "responses1xx", new Gauge() {
      @Override
      public Integer getValue() {
        return stats.getResponses1xx();
      }
    });

    metricFactory.registerGauge(SERVER_STATS, "responses2xx", new Gauge() {
      @Override
      public Integer getValue() {
        return stats.getResponses2xx();
      }
    });

    metricFactory.registerGauge(SERVER_STATS, "responses3xx", new Gauge() {
      @Override
      public Integer getValue() {
        return stats.getResponses3xx();
      }
    });

    metricFactory.registerGauge(SERVER_STATS, "responses4xx", new Gauge() {
      @Override
      public Integer getValue() {
        return stats.getResponses4xx();
      }
    });

    metricFactory.registerGauge(SERVER_STATS, "responses5xx", new Gauge() {
      @Override
      public Integer getValue() {
        return stats.getResponses5xx();
      }
    });
  }

  public static void createGauges(final ConnectorStatistics stats, final String connectorType, final MetricFactory metricFactory) {
    final String CONNECTOR_STATS = "ConnectorStats." + connectorType;

    metricFactory.registerGauge(CONNECTOR_STATS, "connectionDurationMax", new Gauge() {
      @Override
      public Long getValue() {
        return stats.getConnectionDurationMax();
      }
    });

    metricFactory.registerGauge(CONNECTOR_STATS, "connectionDurationMean", new Gauge() {
      @Override
      public Double getValue() {
        return stats.getConnectionDurationMean();
      }
    });

    metricFactory.registerGauge(CONNECTOR_STATS, "connections", new Gauge() {
      @Override
      public Integer getValue() {
        return stats.getConnections();
      }
    });

    metricFactory.registerGauge(CONNECTOR_STATS, "connectionsOpenMax", new Gauge() {
      @Override
      public Integer getValue() {
        return stats.getConnectionsOpenMax();
      }
    });

    metricFactory.registerGauge(CONNECTOR_STATS, "connectionsOpen", new Gauge() {
      @Override
      public Integer getValue() {
        return stats.getConnectionsOpen();
      }
    });
  }

  public static void createQTPGauges(final QueuedThreadPool qtp, final MetricFactory metricFactory) {
    metricFactory.registerGauge(SERVER_STATS, "idleThreads", new Gauge() {
      @Override
      public Integer getValue() {
        return qtp.getIdleThreads();
      }
    });

    metricFactory.registerGauge(SERVER_STATS, "totalThreads", new Gauge() {
      @Override
      public Integer getValue() {
        return qtp.getThreads();
      }
    });

    metricFactory.registerGauge(SERVER_STATS, "queueSize", new Gauge() {
      @Override
      public Integer getValue() {
        return qtp.getQueueSize();
      }
    });
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy