in src/core-metrics/src/main/java/org/apache/kylin/common/metrics/MetricsGroup.java [225:307]
public static boolean registerProjectMetrics(final String projectName, final String host) {
if (StringUtils.isEmpty(projectName)) {
throw new IllegalArgumentException("registerProjectMetrics, projectName shouldn't be empty.");
}
Map<String, String> tags = getHostTagMap(host, projectName);
// transaction
newCounter(MetricsName.TRANSACTION_RETRY_COUNTER, MetricsCategory.PROJECT, projectName, tags);
newHistogram(MetricsName.TRANSACTION_LATENCY, MetricsCategory.PROJECT, projectName, tags);
// query
newCounter(MetricsName.QUERY, MetricsCategory.PROJECT, projectName, tags);
Counter denominator = getCounter(MetricsName.QUERY, MetricsCategory.PROJECT, projectName, tags);
newCounter(MetricsName.QUERY_LT_1S, MetricsCategory.PROJECT, projectName, tags);
Counter numerator = getCounter(MetricsName.QUERY_LT_1S, MetricsCategory.PROJECT, projectName, tags);
newGauge(MetricsName.QUERY_LT_1S_RATIO, MetricsCategory.PROJECT, projectName, tags,
new QueryRatioGauge(numerator, denominator));
newCounter(MetricsName.QUERY_1S_3S, MetricsCategory.PROJECT, projectName, tags);
numerator = getCounter(MetricsName.QUERY_1S_3S, MetricsCategory.PROJECT, projectName, tags);
newGauge(MetricsName.QUERY_1S_3S_RATIO, MetricsCategory.PROJECT, projectName, tags,
new QueryRatioGauge(numerator, denominator));
newCounter(MetricsName.QUERY_3S_5S, MetricsCategory.PROJECT, projectName, tags);
numerator = getCounter(MetricsName.QUERY_3S_5S, MetricsCategory.PROJECT, projectName, tags);
newGauge(MetricsName.QUERY_3S_5S_RATIO, MetricsCategory.PROJECT, projectName, tags,
new QueryRatioGauge(numerator, denominator));
newCounter(MetricsName.QUERY_5S_10S, MetricsCategory.PROJECT, projectName, tags);
numerator = getCounter(MetricsName.QUERY_5S_10S, MetricsCategory.PROJECT, projectName, tags);
newGauge(MetricsName.QUERY_5S_10S_RATIO, MetricsCategory.PROJECT, projectName, tags,
new QueryRatioGauge(numerator, denominator));
newCounter(MetricsName.QUERY_SLOW, MetricsCategory.PROJECT, projectName, tags);
numerator = getCounter(MetricsName.QUERY_SLOW, MetricsCategory.PROJECT, projectName, tags);
newGauge(MetricsName.QUERY_SLOW_RATIO, MetricsCategory.PROJECT, projectName, tags,
new QueryRatioGauge(numerator, denominator));
newCounter(MetricsName.QUERY_FAILED, MetricsCategory.PROJECT, projectName, tags);
newCounter(MetricsName.QUERY_PUSH_DOWN, MetricsCategory.PROJECT, projectName, tags);
numerator = getCounter(MetricsName.QUERY_PUSH_DOWN, MetricsCategory.PROJECT, projectName, tags);
newGauge(MetricsName.QUERY_PUSH_DOWN_RATIO, MetricsCategory.PROJECT, projectName, tags,
new QueryRatioGauge(numerator, denominator));
newCounter(MetricsName.QUERY_CONSTANTS, MetricsCategory.PROJECT, projectName, tags);
numerator = getCounter(MetricsName.QUERY_CONSTANTS, MetricsCategory.PROJECT, projectName, tags);
newGauge(MetricsName.QUERY_CONSTANTS_RATIO, MetricsCategory.PROJECT, projectName, tags,
new QueryRatioGauge(numerator, denominator));
newCounter(MetricsName.QUERY_CACHE, MetricsCategory.PROJECT, projectName, tags);
numerator = getCounter(MetricsName.QUERY_CACHE, MetricsCategory.PROJECT, projectName, tags);
newGauge(MetricsName.QUERY_CACHE_RATIO, MetricsCategory.PROJECT, projectName, tags,
new QueryRatioGauge(numerator, denominator));
newCounter(MetricsName.QUERY_AGG_INDEX, MetricsCategory.PROJECT, projectName, tags);
numerator = getCounter(MetricsName.QUERY_AGG_INDEX, MetricsCategory.PROJECT, projectName, tags);
newGauge(MetricsName.QUERY_AGG_INDEX_RATIO, MetricsCategory.PROJECT, projectName, tags,
new QueryRatioGauge(numerator, denominator));
newCounter(MetricsName.QUERY_TABLE_INDEX, MetricsCategory.PROJECT, projectName, tags);
numerator = getCounter(MetricsName.QUERY_TABLE_INDEX, MetricsCategory.PROJECT, projectName, tags);
newGauge(MetricsName.QUERY_TABLE_INDEX_RATIO, MetricsCategory.PROJECT, projectName, tags,
new QueryRatioGauge(numerator, denominator));
newCounter(MetricsName.QUERY_TOTAL_DURATION, MetricsCategory.PROJECT, projectName, tags);
newCounter(MetricsName.QUERY_TIMEOUT, MetricsCategory.PROJECT, projectName, tags);
newMeter(MetricsName.QUERY_SLOW_RATE, MetricsCategory.PROJECT, projectName, tags);
newMeter(MetricsName.QUERY_FAILED_RATE, MetricsCategory.PROJECT, projectName, tags);
newMeter(MetricsName.QUERY_PUSH_DOWN_RATE, MetricsCategory.PROJECT, projectName, tags);
newMeter(MetricsName.QUERY_CONSTANTS_RATE, MetricsCategory.PROJECT, projectName, tags);
newMeter(MetricsName.QUERY_TIMEOUT_RATE, MetricsCategory.PROJECT, projectName, tags);
newHistogram(MetricsName.QUERY_LATENCY, MetricsCategory.PROJECT, projectName, tags);
// job
newCounter(MetricsName.JOB, MetricsCategory.PROJECT, projectName, tags);
newCounter(MetricsName.JOB_DURATION, MetricsCategory.PROJECT, projectName, tags);
newCounter(MetricsName.JOB_FINISHED, MetricsCategory.PROJECT, projectName, tags);
newCounter(MetricsName.JOB_STEP_ATTEMPTED, MetricsCategory.PROJECT, projectName, tags);
newCounter(MetricsName.JOB_FAILED_STEP_ATTEMPTED, MetricsCategory.PROJECT, projectName, tags);
newCounter(MetricsName.JOB_RESUMED, MetricsCategory.PROJECT, projectName, tags);
newCounter(MetricsName.JOB_DISCARDED, MetricsCategory.PROJECT, projectName, tags);
newCounter(MetricsName.JOB_ERROR, MetricsCategory.PROJECT, projectName, tags);
newHistogram(MetricsName.JOB_DURATION_HISTOGRAM, MetricsCategory.PROJECT, projectName, tags);
newCounter(MetricsName.JOB_WAIT_DURATION, MetricsCategory.PROJECT, projectName, tags);
// metadata management
newCounter(MetricsName.METADATA_CLEAN, MetricsCategory.PROJECT, projectName, tags);
newCounter(MetricsName.METADATA_BACKUP, MetricsCategory.PROJECT, projectName, tags);
newCounter(MetricsName.METADATA_BACKUP_DURATION, MetricsCategory.PROJECT, projectName, tags);
newCounter(MetricsName.METADATA_BACKUP_FAILED, MetricsCategory.PROJECT, projectName, tags);
newHistogram(MetricsName.QUERY_SCAN_BYTES, MetricsCategory.PROJECT, projectName, tags);
return true;
}