Skip to main content

Overview

This page summarizes how to observe MAPS Messaging in production: metrics, $SYS topics, REST health, JMX/Jolokia, and logs—with links to focused guides.


Options at a glance

ChannelWhat you getBest forGuide
Prometheus (JMX Exporter)JVM + server metrics as time seriesDashboards, alerting, SLOsPrometheus (JMX Exporter)
Jolokia (JMX over HTTP)Inspect JMX MBeans via RESTAd‑hoc diagnostics, toolsJolokia Monitoring
$SYS topicsLive server stats as topicsProtocol‑native checksSystem Topics ($SYS)
REST healthLiveness/readiness/healthProbes, load‑balancersRest API
LogsOperational/audit detailForensics, supportLogging details

For long‑term trends and alerting, use Prometheus + Grafana. For quick inspection, $SYS and Jolokia are handy.


Metrics & Telemetry

Expose metrics via the JMX Prometheus Java agent (sidecarless):

  • Attach the agent with -javaagent to expose a /metrics endpoint (default example: :9404).
  • Map server JMX to maps_* metrics with the provided config.
  • Scrape with Prometheus, visualize in Grafana.
    See Prometheus (JMX Exporter).

Jolokia (optional)

HTTP access to JMX for scripting and tools. Enable in config to read bean attributes or trigger operations.
See Jolokia Monitoring.


$SYS Topics (protocol‑native status)

MAPS publishes operational data under $SYS/ and extended JSON under $SYS/server/* (when enabled). Any supported protocol can subscribe. Examples:

  • Broker: uptime, version, health
  • Clients: connected, peak
  • Throughput/bytes: in/out totals
  • Endpoints & destinations: per‑listener/per‑queue stats
  • Moving‑average variants (if enabled)

See System Topics ($SYS) for details and examples.


REST Health Endpoints

  • GET /healthOK | Warning | Error (used by load‑balancers/Consul)
  • GET /api/v1/ping{"status":"Success"} when responsive

Kubernetes probes typically check HTTP status code only. If you must treat Warning as ready, implement body checks in your probe logic/sidecar.

For full API endpoints, see OpenAPI spec.


Logging (summary)

Runtime logs are written under ${MAPS_DATA}/log/:

  • messaging.log — operational messages (daily rotation, gzip, 7‑day history)
  • audit.log — audit‑only entries (same rotation)

Default logging uses Logback with async appenders and marker‑based routing.
See Logging details for the default logback.xml, retention, and tuning.


What to monitor

  • Availability: /health
  • Client load: connected/peak clients, session churn
  • Throughput & latency: msgs/bytes in/out, moving averages
  • Backlog/pressure: destination pending counts, endpoint errors
  • JVM health: heap, GC pauses, threads
  • System: CPU, I/O saturation (via host/node metrics)