From 44c11f955029431e903ccfbbff3e57e6b8a10f04 Mon Sep 17 00:00:00 2001 From: Yann Mahe Date: Mon, 19 Oct 2015 17:47:14 -0400 Subject: [PATCH 1/2] Support custom jmx url --- .../java/org/datadog/jmxfetch/RemoteConnection.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/datadog/jmxfetch/RemoteConnection.java b/src/main/java/org/datadog/jmxfetch/RemoteConnection.java index e5937dc4e..1840be59f 100644 --- a/src/main/java/org/datadog/jmxfetch/RemoteConnection.java +++ b/src/main/java/org/datadog/jmxfetch/RemoteConnection.java @@ -17,6 +17,7 @@ public class RemoteConnection extends Connection { private String user; private String password; private String path = "jmxrmi"; + private String jmx_url; private static final String TRUST_STORE_PATH_KEY = "trust_store_path"; private static final String TRUST_STORE_PASSWORD_KEY = "trust_store_password"; private final static Logger LOGGER = Logger.getLogger(Connection.class.getName()); @@ -27,12 +28,13 @@ public RemoteConnection(LinkedHashMap connectionParams) port = (Integer) connectionParams.get("port"); user = (String) connectionParams.get("user"); password = (String) connectionParams.get("password"); + jmx_url = (String) connectionParams.get("jmx_url"); if (connectionParams.containsKey("path")){ path = (String) connectionParams.get("path"); } env = getEnv(connectionParams); address = getAddress(connectionParams); - + String trustStorePath; String trustStorePassword; if (connectionParams.containsKey(TRUST_STORE_PATH_KEY) @@ -42,7 +44,7 @@ public RemoteConnection(LinkedHashMap connectionParams) if (trustStorePath != null && trustStorePassword != null) { System.setProperty("javax.net.ssl.trustStore", trustStorePath); System.setProperty("javax.net.ssl.trustStorePassword", trustStorePassword); - + LOGGER.info("Setting trustStore path: " + trustStorePath + " and trustStorePassword"); } @@ -61,7 +63,10 @@ private HashMap getEnv( private JMXServiceURL getAddress( LinkedHashMap connectionParams) throws MalformedURLException { - return new JMXServiceURL("service:jmx:rmi:///jndi/rmi://" + this.host + ":" + this.port +"/" + this.path); + if (this.jmx_url != null) { + return new JMXServiceURL(this.jmx_url); + } + return new JMXServiceURL("service:jmx:rmi:///jndi/rmi://" + this.host + ":" + this.port +"/" + this.path); } From 80bf6e136886a23605bfeff0773bf62dab82230b Mon Sep 17 00:00:00 2001 From: Olivier Vielpeau Date: Fri, 23 Oct 2015 14:21:34 -0400 Subject: [PATCH 2/2] Handle a custom jmx_url nicely when determining an instance name When a jmx_url is specified we can't use the host/port anymore to determine the name of the instance or of a connection. Here we ask the user to specify a name for the instance, and the connection is identified as the jmx_url. --- .../java/org/datadog/jmxfetch/ConnectionManager.java | 2 ++ src/main/java/org/datadog/jmxfetch/Instance.java | 9 +++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/datadog/jmxfetch/ConnectionManager.java b/src/main/java/org/datadog/jmxfetch/ConnectionManager.java index 3f5405c84..582d1802b 100644 --- a/src/main/java/org/datadog/jmxfetch/ConnectionManager.java +++ b/src/main/java/org/datadog/jmxfetch/ConnectionManager.java @@ -29,6 +29,8 @@ public static ConnectionManager getInstance() { private static String generateKey(LinkedHashMap connectionParams) { if (connectionParams.get("process_name_regex") != null) { return (String) connectionParams.get("process_name_regex"); + } else if (connectionParams.get("jmx_url") != null) { + return (String) connectionParams.get("jmx_url"); } return connectionParams.get("host") + ":" + connectionParams.get("port") + ":" + connectionParams.get("user"); } diff --git a/src/main/java/org/datadog/jmxfetch/Instance.java b/src/main/java/org/datadog/jmxfetch/Instance.java index 0ac509d53..78a5f5cc6 100644 --- a/src/main/java/org/datadog/jmxfetch/Instance.java +++ b/src/main/java/org/datadog/jmxfetch/Instance.java @@ -85,10 +85,13 @@ public Instance(LinkedHashMap yamlInstance, LinkedHashMap