diff --git a/skywalking-alarm/src/main/java/com/ai/cloud/skywalking/alarm/AlarmProcessServer.java b/skywalking-alarm/src/main/java/com/ai/cloud/skywalking/alarm/AlarmProcessServer.java index e27312d31..5c25ed40a 100644 --- a/skywalking-alarm/src/main/java/com/ai/cloud/skywalking/alarm/AlarmProcessServer.java +++ b/skywalking-alarm/src/main/java/com/ai/cloud/skywalking/alarm/AlarmProcessServer.java @@ -38,7 +38,7 @@ public class AlarmProcessServer { processThreads.add(tmpThread); } logger.info("Successfully launched {} processing threads.", Config.Server.PROCESS_THREAD_SIZE); - new NumberOfUsersChangeDetectionThread().start(); + new UsersChangedDetectionThread().start(); logger.info("Successfully launched the thread that inspect the number of user"); logger.info("Alarm process server successfully started."); while (true) { diff --git a/skywalking-alarm/src/main/java/com/ai/cloud/skywalking/alarm/NumberOfUsersChangeDetectionThread.java b/skywalking-alarm/src/main/java/com/ai/cloud/skywalking/alarm/UsersChangedDetectionThread.java similarity index 93% rename from skywalking-alarm/src/main/java/com/ai/cloud/skywalking/alarm/NumberOfUsersChangeDetectionThread.java rename to skywalking-alarm/src/main/java/com/ai/cloud/skywalking/alarm/UsersChangedDetectionThread.java index 1d59698db..7673e4d24 100644 --- a/skywalking-alarm/src/main/java/com/ai/cloud/skywalking/alarm/NumberOfUsersChangeDetectionThread.java +++ b/skywalking-alarm/src/main/java/com/ai/cloud/skywalking/alarm/UsersChangedDetectionThread.java @@ -11,13 +11,13 @@ import org.apache.logging.log4j.Logger; import java.sql.SQLException; import java.util.concurrent.TimeUnit; -public class NumberOfUsersChangeDetectionThread extends Thread { +public class UsersChangedDetectionThread extends Thread { private boolean isInspector = false; private InterProcessMutex inspectorLock = new InterProcessMutex(ZKUtil.getZkClient(), Config.ZKPath.INSPECTOR_LOCK_PATH); private String userIdsEncryptedStr; - private Logger logger = LogManager.getLogger(NumberOfUsersChangeDetectionThread.class); + private Logger logger = LogManager.getLogger(UsersChangedDetectionThread.class); public void run() { while (true) { diff --git a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/AnalysisServerDriver.java b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/AnalysisServerDriver.java index 5eefd37d1..ca7723184 100644 --- a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/AnalysisServerDriver.java +++ b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/AnalysisServerDriver.java @@ -5,7 +5,7 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; -import com.ai.cloud.skywalking.analysis.config.Constants; +import com.ai.cloud.skywalking.analysis.config.HBaseTableMetaData; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.conf.Configured; import org.apache.hadoop.hbase.client.Scan; @@ -51,7 +51,7 @@ public class AnalysisServerDriver extends Configured implements Tool { job.setJarByClass(AnalysisServerDriver.class); Scan scan = buildHBaseScan(args); - TableMapReduceUtil.initTableMapperJob(Constants.TABLE_CALL_CHAIN, scan, Categorize2ChainMapper.class, + TableMapReduceUtil.initTableMapperJob(HBaseTableMetaData.TABLE_CALL_CHAIN.TABLE_NAME, scan, Categorize2ChainMapper.class, Text.class, ChainInfo.class, job); job.setReducerClass(Categorize2ChainReducer.class); diff --git a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/Categorize2ChainMapper.java b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/Categorize2ChainMapper.java index 3f76debd7..346509816 100644 --- a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/Categorize2ChainMapper.java +++ b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/Categorize2ChainMapper.java @@ -4,9 +4,10 @@ import com.ai.cloud.skywalking.analysis.categorize2chain.filter.SpanNodeProcessC import com.ai.cloud.skywalking.analysis.categorize2chain.filter.SpanNodeProcessFilter; import com.ai.cloud.skywalking.analysis.categorize2chain.model.ChainInfo; import com.ai.cloud.skywalking.analysis.categorize2chain.model.ChainNode; +import com.ai.cloud.skywalking.analysis.categorize2chain.util.HBaseUtil; import com.ai.cloud.skywalking.analysis.config.ConfigInitializer; -import com.ai.cloud.skywalking.analysis.util.HBaseUtil; import com.ai.cloud.skywalking.protocol.Span; + import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.io.ImmutableBytesWritable; @@ -63,7 +64,7 @@ public class Categorize2ChainMapper extends TableMapper { } chainInfo.generateChainToken(); - HBaseUtil.saveData(key, chainInfo); + HBaseUtil.saveCidTidMapping(key, chainInfo); return chainInfo; } diff --git a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/Categorize2ChainReducer.java b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/Categorize2ChainReducer.java index 437e7d36b..cd9f89eaa 100644 --- a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/Categorize2ChainReducer.java +++ b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/Categorize2ChainReducer.java @@ -4,6 +4,7 @@ import java.io.IOException; import java.util.Iterator; import com.ai.cloud.skywalking.analysis.config.ConfigInitializer; + import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Reducer; @@ -11,7 +12,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.ai.cloud.skywalking.analysis.categorize2chain.model.ChainInfo; -import com.ai.cloud.skywalking.analysis.util.HBaseUtil; +import com.ai.cloud.skywalking.analysis.categorize2chain.util.HBaseUtil; public class Categorize2ChainReducer extends Reducer { private static Logger logger = LoggerFactory.getLogger(Categorize2ChainReducer.class.getName()); diff --git a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/ChainDetail.java b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/ChainDetail.java index a522ab7c9..e94d5509b 100644 --- a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/ChainDetail.java +++ b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/ChainDetail.java @@ -3,7 +3,7 @@ package com.ai.cloud.skywalking.analysis.categorize2chain; import com.ai.cloud.skywalking.analysis.categorize2chain.model.ChainInfo; import com.ai.cloud.skywalking.analysis.categorize2chain.model.ChainNode; import com.ai.cloud.skywalking.analysis.config.Config; -import com.ai.cloud.skywalking.analysis.config.Constants; +import com.ai.cloud.skywalking.analysis.config.HBaseTableMetaData; import com.google.gson.Gson; import org.apache.hadoop.hbase.client.Put; @@ -36,7 +36,7 @@ public class ChainDetail { public void save(Put put) throws SQLException { for (Map.Entry entry : chainNodeMap.entrySet()){ - put.addColumn(Constants.COLUMN_FAMILY_NAME_TRACE_DETAIL.getBytes(),entry.getKey().getBytes(), + put.addColumn(HBaseTableMetaData.TABLE_CHAIN_DETAIL.COLUMN_FAMILY_NAME.getBytes(),entry.getKey().getBytes(), entry.getValue().toString().getBytes()); } if (isNormal) { diff --git a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/ChainNodeSpecificTimeWindowSummary.java b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/ChainNodeSpecificTimeWindowSummary.java index a7faf1760..165e52123 100644 --- a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/ChainNodeSpecificTimeWindowSummary.java +++ b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/ChainNodeSpecificTimeWindowSummary.java @@ -1,16 +1,16 @@ package com.ai.cloud.skywalking.analysis.categorize2chain; +import java.util.HashMap; +import java.util.Map; + import com.ai.cloud.skywalking.analysis.categorize2chain.model.ChainNode; -import com.ai.cloud.skywalking.analysis.config.Config; import com.google.gson.Gson; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.reflect.TypeToken; -import java.util.HashMap; -import java.util.Map; - public class ChainNodeSpecificTimeWindowSummary { + public static final long INTERVAL = 1L; private String traceLevelId; @@ -50,7 +50,7 @@ public class ChainNodeSpecificTimeWindowSummary { private String generateKey(long startTime) { long minutes = (startTime % (1000 * 60 * 60)) / (1000 * 60); - return String.valueOf(minutes / Config.ChainNodeSummary.INTERVAL); + return String.valueOf(minutes / INTERVAL); } @Override diff --git a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/ChainRelationship.java b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/ChainRelationship.java index 86c253a47..3f7faa273 100644 --- a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/ChainRelationship.java +++ b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/ChainRelationship.java @@ -1,17 +1,23 @@ package com.ai.cloud.skywalking.analysis.categorize2chain; -import com.ai.cloud.skywalking.analysis.categorize2chain.model.ChainInfo; -import com.ai.cloud.skywalking.analysis.config.Config; -import com.ai.cloud.skywalking.analysis.config.Constants; -import com.ai.cloud.skywalking.analysis.util.HBaseUtil; -import com.google.gson.GsonBuilder; +import java.io.IOException; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; + import org.apache.hadoop.hbase.client.Put; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.IOException; -import java.sql.SQLException; -import java.util.*; +import com.ai.cloud.skywalking.analysis.categorize2chain.model.ChainInfo; +import com.ai.cloud.skywalking.analysis.categorize2chain.util.HBaseUtil; +import com.ai.cloud.skywalking.analysis.config.HBaseTableMetaData; +import com.google.gson.GsonBuilder; public class ChainRelationship { private static Logger logger = LoggerFactory.getLogger(ChainRelationship.class.getName()); @@ -107,11 +113,11 @@ public class ChainRelationship { private void saveChainRelationship() throws IOException { Put put = new Put(getKey().getBytes()); - put.addColumn(Constants.COLUMN_FAMILY_CHAIN_RELATIONSHIP.getBytes(), Constants.UNCATEGORIZE_COLUMN_FAMILY.getBytes() + put.addColumn(HBaseTableMetaData.TABLE_CALL_CHAIN_RELATIONSHIP.COLUMN_FAMILY_NAME.getBytes(), HBaseTableMetaData.TABLE_CALL_CHAIN_RELATIONSHIP.UNCATEGORIZE_COLUMN_NAME.getBytes() , new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create().toJson(getUncategorizeChainInfoList()).getBytes()); for (Map.Entry entry : getCategorizedChainInfoMap().entrySet()) { - put.addColumn(Constants.COLUMN_FAMILY_CHAIN_RELATIONSHIP.getBytes(), entry.getKey().getBytes() + put.addColumn(HBaseTableMetaData.TABLE_CALL_CHAIN_RELATIONSHIP.COLUMN_FAMILY_NAME.getBytes(), entry.getKey().getBytes() , entry.getValue().toString().getBytes()); } diff --git a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/ChainSpecificTimeWindowSummary.java b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/ChainSpecificTimeWindowSummary.java index cf7d60b00..c5e4a3f16 100644 --- a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/ChainSpecificTimeWindowSummary.java +++ b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/ChainSpecificTimeWindowSummary.java @@ -1,9 +1,9 @@ package com.ai.cloud.skywalking.analysis.categorize2chain; import com.ai.cloud.skywalking.analysis.categorize2chain.model.ChainNode; +import com.ai.cloud.skywalking.analysis.categorize2chain.util.HBaseUtil; import com.ai.cloud.skywalking.analysis.config.Config; -import com.ai.cloud.skywalking.analysis.config.Constants; -import com.ai.cloud.skywalking.analysis.util.HBaseUtil; +import com.ai.cloud.skywalking.analysis.config.HBaseTableMetaData; import org.apache.hadoop.hbase.client.Put; @@ -52,7 +52,7 @@ public class ChainSpecificTimeWindowSummary { public void save(Put put) { for (Map.Entry entry : chainNodeSummaryResultMap.entrySet()) { - put.addColumn(Constants.COLUMN_FAMILY_NAME_CHAIN_SUMMARY.getBytes(), entry.getKey().getBytes(), entry.getValue().toString().getBytes()); + put.addColumn(HBaseTableMetaData.TABLE_CHAIN_ONE_MINUTE_SUMMARY_EXCLUDE_RELATIONSHIP.COLUMN_FAMILY_NAME.getBytes(), entry.getKey().getBytes(), entry.getValue().toString().getBytes()); } } } diff --git a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/ChainSummary.java b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/ChainSummary.java index 900eb6c3d..2db472268 100644 --- a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/ChainSummary.java +++ b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/ChainSummary.java @@ -2,7 +2,7 @@ package com.ai.cloud.skywalking.analysis.categorize2chain; import com.ai.cloud.skywalking.analysis.categorize2chain.model.ChainInfo; import com.ai.cloud.skywalking.analysis.categorize2chain.model.ChainNode; -import com.ai.cloud.skywalking.analysis.util.HBaseUtil; +import com.ai.cloud.skywalking.analysis.categorize2chain.util.HBaseUtil; import org.apache.hadoop.hbase.client.Put; diff --git a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/filter/impl/TokenGenerateFilter.java b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/filter/impl/TokenGenerateFilter.java index 2c49d40e2..b008ce993 100644 --- a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/filter/impl/TokenGenerateFilter.java +++ b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/filter/impl/TokenGenerateFilter.java @@ -4,7 +4,7 @@ import com.ai.cloud.skywalking.analysis.categorize2chain.SubLevelSpanCostCounter import com.ai.cloud.skywalking.analysis.categorize2chain.SpanEntry; import com.ai.cloud.skywalking.analysis.categorize2chain.filter.SpanNodeProcessFilter; import com.ai.cloud.skywalking.analysis.categorize2chain.model.ChainNode; -import com.ai.cloud.skywalking.analysis.util.TokenGenerator; +import com.ai.cloud.skywalking.analysis.categorize2chain.util.TokenGenerator; public class TokenGenerateFilter extends SpanNodeProcessFilter { diff --git a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/model/ChainInfo.java b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/model/ChainInfo.java index 6310fabcf..f4be27097 100644 --- a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/model/ChainInfo.java +++ b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/model/ChainInfo.java @@ -1,10 +1,11 @@ package com.ai.cloud.skywalking.analysis.categorize2chain.model; -import com.ai.cloud.skywalking.analysis.util.TokenGenerator; +import com.ai.cloud.skywalking.analysis.categorize2chain.util.TokenGenerator; import com.google.gson.Gson; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.reflect.TypeToken; + import org.apache.hadoop.io.Writable; import java.io.DataInput; diff --git a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/util/HBaseUtil.java b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/util/HBaseUtil.java similarity index 73% rename from skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/util/HBaseUtil.java rename to skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/util/HBaseUtil.java index 46e3bbc14..f6fb6f7ca 100644 --- a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/util/HBaseUtil.java +++ b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/util/HBaseUtil.java @@ -1,9 +1,9 @@ -package com.ai.cloud.skywalking.analysis.util; +package com.ai.cloud.skywalking.analysis.categorize2chain.util; import com.ai.cloud.skywalking.analysis.categorize2chain.*; import com.ai.cloud.skywalking.analysis.categorize2chain.model.ChainInfo; import com.ai.cloud.skywalking.analysis.config.Config; -import com.ai.cloud.skywalking.analysis.config.Constants; +import com.ai.cloud.skywalking.analysis.config.HBaseTableMetaData; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import org.apache.hadoop.conf.Configuration; @@ -22,44 +22,17 @@ public class HBaseUtil { private static Configuration configuration = null; private static Connection connection; - public static boolean saveData(String traceId, ChainInfo chainInfo) { - Table table = null; - - try { - table = connection.getTable(TableName.valueOf(Constants.TABLE_CID_TID_MAPPING)); - } catch (IOException e) { - logger.error("Cannot found table[" + Constants.TABLE_CID_TID_MAPPING + "]", e); - } - - Put put = new Put(Bytes.toBytes(traceId)); - - put.addColumn(Bytes.toBytes(Constants.COLUMN_FAMILY_NAME_TRACE_INFO), - Bytes.toBytes(Constants.COLUMN_FAMILY_NAME_CID), - Bytes.toBytes(chainInfo.getCID())); - try { - table.put(put); - if (logger.isDebugEnabled()) { - logger.debug("Insert data[RowKey:{}] success.", put.getId()); - } - } catch (IOException e) { - logger.error("Insert data [Rowkey:{}] failed.", put.getId(), e); - return false; - } - - return true; - } - static { try { initHBaseClient(); - // - createTableIfNeed(Constants.TABLE_CID_TID_MAPPING, Constants.COLUMN_FAMILY_NAME_TRACE_INFO); - // - createTableIfNeed(Constants.TABLE_CALL_CHAIN_RELATIONSHIP, Constants.COLUMN_FAMILY_CHAIN_RELATIONSHIP); - createTableIfNeed(Constants.TABLE_CHAIN_ONE_MINUTE_SUMMARY_EXCLUDE_RELATIONSHIP, Constants.COLUMN_FAMILY_NAME_CHAIN_SUMMARY); + createTableIfNeed(HBaseTableMetaData.TABLE_CID_TID_MAPPING.TABLE_NAME, HBaseTableMetaData.TABLE_CID_TID_MAPPING.COLUMN_FAMILY_NAME); - createTableIfNeed(Constants.TABLE_CHAIN_DETAIL, Constants.COLUMN_FAMILY_NAME_TRACE_DETAIL); + createTableIfNeed(HBaseTableMetaData.TABLE_CALL_CHAIN_RELATIONSHIP.TABLE_NAME, HBaseTableMetaData.TABLE_CALL_CHAIN_RELATIONSHIP.COLUMN_FAMILY_NAME); + + createTableIfNeed(HBaseTableMetaData.TABLE_CHAIN_ONE_MINUTE_SUMMARY_EXCLUDE_RELATIONSHIP.TABLE_NAME, HBaseTableMetaData.TABLE_CHAIN_ONE_MINUTE_SUMMARY_EXCLUDE_RELATIONSHIP.COLUMN_FAMILY_NAME); + + createTableIfNeed(HBaseTableMetaData.TABLE_CHAIN_DETAIL.TABLE_NAME, HBaseTableMetaData.TABLE_CHAIN_DETAIL.COLUMN_FAMILY_NAME); } catch (IOException e) { logger.error("Create tables failed", e); @@ -88,11 +61,38 @@ public class HBaseUtil { connection = ConnectionFactory.createConnection(configuration); } } + + public static boolean saveCidTidMapping(String traceId, ChainInfo chainInfo) { + Table table = null; + + try { + table = connection.getTable(TableName.valueOf(HBaseTableMetaData.TABLE_CID_TID_MAPPING.TABLE_NAME)); + } catch (IOException e) { + logger.error("Cannot found table[" + HBaseTableMetaData.TABLE_CID_TID_MAPPING.TABLE_NAME + "]", e); + } + + Put put = new Put(Bytes.toBytes(traceId)); + + put.addColumn(Bytes.toBytes(HBaseTableMetaData.TABLE_CID_TID_MAPPING.COLUMN_FAMILY_NAME), + Bytes.toBytes(HBaseTableMetaData.TABLE_CID_TID_MAPPING.CID_COLUMN_NAME), + Bytes.toBytes(chainInfo.getCID())); + try { + table.put(put); + if (logger.isDebugEnabled()) { + logger.debug("Insert data[RowKey:{}] success.", put.getId()); + } + } catch (IOException e) { + logger.error("Insert data [Rowkey:{}] failed.", put.getId(), e); + return false; + } + + return true; + } public static ChainRelationship selectCallChainRelationship(String key) throws IOException { ChainRelationship chainRelate = new ChainRelationship(key); - Table table = connection.getTable(TableName.valueOf(Constants.TABLE_CALL_CHAIN_RELATIONSHIP)); + Table table = connection.getTable(TableName.valueOf(HBaseTableMetaData.TABLE_CALL_CHAIN_RELATIONSHIP.TABLE_NAME)); Get g = new Get(Bytes.toBytes(key)); Result r = table.get(g); for (Cell cell : r.rawCells()) { @@ -100,7 +100,7 @@ public class HBaseUtil { String qualifierName = Bytes.toString(cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength()); - if (Constants.UNCATEGORIZE_COLUMN_FAMILY.equals(qualifierName)) { + if (HBaseTableMetaData.TABLE_CALL_CHAIN_RELATIONSHIP.UNCATEGORIZE_COLUMN_NAME.equals(qualifierName)) { List uncategorizeChainInfoList = new Gson().fromJson(Bytes.toString(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength()), new TypeToken>() { @@ -118,7 +118,7 @@ public class HBaseUtil { public static ChainSpecificTimeWindowSummary selectChainSummaryResult(String key) throws IOException { ChainSpecificTimeWindowSummary result = null; - Table table = connection.getTable(TableName.valueOf(Constants.TABLE_CHAIN_ONE_MINUTE_SUMMARY_EXCLUDE_RELATIONSHIP)); + Table table = connection.getTable(TableName.valueOf(HBaseTableMetaData.TABLE_CHAIN_ONE_MINUTE_SUMMARY_EXCLUDE_RELATIONSHIP.TABLE_NAME)); Get g = new Get(Bytes.toBytes(key)); Result r = table.get(g); @@ -136,7 +136,7 @@ public class HBaseUtil { } public static void saveChainRelationship(Put put) throws IOException { - Table table = connection.getTable(TableName.valueOf(Constants.TABLE_CALL_CHAIN_RELATIONSHIP)); + Table table = connection.getTable(TableName.valueOf(HBaseTableMetaData.TABLE_CALL_CHAIN_RELATIONSHIP.TABLE_NAME)); table.put(put); if (logger.isDebugEnabled()) { @@ -145,7 +145,7 @@ public class HBaseUtil { } public static void batchSaveChainSpecificTimeWindowSummary(List puts) throws IOException, InterruptedException { - Table table = connection.getTable(TableName.valueOf(Constants.TABLE_CHAIN_ONE_MINUTE_SUMMARY_EXCLUDE_RELATIONSHIP)); + Table table = connection.getTable(TableName.valueOf(HBaseTableMetaData.TABLE_CHAIN_ONE_MINUTE_SUMMARY_EXCLUDE_RELATIONSHIP.TABLE_NAME)); Object[] resultArrays = new Object[puts.size()]; table.batch(puts, resultArrays); for (Object result : resultArrays) { @@ -156,7 +156,7 @@ public class HBaseUtil { } public static void saveChainDetails(List puts) throws IOException, InterruptedException { - Table table = connection.getTable(TableName.valueOf(Constants.TABLE_CHAIN_DETAIL)); + Table table = connection.getTable(TableName.valueOf(HBaseTableMetaData.TABLE_CHAIN_DETAIL.TABLE_NAME)); if (puts != null && puts.size() > 0) { Object[] resultArrays = new Object[puts.size()]; table.batch(puts, resultArrays); diff --git a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/util/TokenGenerator.java b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/util/TokenGenerator.java similarity index 95% rename from skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/util/TokenGenerator.java rename to skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/util/TokenGenerator.java index 0ac0e481e..32185a18a 100644 --- a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/util/TokenGenerator.java +++ b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/categorize2chain/util/TokenGenerator.java @@ -1,4 +1,4 @@ -package com.ai.cloud.skywalking.analysis.util; +package com.ai.cloud.skywalking.analysis.categorize2chain.util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/config/Config.java b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/config/Config.java index bd4e87e72..dbce95808 100644 --- a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/config/Config.java +++ b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/config/Config.java @@ -25,8 +25,4 @@ public class Config { public static class Filter { public static String FILTER_PACKAGE_NAME; } - - public static class ChainNodeSummary { - public static long INTERVAL = 1L; - } } diff --git a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/config/Constants.java b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/config/Constants.java deleted file mode 100644 index a6a101ff4..000000000 --- a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/config/Constants.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.ai.cloud.skywalking.analysis.config; - -public class Constants { - public static final String UNCATEGORIZE_COLUMN_FAMILY = "UNCATEGORIZED_CALL_CHAIN"; - - // HBase 表:用于存放CID,TID的映射关系表 - public static String TABLE_CID_TID_MAPPING = "sw-cid-tid-mapping"; - - //HBase 表:用于存放调用链一分钟的汇总,汇总结果不包含关系汇总 - public static String TABLE_CHAIN_ONE_MINUTE_SUMMARY_EXCLUDE_RELATIONSHIP = "sw-chain-1min-summary-ex-rela"; - - public static String TABLE_CHAIN_DETAIL = "sw-chain-detail"; - - public static String TABLE_CALL_CHAIN = "sw-call-chain"; - - public static String TABLE_CALL_CHAIN_RELATIONSHIP = "sw-chain-relationship"; - - public static String COLUMN_FAMILY_CHAIN_RELATIONSHIP = "chain-relationship"; - - public static String COLUMN_FAMILY_NAME_TRACE_DETAIL = "chain_detail"; - - public static String COLUMN_FAMILY_NAME_CHAIN_SUMMARY = "chain_summary"; - - public static String COLUMN_FAMILY_NAME_TRACE_INFO = "trace_info"; - - public static String COLUMN_FAMILY_NAME_CID = "cid"; -} diff --git a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/config/HBaseTableMetaData.java b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/config/HBaseTableMetaData.java new file mode 100644 index 000000000..d212e352d --- /dev/null +++ b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/config/HBaseTableMetaData.java @@ -0,0 +1,65 @@ +package com.ai.cloud.skywalking.analysis.config; + +public class HBaseTableMetaData { + /** + * 调用链明细表,前端收集程序入库数据 + * + * @author wusheng + * + */ + public final static class TABLE_CALL_CHAIN { + public static final String TABLE_NAME = "sw-call-chain"; + } + + /** + * HBase 表:用于存放CID,TID的映射关系表 + * + * @author wusheng + * + */ + public final static class TABLE_CID_TID_MAPPING { + public static final String TABLE_NAME = "sw-cid-tid-mapping"; + + public static final String COLUMN_FAMILY_NAME = "trace_info"; + + public static final String CID_COLUMN_NAME = "cid"; + } + + /** + * CID明细信息表 + * + * @author wusheng + * + */ + public final static class TABLE_CHAIN_DETAIL { + public static final String TABLE_NAME = "sw-chain-detail"; + + public static final String COLUMN_FAMILY_NAME = "chain_detail"; + } + + /** + * CID间关系表,记录异常CID和正常CID间的归属关系 + * + * @author wusheng + * + */ + public final static class TABLE_CALL_CHAIN_RELATIONSHIP { + public static final String TABLE_NAME = "sw-chain-relationship"; + + public static final String COLUMN_FAMILY_NAME = "chain-relationship"; + + public static final String UNCATEGORIZE_COLUMN_NAME = "UNCATEGORIZED_CALL_CHAIN"; + } + + /** + * 用于存放每个CID在一分钟内的汇总,汇总结果不包含关系汇总 + * + * @author wusheng + * + */ + public final static class TABLE_CHAIN_ONE_MINUTE_SUMMARY_EXCLUDE_RELATIONSHIP{ + public static final String TABLE_NAME = "sw-chain-1min-summary-ex-rela"; + + public static final String COLUMN_FAMILY_NAME = "chain_summary"; + } +} diff --git a/skywalking-analysis/src/test/java/com/ai/cloud/skywalking/analysis/mapper/CallChainMapperTest.java b/skywalking-analysis/src/test/java/com/ai/cloud/skywalking/analysis/mapper/CallChainMapperTest.java index 226452231..06d9421d4 100644 --- a/skywalking-analysis/src/test/java/com/ai/cloud/skywalking/analysis/mapper/CallChainMapperTest.java +++ b/skywalking-analysis/src/test/java/com/ai/cloud/skywalking/analysis/mapper/CallChainMapperTest.java @@ -6,7 +6,7 @@ import com.ai.cloud.skywalking.analysis.categorize2chain.Categorize2ChainReducer import com.ai.cloud.skywalking.analysis.categorize2chain.model.ChainInfo; import com.ai.cloud.skywalking.analysis.config.Config; import com.ai.cloud.skywalking.analysis.config.ConfigInitializer; -import com.ai.cloud.skywalking.analysis.config.Constants; +import com.ai.cloud.skywalking.analysis.config.HBaseTableMetaData; import com.ai.cloud.skywalking.protocol.Span; import org.apache.hadoop.conf.Configuration; @@ -49,7 +49,7 @@ public class CallChainMapperTest { public static List selectByTraceId(String traceId) throws IOException { List entries = new ArrayList(); - Table table = connection.getTable(TableName.valueOf(Constants.TABLE_CALL_CHAIN)); + Table table = connection.getTable(TableName.valueOf(HBaseTableMetaData.TABLE_CALL_CHAIN.TABLE_NAME)); Get g = new Get(Bytes.toBytes(traceId)); Result r = table.get(g); for (Cell cell : r.rawCells()) {