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";
}
@OverrideView on GitHub (pinned to 88fd0f6a0e)
Solutions
- To allow remote monitoring, set jmx_server_options.remote: true in cassandra.yaml and configure jmx_port plus authentication/SSL, then restart
- Keep remote disabled and run monitoring locally (sidecar) or via SSH tunnel to localhost:7199
- 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
- Pair jmx_server_options.remote: true with authentication and SSL (rmi, jmx_encryption options) when enabling remote access
- For hardened clusters, prefer local sidecar exporters over opening remote JMX
- Verify after restart via the INFO log 'JMX is enabled to receive remote connections on port: <port>'
- Keep central-monitoring connectivity tests in deployment pipelines
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
- JMX connection server is not enabled for either local or rem
- Use of com.sun.management.jmxremote.port at startup is depre
- %s has authorization enabled which requires %s to enable aut
- JAAS login configuration missing for JMX authenticator setup
- Configure either jmx_server_options in cassandra.yaml and co
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/7b69094c0f50cd72.
Report an issue: GitHub.