{"record":{"id":"7b69094c0f50cd72","repo":"apache/cassandra","slug":"jmx-is-not-enabled-to-receive-remote-connections","errorCode":null,"errorMessage":"JMX is not enabled to receive remote connections. Please see jmx_server_options in cassandra.yaml for more info.","messagePattern":"JMX is not enabled to receive remote connections\\. Please see jmx_server_options in cassandra\\.yaml for more info\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"src/java/org/apache/cassandra/service/StartupChecks.java","lineNumber":553,"sourceCode":"        {\n            return \"jmx_ports\";\n        }\n\n        @Override\n        public void execute(StartupChecksConfiguration configuration)\n        {\n            if (configuration.isDisabled(name()))\n                return;\n\n            JMXServerOptions jmxServerOptions = DatabaseDescriptor.getJmxServerOptions();\n            if (!jmxServerOptions.enabled)\n            {\n                logger.warn(\"JMX connection server is not enabled for either local or remote connections. \" +\n                            \"Please see jmx_server_options in cassandra.yaml for more info\");\n            }\n            if (!jmxServerOptions.remote)\n            {\n                logger.warn(\"JMX is not enabled to receive remote connections. \" +\n                            \"Please see jmx_server_options in cassandra.yaml for more info.\");\n            }\n            else\n            {\n                logger.info(\"JMX is enabled to receive remote connections on port: {}\", jmxServerOptions.jmx_port);\n            }\n        }\n    };\n\n    public static final StartupCheck checkJMXProperties = new StartupCheck()\n    {\n        @Override\n        public String name()\n        {\n            return \"jmx_properties\";\n        }\n\n        @Override","sourceCodeStart":535,"sourceCodeEnd":571,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/service/StartupChecks.java#L535-L571","documentation":"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.","triggerScenarios":"checkJmxPorts executes at startup while DatabaseDescriptor.getJmxServerOptions().remote is false — jmx_server_options.remote: false in cassandra.yaml (or enabled-only-local configuration).","commonSituations":"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.","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"],"exampleFix":"// before (cassandra.yaml)\njmx_server_options:\n  enabled: true\n  remote: false\n\n// after\njmx_server_options:\n  enabled: true\n  remote: true\n  jmx_port: 7199","handlingStrategy":"validation","validationCode":"// Pre-flight: check whether remote JMX is on before planning remote monitoring\nimport org.apache.cassandra.config.DatabaseDescriptor;\nvar opts = DatabaseDescriptor.getJmxServerOptions();\nif (opts.enabled && !opts.remote)\n    System.out.println(\"WARNING: JMX is local-only; configure remote monitoring via sidecar or enable jmx_server_options.remote\");","typeGuard":null,"tryCatchPattern":null,"preventionTips":["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"],"tags":["jmx","remote-access","configuration","cassandra-yaml","monitoring"],"backgroundTag":"feature-not-enabled","analyzedSha":"88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1","analyzedAt":"2026-09-10T07:29:22.284Z","contentChangedAt":"2026-09-10T07:29:22.284Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}