diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..07cc770 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,16 @@ + +### Version 2.4.2 + +* Added timestamp logging +* Added checks for Null connection + + +## Version 2.4.1 + +* Updated Licenses + +## Version 2.4.0 + +* Revamped complete extension +* Adds support to add your own queries +* Adds support to query tables \ No newline at end of file diff --git a/CHANGES.md b/CHANGES.md deleted file mode 100644 index 8340b9f..0000000 --- a/CHANGES.md +++ /dev/null @@ -1,4 +0,0 @@ - -### Version 1.0.0 - -* Initial open source release diff --git a/pom.xml b/pom.xml index d08b86d..77001f2 100644 --- a/pom.xml +++ b/pom.xml @@ -15,7 +15,7 @@ com.appdynamics.extensions oracledb-monitoring-extension - 2.4.1 + 2.4.2 jar oracle-monitoring-extension http://maven.apache.org diff --git a/src/main/java/com/appdynamics/extensions/oracledb/JDBCConnectionAdapter.java b/src/main/java/com/appdynamics/extensions/oracledb/JDBCConnectionAdapter.java index db052ec..a7c0d83 100644 --- a/src/main/java/com/appdynamics/extensions/oracledb/JDBCConnectionAdapter.java +++ b/src/main/java/com/appdynamics/extensions/oracledb/JDBCConnectionAdapter.java @@ -10,6 +10,7 @@ import com.google.common.base.Strings; +import org.slf4j.LoggerFactory; import java.sql.*; import java.util.Map; @@ -20,6 +21,7 @@ public class JDBCConnectionAdapter { private final String connUrl; private final Map connectionProperties; + private static final org.slf4j.Logger logger = LoggerFactory.getLogger(JDBCConnectionAdapter.class); private JDBCConnectionAdapter(String connStr, Map connectionProperties) { @@ -44,7 +46,12 @@ Connection open(String driver) throws SQLException, ClassNotFoundException { properties.put(key, connectionProperties.get(key)); } } + logger.debug("Passed all checks for properties and attempting to connect to: "+ connUrl); + long timestamp1 = System.currentTimeMillis(); + connection = DriverManager.getConnection(connUrl, properties.getProperty("user"), properties.getProperty("password")); + long timestamp2 = System.currentTimeMillis(); + logger.debug("Connection received in JDBC ConnectionAdapter in :"+ (timestamp2-timestamp1)+ " ms"); return connection; } diff --git a/src/main/java/com/appdynamics/extensions/oracledb/OracledbMonitor.java b/src/main/java/com/appdynamics/extensions/oracledb/OracledbMonitor.java index de19855..66974af 100644 --- a/src/main/java/com/appdynamics/extensions/oracledb/OracledbMonitor.java +++ b/src/main/java/com/appdynamics/extensions/oracledb/OracledbMonitor.java @@ -12,6 +12,7 @@ import com.appdynamics.extensions.TaskInputArgs; import com.appdynamics.extensions.TasksExecutionServiceProvider; import com.appdynamics.extensions.crypto.CryptoUtil; +import com.appdynamics.extensions.util.AssertUtils; import com.google.common.base.Strings; import com.google.common.collect.Maps; import com.singularity.ee.agent.systemagent.api.exception.TaskExecutionException; @@ -77,6 +78,11 @@ protected int getTaskCount() { private OracledbMonitorTask createTask(Map server, TasksExecutionServiceProvider serviceProvider) throws IOException { String connUrl = createConnectionUrl(server); + + AssertUtils.assertNotNull(serverName(server), "The 'displayName' field under the 'dbServers' section in config.yml is not initialised"); + AssertUtils.assertNotNull(createConnectionUrl(server), "The 'connectionUrl' field under the 'dbServers' section in config.yml is not initialised"); + AssertUtils.assertNotNull(driverName(server), "The 'driver' field under the 'dbServers' section in config.yml is not initialised"); + Map connectionProperties = getConnectionProperties(server); JDBCConnectionAdapter jdbcAdapter = JDBCConnectionAdapter.create(connUrl, connectionProperties); @@ -89,6 +95,15 @@ private OracledbMonitorTask createTask(Map server, TasksExecutionServiceProvider .server(server).build(); } + private String serverName(Map server) { + String name = Util.convertToString(server.get("displayName"), ""); + return name; + } + + private String driverName(Map server) { + String name = Util.convertToString(server.get("driver"), ""); + return name; + } private String createConnectionUrl(Map server) { String url = Util.convertToString(server.get("connectionUrl"), ""); diff --git a/src/main/java/com/appdynamics/extensions/oracledb/OracledbMonitorTask.java b/src/main/java/com/appdynamics/extensions/oracledb/OracledbMonitorTask.java index cb32f7e..15af39e 100644 --- a/src/main/java/com/appdynamics/extensions/oracledb/OracledbMonitorTask.java +++ b/src/main/java/com/appdynamics/extensions/oracledb/OracledbMonitorTask.java @@ -40,14 +40,26 @@ public void run() { Connection connection = null; if (queries != null && !queries.isEmpty()) { try { + long timestamp1 = System.currentTimeMillis(); connection = getConnection(); - for (Map query : queries) { - try { - executeQuery(connection, query); - } catch (SQLException e) { - logger.error("Error during executing query."); + long timestamp2 = System.currentTimeMillis(); + logger.debug("Time taken to get Connection: " + (timestamp2 - timestamp1)); + String dbServerDisplayName = (String) server.get("displayName"); + if(connection != null) { + logger.debug(" Connection successful for server: " + dbServerDisplayName); + + for (Map query : queries) { + try { + executeQuery(connection, query); + } catch (SQLException e) { + logger.error("Error during executing query."); + } } + } else { + + logger.debug("Null Connection returned for server: " + dbServerDisplayName); } + } catch (SQLException e) { logger.error("Error Opening connection", e); status = false; @@ -56,7 +68,9 @@ public void run() { status = false; } finally { try { - closeConnection(connection); + if (connection != null) { + closeConnection(connection); + } } catch (Exception e) { logger.error("Issue closing the connection", e); } @@ -112,7 +126,11 @@ private ResultSet getResultSet(Map query, Statement statement, ResultSet resultS String queryStmt = (String) query.get("queryStmt"); queryStmt = substitute(queryStmt); + long timestamp1 = System.currentTimeMillis(); resultSet = jdbcAdapter.queryDatabase(queryStmt, statement); + long timestamp2 = System.currentTimeMillis(); + + logger.debug("Queried the database in :"+ (timestamp2-timestamp1)+ " ms for query: \n " + queryStmt); return resultSet; }