001/**
002 * Copyright The Apache Software Foundation
003 * Licensed to the Apache Software Foundation (ASF) under one
004 * or more contributor license agreements.  See the NOTICE file
005 * distributed with this work for additional information
006 * regarding copyright ownership.  The ASF licenses this file
007 * to you under the Apache License, Version 2.0 (the
008 * "License"); you may not use this file except in compliance
009 * with the License.  You may obtain a copy of the License at
010 * http://www.apache.org/licenses/LICENSE-2.0
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018package org.apache.hadoop.hbase;
019
020import edu.umd.cs.findbugs.annotations.Nullable;
021import java.util.List;
022import java.util.Map;
023import java.util.Set;
024import org.apache.hadoop.hbase.replication.ReplicationLoadSink;
025import org.apache.hadoop.hbase.replication.ReplicationLoadSource;
026import org.apache.yetus.audience.InterfaceAudience;
027
028/**
029 * This class is used for exporting current state of load on a RegionServer.
030 */
031@InterfaceAudience.Public
032public interface ServerMetrics {
033
034  ServerName getServerName();
035
036  /**
037   * @return the version number of a regionserver.
038   */
039  default int getVersionNumber() {
040    return 0;
041  }
042
043  /**
044   * @return the string type version of a regionserver.
045   */
046  default String getVersion() {
047    return "0.0.0";
048  }
049
050  /**
051   * @return the number of requests per second.
052   */
053  long getRequestCountPerSecond();
054
055  /**
056   * @return total Number of requests from the start of the region server.
057   */
058  long getRequestCount();
059
060  /**
061   * @return the amount of used heap
062   */
063  Size getUsedHeapSize();
064
065  /**
066   * @return the maximum allowable size of the heap
067   */
068  Size getMaxHeapSize();
069
070  int getInfoServerPort();
071
072  /**
073   * Call directly from client such as hbase shell
074   * @return the list of ReplicationLoadSource
075   */
076  List<ReplicationLoadSource> getReplicationLoadSourceList();
077
078  /**
079   * Call directly from client such as hbase shell
080   * @return a map of ReplicationLoadSource list per peer id
081   */
082  Map<String, List<ReplicationLoadSource>> getReplicationLoadSourceMap();
083
084  /**
085   * Call directly from client such as hbase shell
086   * @return ReplicationLoadSink
087   */
088  @Nullable
089  ReplicationLoadSink getReplicationLoadSink();
090
091  /**
092   * @return region load metrics
093   */
094  Map<byte[], RegionMetrics> getRegionMetrics();
095
096  /**
097   * @return metrics per user
098   */
099  Map<byte[], UserMetrics> getUserMetrics();
100
101  /**
102   * Return the RegionServer-level and Region-level coprocessors
103   * @return string set of loaded RegionServer-level and Region-level coprocessors
104   */
105  Set<String> getCoprocessorNames();
106
107  /**
108   * @return the timestamp (server side) of generating this metrics
109   */
110  long getReportTimestamp();
111
112  /**
113   * @return the last timestamp (server side) of generating this metrics
114   */
115  long getLastReportTimestamp();
116
117}