Search in sources :

Example 1 with WEB_UI

use of io.trino.server.security.ResourceSecurity.AccessType.WEB_UI in project trino by trinodb.

the class ClusterStatsResource method getClusterStats.

@ResourceSecurity(WEB_UI)
@GET
@Produces(MediaType.APPLICATION_JSON)
public ClusterStats getClusterStats() {
    long runningQueries = 0;
    long blockedQueries = 0;
    long queuedQueries = 0;
    long activeNodes = nodeManager.getNodes(NodeState.ACTIVE).stream().filter(node -> isIncludeCoordinator || !node.isCoordinator()).count();
    long activeCoordinators = nodeManager.getNodes(NodeState.ACTIVE).stream().filter(InternalNode::isCoordinator).count();
    long totalAvailableProcessors = clusterMemoryManager.getTotalAvailableProcessors();
    long runningDrivers = 0;
    double memoryReservation = 0;
    long totalInputRows = dispatchManager.getStats().getConsumedInputRows().getTotalCount();
    long totalInputBytes = dispatchManager.getStats().getConsumedInputBytes().getTotalCount();
    long totalCpuTimeSecs = dispatchManager.getStats().getConsumedCpuTimeSecs().getTotalCount();
    for (BasicQueryInfo query : dispatchManager.getQueries()) {
        if (query.getState() == QueryState.QUEUED) {
            queuedQueries++;
        } else if (query.getState() == QueryState.RUNNING) {
            if (query.getQueryStats().isFullyBlocked()) {
                blockedQueries++;
            } else {
                runningQueries++;
            }
        }
        if (!query.getState().isDone()) {
            totalInputBytes += query.getQueryStats().getRawInputDataSize().toBytes();
            totalInputRows += query.getQueryStats().getRawInputPositions();
            totalCpuTimeSecs += query.getQueryStats().getTotalCpuTime().getValue(SECONDS);
            memoryReservation += query.getQueryStats().getUserMemoryReservation().toBytes();
            runningDrivers += query.getQueryStats().getRunningDrivers();
        }
    }
    return new ClusterStats(runningQueries, blockedQueries, queuedQueries, activeCoordinators, activeNodes, runningDrivers, totalAvailableProcessors, memoryReservation, totalInputRows, totalInputBytes, totalCpuTimeSecs);
}
Also used : JsonProperty(com.fasterxml.jackson.annotation.JsonProperty) NodeState(io.trino.metadata.NodeState) InternalNodeManager(io.trino.metadata.InternalNodeManager) ResourceSecurity(io.trino.server.security.ResourceSecurity) DispatchManager(io.trino.dispatcher.DispatchManager) Produces(javax.ws.rs.Produces) GET(javax.ws.rs.GET) BasicQueryInfo(io.trino.server.BasicQueryInfo) NodeSchedulerConfig(io.trino.execution.scheduler.NodeSchedulerConfig) Path(javax.ws.rs.Path) QueryState(io.trino.execution.QueryState) Inject(javax.inject.Inject) ClusterMemoryManager(io.trino.memory.ClusterMemoryManager) InternalNode(io.trino.metadata.InternalNode) MediaType(javax.ws.rs.core.MediaType) Objects.requireNonNull(java.util.Objects.requireNonNull) JsonCreator(com.fasterxml.jackson.annotation.JsonCreator) WEB_UI(io.trino.server.security.ResourceSecurity.AccessType.WEB_UI) SECONDS(java.util.concurrent.TimeUnit.SECONDS) BasicQueryInfo(io.trino.server.BasicQueryInfo) Produces(javax.ws.rs.Produces) GET(javax.ws.rs.GET) ResourceSecurity(io.trino.server.security.ResourceSecurity)

Aggregations

JsonCreator (com.fasterxml.jackson.annotation.JsonCreator)1 JsonProperty (com.fasterxml.jackson.annotation.JsonProperty)1 DispatchManager (io.trino.dispatcher.DispatchManager)1 QueryState (io.trino.execution.QueryState)1 NodeSchedulerConfig (io.trino.execution.scheduler.NodeSchedulerConfig)1 ClusterMemoryManager (io.trino.memory.ClusterMemoryManager)1 InternalNode (io.trino.metadata.InternalNode)1 InternalNodeManager (io.trino.metadata.InternalNodeManager)1 NodeState (io.trino.metadata.NodeState)1 BasicQueryInfo (io.trino.server.BasicQueryInfo)1 ResourceSecurity (io.trino.server.security.ResourceSecurity)1 WEB_UI (io.trino.server.security.ResourceSecurity.AccessType.WEB_UI)1 Objects.requireNonNull (java.util.Objects.requireNonNull)1 SECONDS (java.util.concurrent.TimeUnit.SECONDS)1 Inject (javax.inject.Inject)1 GET (javax.ws.rs.GET)1 Path (javax.ws.rs.Path)1 Produces (javax.ws.rs.Produces)1 MediaType (javax.ws.rs.core.MediaType)1