KYLIN-1614 Add more env check to diag tool
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/0308fa81 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/0308fa81 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/0308fa81 Branch: refs/heads/1.5.x-HBase1.x Commit: 0308fa81146fd0b0e100da0e5005a845cba70958 Parents: e47a648 Author: lidongsjtu <lid...@apache.org> Authored: Sat Apr 30 15:52:32 2016 +0800 Committer: lidongsjtu <lid...@apache.org> Committed: Sun May 1 14:14:18 2016 +0800 ---------------------------------------------------------------------- .../org/apache/kylin/common/KylinVersion.java | 1 + .../apache/kylin/rest/init/ClientInfoTask.java | 13 +++++----- .../kylin/tool/AbstractInfoExtractor.java | 19 ++++++++------ .../apache/kylin/tool/ClientEnvExtractor.java | 17 +++++++++--- .../org/apache/kylin/tool/DiagnosisInfoCLI.java | 27 ++++---------------- .../apache/kylin/tool/JobDiagnosisInfoCLI.java | 6 ++--- .../java/org/apache/kylin/tool/ToolUtil.java | 2 +- 7 files changed, 41 insertions(+), 44 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/0308fa81/core-common/src/main/java/org/apache/kylin/common/KylinVersion.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/KylinVersion.java b/core-common/src/main/java/org/apache/kylin/common/KylinVersion.java index 03a0720..c015e62 100644 --- a/core-common/src/main/java/org/apache/kylin/common/KylinVersion.java +++ b/core-common/src/main/java/org/apache/kylin/common/KylinVersion.java @@ -126,6 +126,7 @@ public class KylinVersion { public static String getKylinClientInformation() { StringBuilder buf = new StringBuilder(); + buf.append("kylin.home: ").append(new File(KylinConfig.getKylinHome()).getAbsolutePath()).append("\n"); buf.append("kylin.version:").append(KylinVersion.getCurrentVersion()).append("\n"); buf.append("commit:").append(getGitCommitInfo()).append("\n"); buf.append("os.name:").append(System.getProperty("os.name")).append("\n"); http://git-wip-us.apache.org/repos/asf/kylin/blob/0308fa81/server/src/main/java/org/apache/kylin/rest/init/ClientInfoTask.java ---------------------------------------------------------------------- diff --git a/server/src/main/java/org/apache/kylin/rest/init/ClientInfoTask.java b/server/src/main/java/org/apache/kylin/rest/init/ClientInfoTask.java index 0fc0e69..301a9df 100644 --- a/server/src/main/java/org/apache/kylin/rest/init/ClientInfoTask.java +++ b/server/src/main/java/org/apache/kylin/rest/init/ClientInfoTask.java @@ -18,13 +18,13 @@ package org.apache.kylin.rest.init; +import java.io.File; + +import org.apache.kylin.common.KylinConfig; import org.apache.kylin.common.KylinVersion; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -/** - * Created by dongli on 3/16/16. - */ public class ClientInfoTask extends InitialTask { private static final Logger logger = LoggerFactory.getLogger(ClientInfoTask.class); @@ -37,15 +37,14 @@ public class ClientInfoTask extends InitialTask { public static String getClientDetailInformation() { StringBuilder buf = new StringBuilder(); + buf.append("kylin.home: ").append(new File(KylinConfig.getKylinHome()).getAbsolutePath()).append("\n"); buf.append("kylin.version:").append(KylinVersion.getCurrentVersion()).append("\n"); - buf.append("commit:").append(KylinVersion.getGitCommitInfo()); + buf.append("commit:").append(KylinVersion.getGitCommitInfo()).append("\n"); buf.append("os.name:").append(System.getProperty("os.name")).append("\n"); buf.append("os.arch:").append(System.getProperty("os.arch")).append("\n"); buf.append("os.version:").append(System.getProperty("os.version")).append("\n"); - buf.append("java.class.path:").append(System.getProperty("java.class.path")).append("\n"); buf.append("java.version:").append(System.getProperty("java.version")).append("\n"); - buf.append("java.vendor:").append(System.getProperty("java.vendor")).append("\n"); - buf.append("java.library.path:").append(System.getProperty("java.library.path")); + buf.append("java.vendor:").append(System.getProperty("java.vendor")); return buf.toString(); } http://git-wip-us.apache.org/repos/asf/kylin/blob/0308fa81/tool/src/main/java/org/apache/kylin/tool/AbstractInfoExtractor.java ---------------------------------------------------------------------- diff --git a/tool/src/main/java/org/apache/kylin/tool/AbstractInfoExtractor.java b/tool/src/main/java/org/apache/kylin/tool/AbstractInfoExtractor.java index 23a4559..4a5f31e 100644 --- a/tool/src/main/java/org/apache/kylin/tool/AbstractInfoExtractor.java +++ b/tool/src/main/java/org/apache/kylin/tool/AbstractInfoExtractor.java @@ -45,7 +45,7 @@ public abstract class AbstractInfoExtractor extends AbstractApplication { private static final Option OPTION_COMPRESS = OptionBuilder.withArgName("compress").hasArg().isRequired(false).withDescription("specify whether to compress the output with zip. Default true.").create("compress"); @SuppressWarnings("static-access") - private static final Option OPTION_QUIET = OptionBuilder.withArgName("quiet").hasArg().isRequired(false).withDescription("specify whether to print final result").create("quiet"); + private static final Option OPTION_SUBMODULE = OptionBuilder.withArgName("submodule").hasArg().isRequired(false).withDescription("specify whether this is a submodule of other CLI tool").create("submodule"); private static final String DEFAULT_PACKAGE_TYPE = "base"; @@ -58,7 +58,7 @@ public abstract class AbstractInfoExtractor extends AbstractApplication { options = new Options(); options.addOption(OPTION_DEST); options.addOption(OPTION_COMPRESS); - options.addOption(OPTION_QUIET); + options.addOption(OPTION_SUBMODULE); packageType = DEFAULT_PACKAGE_TYPE; } @@ -71,8 +71,8 @@ public abstract class AbstractInfoExtractor extends AbstractApplication { @Override protected void execute(OptionsHelper optionsHelper) throws Exception { String exportDest = optionsHelper.getOptionValue(options.getOption("destDir")); - boolean compress = optionsHelper.hasOption(OPTION_COMPRESS) ? Boolean.valueOf(optionsHelper.getOptionValue(OPTION_COMPRESS)) : true; - boolean quiet = optionsHelper.hasOption(OPTION_QUIET) ? Boolean.valueOf(optionsHelper.getOptionValue(OPTION_QUIET)) : false; + boolean shouldCompress = optionsHelper.hasOption(OPTION_COMPRESS) ? Boolean.valueOf(optionsHelper.getOptionValue(OPTION_COMPRESS)) : true; + boolean isSubmodule = optionsHelper.hasOption(OPTION_SUBMODULE) ? Boolean.valueOf(optionsHelper.getOptionValue(OPTION_SUBMODULE)) : false; if (StringUtils.isEmpty(exportDest)) { throw new RuntimeException("destDir is not set, exit directly without extracting"); @@ -88,11 +88,14 @@ public abstract class AbstractInfoExtractor extends AbstractApplication { } exportDir = new File(exportDest); - dumpBasicDiagInfo(); + if (!isSubmodule) { + dumpBasicDiagInfo(); + } + executeExtract(optionsHelper, exportDir); // compress to zip package - if (compress) { + if (shouldCompress) { File tempZipFile = File.createTempFile(packageType + "_", ".zip"); ZipFileUtils.compressZipFile(exportDir.getAbsolutePath(), tempZipFile.getAbsolutePath()); FileUtils.cleanDirectory(exportDir); @@ -103,7 +106,7 @@ public abstract class AbstractInfoExtractor extends AbstractApplication { exportDir = new File(exportDest); } - if (!quiet) { + if (!isSubmodule) { StringBuffer output = new StringBuffer(); output.append("\n========================================"); output.append("\nDump " + packageType + " package locates at: \n" + exportDir.getAbsolutePath()); @@ -118,7 +121,7 @@ public abstract class AbstractInfoExtractor extends AbstractApplication { FileUtils.writeStringToFile(new File(exportDir, "kylin_env"), output); StringBuilder basicSb = new StringBuilder(); - basicSb.append(ToolUtil.getHBaseMetaStoreId()).append("\n"); + basicSb.append("MetaStoreID: ").append(ToolUtil.getHBaseMetaStoreId()).append("\n"); basicSb.append("PackageType: ").append(packageType.toUpperCase()).append("\n"); FileUtils.writeStringToFile(new File(exportDir, "info"), basicSb.toString()); } catch (Exception e) { http://git-wip-us.apache.org/repos/asf/kylin/blob/0308fa81/tool/src/main/java/org/apache/kylin/tool/ClientEnvExtractor.java ---------------------------------------------------------------------- diff --git a/tool/src/main/java/org/apache/kylin/tool/ClientEnvExtractor.java b/tool/src/main/java/org/apache/kylin/tool/ClientEnvExtractor.java index b0e79d4..01908be 100644 --- a/tool/src/main/java/org/apache/kylin/tool/ClientEnvExtractor.java +++ b/tool/src/main/java/org/apache/kylin/tool/ClientEnvExtractor.java @@ -47,17 +47,28 @@ public class ClientEnvExtractor extends AbstractInfoExtractor { @Override protected void executeExtract(OptionsHelper optionsHelper, File exportDir) throws Exception { + // dump os info addLocalFile("/sys/kernel/mm/transparent_hugepage/defrag", "linux/transparent_hugepage"); addLocalFile("/proc/sys/vm/swappiness", "linux/swappiness"); + addLocalFile("/proc/cpuinfo", "linux/cpuinfo"); addShellOutput("lsb_release -a", "linux", "lsb_release"); - addShellOutput("ps aux|grep kylin", "kylin", "processes"); + addShellOutput("df -h", "linux", "disk_usage"); + addShellOutput("free -m", "linux", "mem_usage_mb"); + addShellOutput("top -n 1 | head -n 30", "linux", "top"); + addShellOutput("ps aux|grep kylin", "linux", "kylin_processes"); + + // dump hadoop env + addShellOutput("hadoop version", "hadoop", "version"); + addShellOutput("hbase version", "hbase", "version"); + addShellOutput("hive --version", "hive", "version"); + addShellOutput("beeline --version", "hive", "beeline_version"); } private void addLocalFile(String src, String destDir) { try { File srcFile = new File(src); File destDirFile = null; - if (StringUtils.isEmpty(destDir)) { + if (!StringUtils.isEmpty(destDir)) { destDirFile = new File(exportDir, destDir); FileUtils.forceMkdir(destDirFile); } else { @@ -73,7 +84,7 @@ public class ClientEnvExtractor extends AbstractInfoExtractor { private void addShellOutput(String cmd, String destDir, String filename) { try { File destDirFile = null; - if (StringUtils.isEmpty(destDir)) { + if (!StringUtils.isEmpty(destDir)) { destDirFile = new File(exportDir, destDir); FileUtils.forceMkdir(destDirFile); } else { http://git-wip-us.apache.org/repos/asf/kylin/blob/0308fa81/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 bd88fe7..863171d 100644 --- a/tool/src/main/java/org/apache/kylin/tool/DiagnosisInfoCLI.java +++ b/tool/src/main/java/org/apache/kylin/tool/DiagnosisInfoCLI.java @@ -25,7 +25,6 @@ import org.apache.commons.cli.Option; import org.apache.commons.cli.OptionBuilder; import org.apache.commons.io.FileUtils; import org.apache.kylin.common.KylinConfig; -import org.apache.kylin.common.KylinVersion; import org.apache.kylin.common.util.OptionsHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -45,13 +44,10 @@ public class DiagnosisInfoCLI extends AbstractInfoExtractor { @SuppressWarnings("static-access") private static final Option OPTION_INCLUDE_CLIENT = OptionBuilder.withArgName("includeClient").hasArg().isRequired(false).withDescription("Specify whether to include client info to extract. Default true.").create("includeClient"); - private KylinConfig kylinConfig; - public DiagnosisInfoCLI() { super(); - packageType = "diagnosis"; - kylinConfig = KylinConfig.getInstanceFromEnv(); + packageType = "project"; options.addOption(OPTION_PROJECT); options.addOption(OPTION_INCLUDE_CONF); @@ -72,13 +68,13 @@ public class DiagnosisInfoCLI extends AbstractInfoExtractor { boolean includeClient = optionsHelper.hasOption(OPTION_INCLUDE_CLIENT) ? Boolean.valueOf(optionsHelper.getOptionValue(OPTION_INCLUDE_CLIENT)) : true; // export cube metadata - String[] cubeMetaArgs = { "-destDir", new File(exportDir, "metadata").getAbsolutePath(), "-project", project, "-compress", "false", "-quiet", "false" }; + String[] cubeMetaArgs = { "-destDir", new File(exportDir, "metadata").getAbsolutePath(), "-project", project, "-compress", "false", "-submodule", "true" }; CubeMetaExtractor cubeMetaExtractor = new CubeMetaExtractor(); cubeMetaExtractor.execute(cubeMetaArgs); // export HBase if (includeHBase) { - String[] hbaseArgs = { "-destDir", new File(exportDir, "hbase").getAbsolutePath(), "-project", project, "-compress", "false", "-quiet", "false" }; + String[] hbaseArgs = { "-destDir", new File(exportDir, "hbase").getAbsolutePath(), "-project", project, "-compress", "false", "-submodule", "true" }; HBaseUsageExtractor hBaseUsageExtractor = new HBaseUsageExtractor(); hBaseUsageExtractor.execute(hbaseArgs); } @@ -95,7 +91,7 @@ public class DiagnosisInfoCLI extends AbstractInfoExtractor { // export client if (includeClient) { - String[] clientArgs = { "-destDir", new File(exportDir, "client").getAbsolutePath(), "-compress", "false", "-quiet", "false" }; + String[] clientArgs = { "-destDir", new File(exportDir, "client").getAbsolutePath(), "-compress", "false", "-submodule", "true" }; ClientEnvExtractor clientEnvExtractor = new ClientEnvExtractor(); clientEnvExtractor.execute(clientArgs); } @@ -107,21 +103,8 @@ public class DiagnosisInfoCLI extends AbstractInfoExtractor { logger.warn("Error in export commit id.", e); } - // export basic info - try { - File basicDir = new File(exportDir, "basic"); - FileUtils.forceMkdir(basicDir); - String output = KylinVersion.getKylinClientInformation(); - FileUtils.writeStringToFile(new File(basicDir, "client"), output + "\n"); - output = ToolUtil.getHBaseMetaStoreId(); - FileUtils.writeStringToFile(new File(basicDir, "client"), output, true); - - } catch (Exception e) { - logger.warn("Error in export process info.", e); - } - // export logs - String[] logsArgs = { "-destDir", new File(exportDir, "logs").getAbsolutePath(), "-compress", "false", "-quiet", "false" }; + String[] logsArgs = { "-destDir", new File(exportDir, "logs").getAbsolutePath(), "-compress", "false", "-submodule", "true" }; KylinLogExtractor logExtractor = new KylinLogExtractor(); logExtractor.execute(logsArgs); } http://git-wip-us.apache.org/repos/asf/kylin/blob/0308fa81/tool/src/main/java/org/apache/kylin/tool/JobDiagnosisInfoCLI.java ---------------------------------------------------------------------- diff --git a/tool/src/main/java/org/apache/kylin/tool/JobDiagnosisInfoCLI.java b/tool/src/main/java/org/apache/kylin/tool/JobDiagnosisInfoCLI.java index 85fd539..45e3072 100644 --- a/tool/src/main/java/org/apache/kylin/tool/JobDiagnosisInfoCLI.java +++ b/tool/src/main/java/org/apache/kylin/tool/JobDiagnosisInfoCLI.java @@ -101,7 +101,7 @@ public class JobDiagnosisInfoCLI extends AbstractInfoExtractor { if (!StringUtils.isEmpty(cubeName)) { File metaDir = new File(exportDir, "cube"); FileUtils.forceMkdir(metaDir); - String[] cubeMetaArgs = { "-cube", cubeName, "-destDir", new File(metaDir, cubeName).getAbsolutePath(), "-includeJobs", "false", "-compress", "false", "-quiet", "false" }; + String[] cubeMetaArgs = { "-cube", cubeName, "-destDir", new File(metaDir, cubeName).getAbsolutePath(), "-includeJobs", "false", "-compress", "false", "-submodule", "true" }; logger.info("Start to extract related cube: " + StringUtils.join(cubeMetaArgs)); CubeMetaExtractor cubeMetaExtractor = new CubeMetaExtractor(); @@ -120,13 +120,13 @@ public class JobDiagnosisInfoCLI extends AbstractInfoExtractor { } if (includeClient) { - String[] clientArgs = { "-destDir", new File(exportDir, "client").getAbsolutePath(), "-compress", "false", "-quiet", "false" }; + String[] clientArgs = { "-destDir", new File(exportDir, "client").getAbsolutePath(), "-compress", "false", "-submodule", "true" }; ClientEnvExtractor clientEnvExtractor = new ClientEnvExtractor(); clientEnvExtractor.execute(clientArgs); } // export kylin logs - String[] logsArgs = { "-destDir", new File(exportDir, "logs").getAbsolutePath(), "-compress", "false", "-quiet", "false" }; + String[] logsArgs = { "-destDir", new File(exportDir, "logs").getAbsolutePath(), "-compress", "false", "-submodule", "true" }; KylinLogExtractor logExtractor = new KylinLogExtractor(); logExtractor.execute(logsArgs); } http://git-wip-us.apache.org/repos/asf/kylin/blob/0308fa81/tool/src/main/java/org/apache/kylin/tool/ToolUtil.java ---------------------------------------------------------------------- diff --git a/tool/src/main/java/org/apache/kylin/tool/ToolUtil.java b/tool/src/main/java/org/apache/kylin/tool/ToolUtil.java index 24a7a37..aa8810c 100644 --- a/tool/src/main/java/org/apache/kylin/tool/ToolUtil.java +++ b/tool/src/main/java/org/apache/kylin/tool/ToolUtil.java @@ -49,7 +49,7 @@ public class ToolUtil { try (final HBaseAdmin hbaseAdmin = new HBaseAdmin(HBaseConfiguration.create(HadoopUtil.getCurrentConfiguration()))) { final String metaStoreName = KylinConfig.getInstanceFromEnv().getMetadataUrlPrefix(); final HTableDescriptor desc = hbaseAdmin.getTableDescriptor(TableName.valueOf(metaStoreName)); - return "MetaStore UUID: " + desc.getValue(HBaseConnection.HTABLE_UUID_TAG); + return desc.getValue(HBaseConnection.HTABLE_UUID_TAG); } }