apache/cassandra · warning
JMX connection server is not enabled for either local or rem
Error message
JMX connection server is not enabled for either local or 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.enabled is false in cassandra.yaml, both the local and remote JMX connection servers are disabled, so tools like nodetool cannot connect at all. Cassandra logs this warning so the operator notices JMX is fully off, and startup continues.
Source
Thrown at src/java/org/apache/cassandra/service/StartupChecks.java:548
public static final StartupCheck checkJMXPorts = new StartupCheck()
{
@Override
public String name()
{
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()View on GitHub (pinned to 88fd0f6a0e)
Solutions
- If JMX is needed, set jmx_server_options.enabled: true in cassandra.yaml and restart
- If only local JMX is wanted, enable it and keep jmx_server_options.remote: false so JMX binds only to localhost
- If fully disabling JMX is intentional, keep the config but update runbooks/monitoring that depend on nodetool to use alternative interfaces
Example fix
// before (cassandra.yaml) jmx_server_options: enabled: false // after jmx_server_options: enabled: true remote: false
Defensive patterns
Strategy: validation
Validate before calling
// Pre-flight: fail fast if JMX is fully disabled but nodetool is required
import org.apache.cassandra.config.DatabaseDescriptor;
if (!DatabaseDescriptor.getJmxServerOptions().enabled)
System.out.println("WARNING: JMX fully disabled (jmx_server_options.enabled=false); nodetool will not connect"); Prevention
- Never copy jmx_server_options.enabled: false from lockdown guides without checking operational impact
- Keep local JMX enabled (remote: false) even in hardened deployments so nodetool works locally
- Validate cassandra.yaml with a startup pre-flight before production rollout
- Document in runbooks that nodetool requires jmx_server_options.enabled: true
When it happens
Trigger: checkJmxPorts (JMX accessibility check) executes at startup while DatabaseDescriptor.getJmxServerOptions().enabled is false — i.e. jmx_server_options.enabled: false was set (or defaulted) in cassandra.yaml.
Common situations: Operators disabling remote JMX for security but unaware this also disables local JMX; hardened configs copied from lockdown guides; then nodetool fails with 'Connection refused' and this warning explains why.
Related errors
- JMX is not enabled to receive remote connections. Please see
- 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/b0494551e56e9b1f.
Report an issue: GitHub.