.. _geomesa_metrics: GeoMesa Metrics =============== GeoMesa provides integration with the `DropWizard Metrics `__ library for real-time reporting with the ``geomesa-metrics`` module. Reporters are available for `SLF4J `__, `CloudWatch `__, `Graphite `__, and `Ganglia `__. Configuration ------------- Reporters are configured via TypeSafe Config. All reporters share a few common properties: ====================== =============================================================================================== Configuration Property Description ====================== =============================================================================================== ``rate-units`` The Java TimeUnit_ used to report rates, e.g ``seconds``, ``minutes``, etc. For example, for a requests meter, you can configure it to show requests per second or requests per hour ``duration-units`` The Java TimeUnit_ used to report durations, e.g. ``seconds``, ``milliseconds``, etc. For example, for a request timer, you can configure it to show the time taken in seconds or milliseconds ``units`` A fallback to use if ``rate-units`` and/or ``duration-units`` are not specified, which can simplify the configuration ``interval`` How often the reporter should run, e.g. ``60 seconds`` or ``10 minutes``. For example, a logging reporter will write a log message once per interval ====================== =============================================================================================== .. _TimeUnit: https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html Logging Reporter ---------------- GeoMesa includes a logging reporter using SLF4J. ====================== =============================================================================================== Configuration Property Description ====================== =============================================================================================== ``type`` Must be ``slf4j`` ``logger`` The name of the logger to use, e.g. ``org.locationtech.geomesa.metrics`` ``level`` The level to write out log messages at, e.g. ``info``, ``debug``, etc ====================== =============================================================================================== Example configuration: :: { type = "slf4j" units = "milliseconds" interval = "60 seconds" logger = "org.locationtech.geomesa.metrics" level = "debug" } CloudWatch Reporter ------------------- The CloudWatch reporter can be included by adding a dependency on ``org.locationtech.geomesa:geomesa-metrics-cloudwatch``. The CloudWatch reporter uses the default credentials and region specified in your AWS profile config. ====================== =============================================================================================== Configuration Property Description ====================== =============================================================================================== ``type`` Must be ``cloudwatch`` ``namespace`` The CloudWatch namespace to use ``raw-counts`` Boolean - report the raw value of count metrics instead of reporting only the count difference since the last report ``zero-values`` Boolean - POSTs to CloudWatch all values. Otherwise, the reporter does not POST values which are zero in order to save costs ====================== =============================================================================================== Example configuration: :: { type = "cloudwatch" units = "milliseconds" interval = "60 seconds" namespace = "mynamespace" raw-counts = false zero-values = false } Ganglia Reporter ---------------- The Ganglia reporter can be included by adding a dependency on ``org.locationtech.geomesa:geomesa-metrics-ganglia``. Using Ganglia requires additional GPL-licensed dependencies ``info.ganglia.gmetric4j:gmetric4j:1.0.7`` and ``org.acplt:oncrpc:1.0.7``, which are excluded by default. ====================== =============================================================================================== Configuration Property Description ====================== =============================================================================================== ``type`` Must be ``ganglia`` ``group`` The host/group to send events to ``port`` Integer - The port to send events to ``addressing-mode`` One of ``multicast`` or ``unicast`` ``ttl`` Integer - the time-to-live for Ganglia messages ``ganglia311`` Boolean - defines the Ganglia protocol version, either v3.1 or v3.0 ====================== =============================================================================================== Example configuration: :: { type = "ganglia" group = "example" port = 8649 addressing-mode = "multicast" ttl = 32 ganglia311 = true rate-units = "seconds" duration-units = "milliseconds" interval = "10 seconds" } Graphite Reporter ----------------- The Graphite reporter can be included by adding a dependency on ``org.locationtech.geomesa:geomesa-metrics-graphite``. ====================== =============================================================================================== Configuration Property Description ====================== =============================================================================================== ``type`` Must be ``graphite`` ``url`` The connection string to the Graphite instance ``prefix`` Prefix prepended to all metric names ====================== =============================================================================================== Example configuration: :: { type = "graphite" url = "localhost:9000" prefix = "example" rate-units = "seconds" duration-units = "milliseconds" interval = "10 seconds" } Extensions ---------- Additional reporters can be added at runtime by implementing ``org.locationtech.geomesa.metrics.core.ReporterFactory`` and registering the new class as a `service provider `__.