KYLIN-1546 Refine diagnosis tool
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/220d17b0 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/220d17b0 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/220d17b0 Branch: refs/heads/1.5.x-HBase1.1.3 Commit: 220d17b05699ade8a084e3d7c4993451d69c6f8e Parents: c693dcf Author: lidongsjtu <lid...@apache.org> Authored: Fri Apr 1 09:59:48 2016 +0800 Committer: lidongsjtu <lid...@apache.org> Committed: Fri Apr 1 11:08:02 2016 +0800 ---------------------------------------------------------------------- .../kylin/rest/service/BadQueryDetector.java | 3 +-- .../org/apache/kylin/tool/DiagnosisInfoCLI.java | 27 ++++++++++++++++++-- 2 files changed, 26 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/220d17b0/server/src/main/java/org/apache/kylin/rest/service/BadQueryDetector.java ---------------------------------------------------------------------- diff --git a/server/src/main/java/org/apache/kylin/rest/service/BadQueryDetector.java b/server/src/main/java/org/apache/kylin/rest/service/BadQueryDetector.java index 91c93a9..90d095b 100644 --- a/server/src/main/java/org/apache/kylin/rest/service/BadQueryDetector.java +++ b/server/src/main/java/org/apache/kylin/rest/service/BadQueryDetector.java @@ -129,14 +129,13 @@ public class BadQueryDetector extends Thread { @Override public void badQueryFound(String adj, int runningSec, long startTime, String project, String sql, Thread t) { try { - long cachingSeconds = (kylinConfig.getBadQueryDefaultAlertingSeconds() + 1) * 10; + long cachingSeconds = (kylinConfig.getBadQueryDefaultAlertingSeconds() + 1) * 30; Pair<Long, String> sqlPair = new Pair<>(startTime, sql); if (!cacheQueue.contains(sqlPair)) { badQueryManager.addEntryToProject(sql, adj, startTime, runningSec, serverHostname, t.getName(), project); cacheQueue.add(sqlPair); while (!cacheQueue.isEmpty() && (System.currentTimeMillis() - cacheQueue.first().getFirst() > cachingSeconds * 1000 || cacheQueue.size() > kylinConfig.getBadQueryHistoryNum() * 3)) { cacheQueue.pollFirst(); - logger.info("Poll first"); } } } catch (IOException e) { http://git-wip-us.apache.org/repos/asf/kylin/blob/220d17b0/tool/src/main/java/org/apache/kylin/tool/DiagnosisInfoCLI.java ---------------------------------------------------------------------- diff --git a/tool/src/main/java/org/apache/kylin/tool/DiagnosisInfoCLI.java b/tool/src/main/java/org/apache/kylin/tool/DiagnosisInfoCLI.java index 84e1a3e..5309510 100644 --- a/tool/src/main/java/org/apache/kylin/tool/DiagnosisInfoCLI.java +++ b/tool/src/main/java/org/apache/kylin/tool/DiagnosisInfoCLI.java @@ -54,6 +54,9 @@ public class DiagnosisInfoCLI extends AbstractApplication { @SuppressWarnings("static-access") private static final Option OPTION_PROJECT = OptionBuilder.withArgName("project").hasArg().isRequired(false).withDescription("Specify realizations in which project to extract").create("project"); + @SuppressWarnings("static-access") + private static final Option OPTION_INCLUDE_CONF = OptionBuilder.withArgName("includeConf").hasArg().isRequired(false).withDescription("Specify whether to include conf files to extract. Default true.").create("includeConf"); + private CubeMetaExtractor cubeMetaExtractor; private Options options; private String exportDest; @@ -66,6 +69,7 @@ public class DiagnosisInfoCLI extends AbstractApplication { options.addOption(OPTION_COMPRESS); options.addOption(OPTION_DEST); options.addOption(OPTION_PROJECT); + options.addOption(OPTION_INCLUDE_CONF); } public static void main(String args[]) { @@ -91,11 +95,12 @@ public class DiagnosisInfoCLI extends AbstractApplication { } // export cube metadata - String[] cubeMetaArgs = { "-destDir", exportDest + File.pathSeparator, "-project", project }; + String[] cubeMetaArgs = { "-destDir", exportDest + "metadata", "-project", project }; cubeMetaExtractor.execute(cubeMetaArgs); int logPeriod = optionsHelper.hasOption(OPTION_LOG_PERIOD) ? Integer.valueOf(optionsHelper.getOptionValue(OPTION_LOG_PERIOD)) : DEFAULT_LOG_PERIOD; boolean compress = optionsHelper.hasOption(OPTION_COMPRESS) ? Boolean.valueOf(optionsHelper.getOptionValue(OPTION_COMPRESS)) : false; + boolean includeConf = optionsHelper.hasOption(OPTION_INCLUDE_CONF) ? Boolean.valueOf(optionsHelper.getOptionValue(OPTION_INCLUDE_CONF)) : true; // export logs if (logPeriod > 0) { @@ -103,7 +108,7 @@ public class DiagnosisInfoCLI extends AbstractApplication { final String logFolder = KylinConfig.getKylinHome() + "/logs/"; final String defaultLogFilename = "kylin.log"; - final File logsDir = new File(exportDest + "/logs/"); + final File logsDir = new File(exportDest + "logs/"); final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); FileUtils.forceMkdir(logsDir); @@ -125,6 +130,12 @@ public class DiagnosisInfoCLI extends AbstractApplication { } } + // export conf + if (includeConf) { + logger.info("Start to extract kylin conf files."); + FileUtils.copyDirectoryToDirectory(new File(getConfFolder()), new File(exportDest)); + } + // compress to zip package if (compress) { File tempZipFile = File.createTempFile("diagnosis_", ".zip"); @@ -139,4 +150,16 @@ public class DiagnosisInfoCLI extends AbstractApplication { public String getExportDest() { return exportDest; } + + private String getConfFolder() { + String path = System.getProperty(KylinConfig.KYLIN_CONF); + if (StringUtils.isNotEmpty(path)) { + return path; + } + path = KylinConfig.getKylinHome(); + if (StringUtils.isNotEmpty(path)) { + return path + File.separator + "conf"; + } + return null; + } }