This is an automated email from the ASF dual-hosted git repository.
sk0x50 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new d8d3df13f22 IGNITE-25694 Add JMX configuration for remote monitoring
to logs (#6066)
d8d3df13f22 is described below
commit d8d3df13f220f5bcf6e04c0b7726470a809892cf
Author: Slava Koptilin <[email protected]>
AuthorDate: Wed Jun 18 16:10:19 2025 +0300
IGNITE-25694 Add JMX configuration for remote monitoring to logs (#6066)
---
.../ignite/internal/app/IgniteServerImpl.java | 44 +++++++++++++++++++---
1 file changed, 39 insertions(+), 5 deletions(-)
diff --git
a/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteServerImpl.java
b/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteServerImpl.java
index 10260dea776..d83180ece2f 100644
---
a/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteServerImpl.java
+++
b/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteServerImpl.java
@@ -40,6 +40,7 @@ import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteServer;
import org.apache.ignite.InitParameters;
import org.apache.ignite.internal.eventlog.api.IgniteEventType;
+import org.apache.ignite.internal.lang.IgniteStringFormatter;
import org.apache.ignite.internal.lang.NodeStoppingException;
import org.apache.ignite.internal.logger.IgniteLogger;
import org.apache.ignite.internal.logger.Loggers;
@@ -394,6 +395,8 @@ public class IgniteServerImpl implements IgniteServer {
logAvailableResources();
+ ackRemoteManagement();
+
return instance.startAsync().handle((result, throwable) -> {
if (throwable != null) {
return CompletableFuture.<Void>failedFuture(throwable);
@@ -415,11 +418,6 @@ public class IgniteServerImpl implements IgniteServer {
}).thenCompose(identity());
}
- private static void logAvailableResources() {
- LOG.info("Available processors: {}",
Runtime.getRuntime().availableProcessors());
- LOG.info("Max heap: {}", Runtime.getRuntime().maxMemory());
- }
-
@Override
public void start() {
sync(startAsync());
@@ -457,6 +455,42 @@ public class IgniteServerImpl implements IgniteServer {
LOG.info("{}" + lineSeparator() + "{}{}" + lineSeparator(), banner,
padding, "Apache Ignite ver. " + version);
}
+ private static void logAvailableResources() {
+ LOG.info("Available processors: {}",
Runtime.getRuntime().availableProcessors());
+ LOG.info("Max heap: {}", Runtime.getRuntime().maxMemory());
+ }
+
+ private static void ackRemoteManagement() {
+ if (LOG.isInfoEnabled()) {
+ boolean jmxEnabled =
System.getProperty("com.sun.management.jmxremote") != null;
+
+ if (jmxEnabled) {
+ String jmxMessage = "Remote management[JMX (remote: on, port:
{}, auth: {}, ssl: {})]";
+
+ String port =
System.getProperty("com.sun.management.jmxremote.port", "<n/a>");
+ boolean authEnabled =
Boolean.getBoolean("com.sun.management.jmxremote.authenticate");
+ // By default SSL is enabled, that's why additional check for
null is needed.
+ //
https://docs.oracle.com/en/java/javase/11/management/monitoring-and-management-using-jmx-technology.html
+ boolean sslEnabled =
Boolean.getBoolean("com.sun.management.jmxremote.ssl")
+ ||
(System.getProperty("com.sun.management.jmxremote.ssl") == null);
+
+ LOG.info(IgniteStringFormatter.format(jmxMessage, port,
onOff(authEnabled), onOff(sslEnabled)));
+ } else {
+ LOG.info("Remote management[JMX (remote: off)]");
+ }
+ }
+ }
+
+ /**
+ * Gets "on" or "off" string for given boolean value.
+ *
+ * @param b Boolean value to convert.
+ * @return Result string.
+ */
+ private static String onOff(boolean b) {
+ return b ? "on" : "off";
+ }
+
private static void sync(CompletableFuture<Void> future) {
try {
future.get();