blob: c3bcf803f70ab0061c5be5176ef3c628076bcd49 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.ignite.internal;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import java.util.UUID;
import org.apache.ignite.cluster.BaselineNode;
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.internal.managers.discovery.GridDiscoveryManager;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.mxbean.ClusterMetricsMXBean;
/**
* Local node metrics MBean.
*/
public class ClusterLocalNodeMetricsMXBeanImpl implements ClusterMetricsMXBean {
/** Grid node. */
private final ClusterNode node;
/** Grid discovery manager. */
private final GridDiscoveryManager discoMgr;
/**
* @param discoMgr Grid discovery manager.
*/
public ClusterLocalNodeMetricsMXBeanImpl(GridDiscoveryManager discoMgr) {
assert discoMgr != null;
this.discoMgr = discoMgr;
this.node = discoMgr.localNode();
}
/** {@inheritDoc} */
@Override public int getTotalCpus() {
return node.metrics().getTotalCpus();
}
/** {@inheritDoc} */
@Override public float getAverageActiveJobs() {
return node.metrics().getAverageActiveJobs();
}
/** {@inheritDoc} */
@Override public float getAverageCancelledJobs() {
return node.metrics().getAverageCancelledJobs();
}
/** {@inheritDoc} */
@Override public double getAverageJobExecuteTime() {
return node.metrics().getAverageJobExecuteTime();
}
/** {@inheritDoc} */
@Override public double getAverageJobWaitTime() {
return node.metrics().getAverageJobWaitTime();
}
/** {@inheritDoc} */
@Override public float getAverageRejectedJobs() {
return node.metrics().getAverageRejectedJobs();
}
/** {@inheritDoc} */
@Override public float getAverageWaitingJobs() {
return node.metrics().getAverageWaitingJobs();
}
/** {@inheritDoc} */
@Override public float getBusyTimePercentage() {
return node.metrics().getBusyTimePercentage() * 100;
}
/** {@inheritDoc} */
@Override public int getCurrentActiveJobs() {
return node.metrics().getCurrentActiveJobs();
}
/** {@inheritDoc} */
@Override public int getCurrentCancelledJobs() {
return node.metrics().getCurrentCancelledJobs();
}
/** {@inheritDoc} */
@Override public long getCurrentIdleTime() {
return node.metrics().getCurrentIdleTime();
}
/** {@inheritDoc} */
@Override public long getCurrentJobExecuteTime() {
return node.metrics().getCurrentJobExecuteTime();
}
/** {@inheritDoc} */
@Override public long getCurrentJobWaitTime() {
return node.metrics().getCurrentJobWaitTime();
}
/** {@inheritDoc} */
@Override public int getCurrentRejectedJobs() {
return node.metrics().getCurrentRejectedJobs();
}
/** {@inheritDoc} */
@Override public int getCurrentWaitingJobs() {
return node.metrics().getCurrentWaitingJobs();
}
/** {@inheritDoc} */
@Override public int getTotalExecutedTasks() {
return node.metrics().getTotalExecutedTasks();
}
/** {@inheritDoc} */
@Override public int getCurrentDaemonThreadCount() {
return node.metrics().getCurrentDaemonThreadCount();
}
/** {@inheritDoc} */
@Override public long getHeapMemoryCommitted() {
return node.metrics().getHeapMemoryCommitted();
}
/** {@inheritDoc} */
@Override public long getHeapMemoryInitialized() {
return node.metrics().getHeapMemoryInitialized();
}
/** {@inheritDoc} */
@Override public long getHeapMemoryMaximum() {
return node.metrics().getHeapMemoryMaximum();
}
/** {@inheritDoc} */
@Override public long getHeapMemoryTotal() {
return node.metrics().getHeapMemoryTotal();
}
/** {@inheritDoc} */
@Override public long getHeapMemoryUsed() {
return node.metrics().getHeapMemoryUsed();
}
/** {@inheritDoc} */
@Override public float getIdleTimePercentage() {
return node.metrics().getIdleTimePercentage() * 100;
}
/** {@inheritDoc} */
@Override public long getLastUpdateTime() {
return node.metrics().getLastUpdateTime();
}
/** {@inheritDoc} */
@Override public int getMaximumActiveJobs() {
return node.metrics().getMaximumActiveJobs();
}
/** {@inheritDoc} */
@Override public int getMaximumCancelledJobs() {
return node.metrics().getMaximumCancelledJobs();
}
/** {@inheritDoc} */
@Override public long getMaximumJobExecuteTime() {
return node.metrics().getMaximumJobExecuteTime();
}
/** {@inheritDoc} */
@Override public long getMaximumJobWaitTime() {
return node.metrics().getMaximumJobWaitTime();
}
/** {@inheritDoc} */
@Override public int getMaximumRejectedJobs() {
return node.metrics().getMaximumRejectedJobs();
}
/** {@inheritDoc} */
@Override public int getMaximumWaitingJobs() {
return node.metrics().getMaximumWaitingJobs();
}
/** {@inheritDoc} */
@Override public long getNonHeapMemoryCommitted() {
return node.metrics().getNonHeapMemoryCommitted();
}
/** {@inheritDoc} */
@Override public long getNonHeapMemoryInitialized() {
return node.metrics().getNonHeapMemoryInitialized();
}
/** {@inheritDoc} */
@Override public long getNonHeapMemoryMaximum() {
return node.metrics().getNonHeapMemoryMaximum();
}
/** {@inheritDoc} */
@Override public long getNonHeapMemoryTotal() {
return node.metrics().getNonHeapMemoryTotal();
}
/** {@inheritDoc} */
@Override public long getNonHeapMemoryUsed() {
return node.metrics().getNonHeapMemoryUsed();
}
/** {@inheritDoc} */
@Override public int getMaximumThreadCount() {
return node.metrics().getMaximumThreadCount();
}
/** {@inheritDoc} */
@Override public long getStartTime() {
return node.metrics().getStartTime();
}
/** {@inheritDoc} */
@Override public long getNodeStartTime() {
return node.metrics().getNodeStartTime();
}
/** {@inheritDoc} */
@Override public double getCurrentCpuLoad() {
return node.metrics().getCurrentCpuLoad() * 100;
}
/** {@inheritDoc} */
@Override public double getAverageCpuLoad() {
return node.metrics().getAverageCpuLoad() * 100;
}
/** {@inheritDoc} */
@Override public double getCurrentGcCpuLoad() {
return node.metrics().getCurrentGcCpuLoad() * 100;
}
/** {@inheritDoc} */
@Override public int getCurrentThreadCount() {
return node.metrics().getCurrentThreadCount();
}
/** {@inheritDoc} */
@Override public long getTotalBusyTime() {
return node.metrics().getTotalBusyTime();
}
/** {@inheritDoc} */
@Override public int getTotalCancelledJobs() {
return node.metrics().getTotalCancelledJobs();
}
/** {@inheritDoc} */
@Override public int getTotalExecutedJobs() {
return node.metrics().getTotalExecutedJobs();
}
/** {@inheritDoc} */
@Override public long getTotalJobsExecutionTime() {
return node.metrics().getTotalJobsExecutionTime();
}
/** {@inheritDoc} */
@Override public long getTotalIdleTime() {
return node.metrics().getTotalIdleTime();
}
/** {@inheritDoc} */
@Override public int getTotalRejectedJobs() {
return node.metrics().getTotalRejectedJobs();
}
/** {@inheritDoc} */
@Override public long getTotalStartedThreadCount() {
return node.metrics().getTotalStartedThreadCount();
}
/** {@inheritDoc} */
@Override public long getUpTime() {
return node.metrics().getUpTime();
}
/** {@inheritDoc} */
@Override public long getLastDataVersion() {
return node.metrics().getLastDataVersion();
}
/** {@inheritDoc} */
@Override public int getSentMessagesCount() {
return node.metrics().getSentMessagesCount();
}
/** {@inheritDoc} */
@Override public long getSentBytesCount() {
return node.metrics().getSentBytesCount();
}
/** {@inheritDoc} */
@Override public int getReceivedMessagesCount() {
return node.metrics().getReceivedMessagesCount();
}
/** {@inheritDoc} */
@Override public long getReceivedBytesCount() {
return node.metrics().getReceivedBytesCount();
}
/** {@inheritDoc} */
@Override public int getOutboundMessagesQueueSize() {
return node.metrics().getOutboundMessagesQueueSize();
}
/** {@inheritDoc} */
@Override public int getTotalNodes() {
return node.metrics().getTotalNodes();
}
/** {@inheritDoc} */
@Override public long getCurrentPmeDuration() {
return node.metrics().getCurrentPmeDuration();
}
/** {@inheritDoc} */
@Override public int getTotalBaselineNodes() {
if (!node.isClient() && !node.isDaemon()) {
List<? extends BaselineNode> baselineNodes = discoMgr.baselineNodes(discoMgr.topologyVersionEx());
if (baselineNodes != null)
for (BaselineNode baselineNode : baselineNodes)
if (baselineNode.consistentId().equals(node.consistentId()))
return 1;
}
return 0;
}
/** {@inheritDoc} */
@Override public int getActiveBaselineNodes() {
return getTotalBaselineNodes();
}
/** {@inheritDoc} */
@Override public int getTotalServerNodes() {
return !node.isClient() ? 1 : 0;
}
/** {@inheritDoc} */
@Override public int getTotalClientNodes() {
return node.isClient() ? 1 : 0;
}
/** {@inheritDoc} */
@Override public long getTopologyVersion() {
return discoMgr.topologyVersion();
}
/** {@inheritDoc} */
@Override public Set<String> attributeNames() {
return new TreeSet<>(node.attributes().keySet());
}
/** {@inheritDoc} */
@Override public Set<String> attributeValues(String attrName) {
Object val = node.attribute(attrName);
return val == null ? Collections.<String>emptySet() : Collections.singleton(val.toString());
}
/** {@inheritDoc} */
@Override public Set<UUID> nodeIdsForAttribute(String attrName, String attrVal, boolean includeSrvs,
boolean includeClients) {
if ((includeClients && node.isClient()) || (includeSrvs && !node.isClient())) {
Object nodeVal = node.attribute(attrName);
if (nodeVal != null && nodeVal.toString().equals(attrVal))
return Collections.singleton(node.id());
}
return Collections.emptySet();
}
/** {@inheritDoc} */
@Override public String toString() {
return S.toString(ClusterLocalNodeMetricsMXBeanImpl.class, this);
}
}