001/*
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements.  See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership.  The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License.  You may obtain a copy of the License at
009 *
010 *     http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018package org.apache.hadoop.hbase.master;
019
020import org.apache.hadoop.hbase.metrics.BaseSource;
021import org.apache.hadoop.hbase.metrics.OperationMetrics;
022import org.apache.yetus.audience.InterfaceAudience;
023
024@InterfaceAudience.Private
025public interface MetricsAssignmentManagerSource extends BaseSource {
026
027  /**
028   * The name of the metrics
029   */
030  String METRICS_NAME = "AssignmentManager";
031
032  /**
033   * The context metrics will be under.
034   */
035  String METRICS_CONTEXT = "master";
036
037  /**
038   * The name of the metrics context that metrics will be under in jmx
039   */
040  String METRICS_JMX_CONTEXT = "Master,sub=" + METRICS_NAME;
041
042  /**
043   * Description
044   */
045  String METRICS_DESCRIPTION = "Metrics about HBase master assignment manager.";
046
047  // RIT metrics
048  String RIT_COUNT_NAME = "ritCount";
049  String RIT_COUNT_OVER_THRESHOLD_NAME = "ritCountOverThreshold";
050  String RIT_OLDEST_AGE_NAME = "ritOldestAge";
051  String RIT_DURATION_NAME = "ritDuration";
052  String DEAD_SERVER_OPEN_REGIONS = "deadServerOpenRegions";
053  String UNKNOWN_SERVER_OPEN_REGIONS = "unknownServerOpenRegions";
054
055  String RIT_COUNT_DESC = "Current number of Regions In Transition (Gauge).";
056  String RIT_COUNT_OVER_THRESHOLD_DESC =
057    "Current number of Regions In Transition over threshold time (Gauge).";
058  String RIT_OLDEST_AGE_DESC =
059    "Timestamp in milliseconds of the oldest Region In Transition (Gauge).";
060  String RIT_DURATION_DESC =
061    "Total durations in milliseconds for all Regions in Transition (Histogram).";
062
063  // HBCK report metrics
064  String ORPHAN_REGIONS_ON_RS = "orphanRegionsOnRS";
065  String ORPHAN_REGIONS_ON_FS = "orphanRegionsOnFS";
066  String INCONSISTENT_REGIONS = "inconsistentRegions";
067
068  String ORPHAN_REGIONS_ON_RS_DESC = "Current number of Orphan Regions on RS (Gauge).";
069  String ORPHAN_REGIONS_ON_FS_DESC = "Current number of Orphan Regions on FS (Gauge).";
070  String INCONSISTENT_REGIONS_DESC = "Current number of Inconsistent Regions (Gauge).";
071
072  // CatalogJanitor Consistency report metrics
073  String HOLES = "holes";
074  String OVERLAPS = "overlaps";
075  String UNKNOWN_SERVER_REGIONS = "unknownServerRegions";
076  String EMPTY_REGION_INFO_REGIONS = "emptyRegionInfoRegions";
077
078  String HOLES_DESC = "Current number of Holes (Gauge).";
079  String OVERLAPS_DESC = "Current number of Overlaps (Gauge).";
080  String UNKNOWN_SERVER_REGIONS_DESC = "Current number of Unknown Server Regions (Gauge).";
081  String EMPTY_REGION_INFO_REGIONS_DESC =
082    "Current number of Regions with Empty Region Info (Gauge).";
083
084  String ASSIGN_METRIC_PREFIX = "assign";
085  String UNASSIGN_METRIC_PREFIX = "unassign";
086  String MOVE_METRIC_PREFIX = "move";
087  String REOPEN_METRIC_PREFIX = "reopen";
088  String OPEN_METRIC_PREFIX = "open";
089  String CLOSE_METRIC_PREFIX = "close";
090  String SPLIT_METRIC_PREFIX = "split";
091  String MERGE_METRIC_PREFIX = "merge";
092
093  String OPERATION_COUNT_NAME = "operationCount";
094
095  /**
096   * Set the number of regions in transition.
097   * @param ritCount count of the regions in transition.
098   */
099  void setRIT(int ritCount);
100
101  /**
102   * Set the count of the number of regions that have been in transition over the threshold time.
103   * @param ritCountOverThreshold number of regions in transition for longer than threshold.
104   */
105  void setRITCountOverThreshold(int ritCountOverThreshold);
106
107  /**
108   * Set the oldest region in transition.
109   * @param age age of the oldest RIT.
110   */
111  void setRITOldestAge(long age);
112
113  void updateRitDuration(long duration);
114
115  void updateDeadServerOpenRegions(int deadRegions);
116
117  void updateUnknownServerOpenRegions(int unknownRegions);
118
119  /**
120   * Set the number of orphan regions on RS.
121   * @param orphanRegionsOnRs count of the orphan regions on RS in HBCK chore report.
122   */
123  void setOrphanRegionsOnRs(int orphanRegionsOnRs);
124
125  /**
126   * Set the number of orphan regions on FS.
127   * @param orphanRegionsOnFs count of the orphan regions on FS in HBCK chore report.
128   */
129  void setOrphanRegionsOnFs(int orphanRegionsOnFs);
130
131  /**
132   * Set the number of inconsistent regions.
133   * @param inconsistentRegions count of the inconsistent regions in HBCK chore report.
134   */
135  void setInconsistentRegions(int inconsistentRegions);
136
137  /**
138   * Set the number of holes.
139   * @param holes count of the holes in CatalogJanitor Consistency report.
140   */
141  void setHoles(int holes);
142
143  /**
144   * Set the number of overlaps.
145   * @param overlaps count of the overlaps in CatalogJanitor Consistency report.
146   */
147  void setOverlaps(int overlaps);
148
149  /**
150   * Set the number of unknown server regions.
151   * @param unknownServerRegions count of the unknown server regions in CatalogJanitor Consistency
152   *                             report.
153   */
154  void setUnknownServerRegions(int unknownServerRegions);
155
156  /**
157   * Set the number of regions with empty region info.
158   * @param emptyRegionInfoRegions count of the regions with empty region info in CatalogJanitor
159   *                               Consistency report.
160   */
161  void setEmptyRegionInfoRegions(int emptyRegionInfoRegions);
162
163  /**
164   * TODO: Remove. This may not be needed now as assign and unassign counts are tracked separately
165   * Increment the count of operations (assign/unassign).
166   */
167  void incrementOperationCounter();
168
169  /** Returns {@link OperationMetrics} containing common metrics for assign region operation */
170  OperationMetrics getAssignMetrics();
171
172  /** Returns {@link OperationMetrics} containing common metrics for unassign region operation */
173  OperationMetrics getUnassignMetrics();
174
175  /** Returns {@link OperationMetrics} containing common metrics for move region operation */
176  OperationMetrics getMoveMetrics();
177
178  /** Returns {@link OperationMetrics} containing common metrics for reopen region operation */
179  OperationMetrics getReopenMetrics();
180
181  /** Returns {@link OperationMetrics} containing common metrics for open region request */
182  OperationMetrics getOpenMetrics();
183
184  /** Returns {@link OperationMetrics} containing common metrics for close region request */
185  OperationMetrics getCloseMetrics();
186
187  /** Returns {@link OperationMetrics} containing common metrics for split operation */
188  OperationMetrics getSplitMetrics();
189
190  /** Returns {@link OperationMetrics} containing common metrics for merge operation */
191  OperationMetrics getMergeMetrics();
192}