mirror of https://github.com/apache/druid.git
adds new coordinator metrics 'segment/unavailable/count' and (#3176)
'segment/underReplicated/count' (#3173)
This commit is contained in:
parent
da660bb592
commit
66d8ad36d7
|
@ -142,6 +142,8 @@ These metrics are for the Druid coordinator and are reset each time the coordina
|
||||||
|`segment/size`|Size in bytes of available segments.|dataSource.|Varies.|
|
|`segment/size`|Size in bytes of available segments.|dataSource.|Varies.|
|
||||||
|`segment/count`|Number of available segments.|dataSource.|< max|
|
|`segment/count`|Number of available segments.|dataSource.|< max|
|
||||||
|`segment/overShadowed/count`|Number of overShadowed segments.||Varies.|
|
|`segment/overShadowed/count`|Number of overShadowed segments.||Varies.|
|
||||||
|
|`segment/unavailable/count`|Number of segments (not including replicas) left to load until segments that should be loaded in the cluster are available for queries.|datasource.|0|
|
||||||
|
|`segment/underReplicated/count`|Number of segments (including replicas) left to load until segments that should be loaded in the cluster are available for queries.|tier, datasource.|0|
|
||||||
|
|
||||||
## General Health
|
## General Health
|
||||||
|
|
||||||
|
|
|
@ -48,6 +48,7 @@ public class DruidMetrics
|
||||||
public final static String TASK_STATUS = "taskStatus";
|
public final static String TASK_STATUS = "taskStatus";
|
||||||
|
|
||||||
public final static String SERVER = "server";
|
public final static String SERVER = "server";
|
||||||
|
public final static String TIER = "tier";
|
||||||
|
|
||||||
public static int findNumComplexAggs(List<AggregatorFactory> aggs)
|
public static int findNumComplexAggs(List<AggregatorFactory> aggs)
|
||||||
{
|
{
|
||||||
|
|
|
@ -799,7 +799,7 @@ public class DruidCoordinator
|
||||||
new DruidCoordinatorCleanupUnneeded(DruidCoordinator.this),
|
new DruidCoordinatorCleanupUnneeded(DruidCoordinator.this),
|
||||||
new DruidCoordinatorCleanupOvershadowed(DruidCoordinator.this),
|
new DruidCoordinatorCleanupOvershadowed(DruidCoordinator.this),
|
||||||
new DruidCoordinatorBalancer(DruidCoordinator.this),
|
new DruidCoordinatorBalancer(DruidCoordinator.this),
|
||||||
new DruidCoordinatorLogger()
|
new DruidCoordinatorLogger(DruidCoordinator.this)
|
||||||
),
|
),
|
||||||
startingLeaderCounter
|
startingLeaderCounter
|
||||||
);
|
);
|
||||||
|
|
|
@ -30,6 +30,7 @@ import io.druid.collections.CountingMap;
|
||||||
import io.druid.query.DruidMetrics;
|
import io.druid.query.DruidMetrics;
|
||||||
import io.druid.server.coordinator.CoordinatorStats;
|
import io.druid.server.coordinator.CoordinatorStats;
|
||||||
import io.druid.server.coordinator.DruidCluster;
|
import io.druid.server.coordinator.DruidCluster;
|
||||||
|
import io.druid.server.coordinator.DruidCoordinator;
|
||||||
import io.druid.server.coordinator.DruidCoordinatorRuntimeParams;
|
import io.druid.server.coordinator.DruidCoordinatorRuntimeParams;
|
||||||
import io.druid.server.coordinator.LoadQueuePeon;
|
import io.druid.server.coordinator.LoadQueuePeon;
|
||||||
import io.druid.server.coordinator.ServerHolder;
|
import io.druid.server.coordinator.ServerHolder;
|
||||||
|
@ -44,6 +45,11 @@ import java.util.concurrent.atomic.AtomicLong;
|
||||||
public class DruidCoordinatorLogger implements DruidCoordinatorHelper
|
public class DruidCoordinatorLogger implements DruidCoordinatorHelper
|
||||||
{
|
{
|
||||||
private static final Logger log = new Logger(DruidCoordinatorLogger.class);
|
private static final Logger log = new Logger(DruidCoordinatorLogger.class);
|
||||||
|
private final DruidCoordinator coordinator;
|
||||||
|
|
||||||
|
public DruidCoordinatorLogger(DruidCoordinator coordinator) {
|
||||||
|
this.coordinator = coordinator;
|
||||||
|
}
|
||||||
|
|
||||||
private <T extends Number> void emitTieredStats(
|
private <T extends Number> void emitTieredStats(
|
||||||
final ServiceEmitter emitter,
|
final ServiceEmitter emitter,
|
||||||
|
@ -57,7 +63,7 @@ public class DruidCoordinatorLogger implements DruidCoordinatorHelper
|
||||||
Number value = entry.getValue();
|
Number value = entry.getValue();
|
||||||
emitter.emit(
|
emitter.emit(
|
||||||
new ServiceMetricEvent.Builder()
|
new ServiceMetricEvent.Builder()
|
||||||
.setDimension("tier", tier)
|
.setDimension(DruidMetrics.TIER, tier)
|
||||||
.build(
|
.build(
|
||||||
metricName, value.doubleValue()
|
metricName, value.doubleValue()
|
||||||
)
|
)
|
||||||
|
@ -227,6 +233,31 @@ public class DruidCoordinatorLogger implements DruidCoordinatorHelper
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
for (Map.Entry<String, AtomicLong> entry : coordinator.getSegmentAvailability().entrySet()) {
|
||||||
|
String datasource = entry.getKey();
|
||||||
|
Long count = entry.getValue().get();
|
||||||
|
emitter.emit(
|
||||||
|
new ServiceMetricEvent.Builder()
|
||||||
|
.setDimension(DruidMetrics.DATASOURCE, datasource).build(
|
||||||
|
"segment/unavailable/count", count
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
for (Map.Entry<String, CountingMap<String>> entry : coordinator.getReplicationStatus().entrySet()) {
|
||||||
|
String tier = entry.getKey();
|
||||||
|
CountingMap<String> datasourceAvailabilities = entry.getValue();
|
||||||
|
for (Map.Entry<String, AtomicLong> datasourceAvailability : datasourceAvailabilities.entrySet()) {
|
||||||
|
String datasource = datasourceAvailability.getKey();
|
||||||
|
Long count = datasourceAvailability.getValue().get();
|
||||||
|
emitter.emit(
|
||||||
|
new ServiceMetricEvent.Builder()
|
||||||
|
.setDimension(DruidMetrics.TIER, tier)
|
||||||
|
.setDimension(DruidMetrics.DATASOURCE, datasource).build(
|
||||||
|
"segment/underReplicated/count", count
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Emit segment metrics
|
// Emit segment metrics
|
||||||
CountingMap<String> segmentSizes = new CountingMap<String>();
|
CountingMap<String> segmentSizes = new CountingMap<String>();
|
||||||
|
@ -258,6 +289,7 @@ public class DruidCoordinatorLogger implements DruidCoordinatorHelper
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return params;
|
return params;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue