apache/cassandra · warning

JMX is not enabled to receive remote connections. Please see

Error message

JMX is not enabled to receive remote connections. Please see jmx_server_options in cassandra.yaml for more info.

What it means

A WARN log (not an exception) from the checkJmxPorts startup check's execute(). When jmx_server_options.remote is false, Cassandra's JMX server only accepts local connections and remote nodetool/monitoring clients will be refused. Cassandra logs this warning at startup so operators explicitly notice remote JMX is off; the else branch logs the remote port when it is enabled.

Source

Thrown at src/java/org/apache/cassandra/service/StartupChecks.java:553

        {
            return "jmx_ports";
        }

        @Override
        public void execute(StartupChecksConfiguration configuration)
        {
            if (configuration.isDisabled(name()))
                return;

            JMXServerOptions jmxServerOptions = DatabaseDescriptor.getJmxServerOptions();
            if (!jmxServerOptions.enabled)
            {
                logger.warn("JMX connection server is not enabled for either local or remote connections. " +
                            "Please see jmx_server_options in cassandra.yaml for more info");
            }
            if (!jmxServerOptions.remote)
            {
                logger.warn("JMX is not enabled to receive remote connections. " +
                            "Please see jmx_server_options in cassandra.yaml for more info.");
            }
            else
            {
                logger.info("JMX is enabled to receive remote connections on port: {}", jmxServerOptions.jmx_port);
            }
        }
    };

    public static final StartupCheck checkJMXProperties = new StartupCheck()
    {
        @Override
        public String name()
        {
            return "jmx_properties";
        }

        @Override

View on GitHub (pinned to 88fd0f6a0e)

Solutions

  1. To allow remote monitoring, set jmx_server_options.remote: true in cassandra.yaml and configure jmx_port plus authentication/SSL, then restart
  2. Keep remote disabled and run monitoring locally (sidecar) or via SSH tunnel to localhost:7199
  3. Confirm the change with the INFO log 'JMX is enabled to receive remote connections on port: <port>' after restart

Example fix

// before (cassandra.yaml)
jmx_server_options:
  enabled: true
  remote: false

// after
jmx_server_options:
  enabled: true
  remote: true
  jmx_port: 7199
Defensive patterns

Strategy: validation

Validate before calling

// Pre-flight: check whether remote JMX is on before planning remote monitoring
import org.apache.cassandra.config.DatabaseDescriptor;
var opts = DatabaseDescriptor.getJmxServerOptions();
if (opts.enabled && !opts.remote)
    System.out.println("WARNING: JMX is local-only; configure remote monitoring via sidecar or enable jmx_server_options.remote");

Prevention

When it happens

Trigger: checkJmxPorts executes at startup while DatabaseDescriptor.getJmxServerOptions().remote is false — jmx_server_options.remote: false in cassandra.yaml (or enabled-only-local configuration).

Common situations: Security-hardened nodes with local-only JMX; central monitoring (Prometheus JMX exporter remote scrape, remote nodetool) failing to connect; operators migrating from legacy com.sun.management.jmxremote flags to jmx_server_options and losing remote access.

Related errors


AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10). Data as JSON: /api/errors/7b69094c0f50cd72. Report an issue: GitHub.