Enum Class MetricManager

java.lang.Object
java.lang.Enum<MetricManager>
org.apache.tinkerpop.gremlin.server.util.MetricManager
All Implemented Interfaces:
Serializable, Comparable<MetricManager>, Constable

public enum MetricManager extends Enum<MetricManager>
Singleton that contains and configures Gremlin Server's MetricRegistry. Borrowed from Titan's approach to managing Metrics.
Author:
Stephen Mallette (http://stephen.genoprime.com)
  • Enum Constant Details

  • Method Details

    • values

      public static MetricManager[] values()
      Returns an array containing the constants of this enum class, in the order they are declared.
      Returns:
      an array containing the constants of this enum class, in the order they are declared
    • valueOf

      public static MetricManager valueOf(String name)
      Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)
      Parameters:
      name - the name of the enum constant to be returned.
      Returns:
      the enum constant with the specified name
      Throws:
      IllegalArgumentException - if this enum class has no constant with the specified name
      NullPointerException - if the argument is null
    • getRegistry

      public com.codahale.metrics.MetricRegistry getRegistry()
      Return the MetricsRegistry.
      Returns:
      the single MetricRegistry used for all of monitoring
    • addConsoleReporter

      public void addConsoleReporter(long reportIntervalInMS)
      Create a ConsoleReporter attached to the MetricsRegistry.
      Parameters:
      reportIntervalInMS - milliseconds to wait between dumping metrics to the console
    • removeConsoleReporter

      public void removeConsoleReporter()
      Stop a ConsoleReporter previously created by a call to addConsoleReporter(long) and release it for GC. Idempotent between calls to the associated add method. Does nothing before the first call to the associated add method.
    • addCsvReporter

      public void addCsvReporter(long reportIntervalInMS, String output)
      Create a CsvReporter attached to the MetricsRegistry.

      The output argument must be non-null but need not exist. If it doesn't already exist, this method attempts to create it by calling File.mkdirs().

      Parameters:
      reportIntervalInMS - milliseconds to wait between dumping metrics to CSV files in the configured directory
      output - the path to a directory into which Metrics will periodically write CSV data
    • removeCsvReporter

      public void removeCsvReporter()
      Stop a CsvReporter previously created by a call to addCsvReporter(long, String) and release it for GC. Idempotent between calls to the associated add method. Does nothing before the first call to the associated add method.
    • addJmxReporter

      public void addJmxReporter(String domain, String agentId)
      Create a JmxReporter attached to the MetricsRegistry.

      If domain or agentId is null, then Metrics's uses its own internal default value(s).

      If agentId is non-null, then MBeanServerFactory#findMBeanServer(agentId) must return exactly one MBeanServer. The reporter will register with that server. If the findMBeanServer(agentId) call returns no or multiple servers, then this method logs an error and falls back on the Metrics default for agentId.

      Parameters:
      domain - the JMX domain in which to continuously expose metrics
      agentId - the JMX agent ID
    • removeJmxReporter

      public void removeJmxReporter()
      Stop a JmxReporter previously created by a call to addJmxReporter(String, String) and release it for GC. Idempotent between calls to the associated add method. Does nothing before the first call to the associated add method.
    • addSlf4jReporter

      public void addSlf4jReporter(long reportIntervalInMS, String loggerName)
      Create a Slf4jReporter attached to the MetricsRegistry.

      If loggerName is null, or if it is non-null but LoggerFactory.getLogger(loggerName) returns null, then Metrics's default Slf4j logger name is used instead.

      Parameters:
      reportIntervalInMS - milliseconds to wait between writing metrics to the Slf4j logger
      loggerName - the name of the Slf4j logger that receives metrics
    • removeSlf4jReporter

      public void removeSlf4jReporter()
      Stop a Slf4jReporter previously created by a call to addSlf4jReporter(long, String) and release it for GC. Idempotent between calls to the associated add method. Does nothing before the first call to the associated add method.
    • addGangliaReporter

      public void addGangliaReporter(String groupOrHost, int port, String addressingMode, int ttl, Boolean protocol31, UUID hostUUID, String spoof, long reportIntervalInMS) throws IOException
      Create a GangliaReporter attached to the MetricsRegistry.

      groupOrHost and addressingMode must be non-null. The remaining non-primitive arguments may be null. If protocol31 is null, then true is assumed. Null values of hostUUID or spoof are passed into the GMetric constructor, which causes Ganglia to use its internal logic for generating a default UUID and default reporting hostname (respectively).

      Parameters:
      groupOrHost - the multicast group or unicast hostname to which Ganglia events are sent
      port - the port to which events are sent
      addressingMode - whether to send events with multicast or unicast
      ttl - multicast ttl (ignored for unicast)
      protocol31 - true to use Ganglia protocol version 3.1, false to use 3.0
      hostUUID - uuid for the host
      spoof - override this machine's IP/hostname as it appears on the Ganglia server
      reportIntervalInMS - milliseconds to wait before sending data to the ganglia unicast host or multicast group
      Throws:
      IOException - when a GMetric can't be instantiated using the provided arguments
    • removeGangliaReporter

      public void removeGangliaReporter()
      Stop a GangliaReporter previously created by a call to addGangliaReporter(String, int, GMetric.UDPAddressingMode, int, Boolean, UUID, long) and release it for GC. Idempotent between calls to the associated add method. Does nothing before the first call to the associated add method.
    • addGraphiteReporter

      public void addGraphiteReporter(String host, int port, String prefix, long reportIntervalInMS)
      Create a GraphiteReporter attached to the MetricsRegistry.

      If prefix is null, then Metrics's internal default prefix is used (empty string at the time this comment was written).

      Parameters:
      host - the host to which Graphite reports are sent
      port - the port to which Graphite reports are sent
      prefix - the optional metrics prefix
      reportIntervalInMS - milliseconds to wait between sending metrics to the configured Graphite host and port
    • removeGraphiteReporter

      public void removeGraphiteReporter()
      Stop a GraphiteReporter previously created by a call to addGraphiteReporter(String, int, String, long) and release it for GC. Idempotent between calls to the associated add method. Does nothing before the first call to the associated add method.
    • removeAllReporters

      public void removeAllReporters()
      Remove all reporters previously configured through the add* methods on this class.
    • removeAllMetrics

      public void removeAllMetrics()
    • getCounterSize

      public int getCounterSize()
    • contains

      public boolean contains(String name)
    • getCounter

      public com.codahale.metrics.Counter getCounter(String name)
    • getCounter

      public com.codahale.metrics.Counter getCounter(String prefix, String... names)
    • getGauge

      public <T> com.codahale.metrics.Gauge<T> getGauge(com.codahale.metrics.Gauge<T> gauge, String name)
    • getGauge

      public <T> com.codahale.metrics.Gauge<T> getGauge(com.codahale.metrics.Gauge<T> gauge, String prefix, String... names)
    • getMeter

      public com.codahale.metrics.Meter getMeter(String name)
    • getMeter

      public com.codahale.metrics.Meter getMeter(String prefix, String... names)
    • getTimer

      public com.codahale.metrics.Timer getTimer(String name)
    • getTimer

      public com.codahale.metrics.Timer getTimer(String prefix, String... names)
    • getHistogram

      public com.codahale.metrics.Histogram getHistogram(String name)
    • getHistogram

      public com.codahale.metrics.Histogram getHistogram(String prefix, String... names)
    • registerGremlinScriptEngineMetrics

      public void registerGremlinScriptEngineMetrics(GremlinScriptEngine engine, String... prefix)
      Registers metrics from a GremlinScriptEngine. At this point, this only works for the GremlinGroovyScriptEngine as it is the only one that collects metrics at this point. As the GremlinScriptEngine implementations achieve greater parity these metrics will get expanded.