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 /health → OK | 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)