Package com.alibaba.wasp.master

Source Code of com.alibaba.wasp.master.MetricsMasterSourceImpl

/**
* Copyright The Apache Software Foundation
*
* 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 com.alibaba.wasp.master;

import com.alibaba.wasp.master.metrics.MetricsMasterSource;
import com.alibaba.wasp.master.metrics.MetricsMasterWrapper;
import com.alibaba.wasp.metrics.BaseSourceImpl;
import org.apache.hadoop.metrics2.MetricsBuilder;
import org.apache.hadoop.metrics2.MetricsRecordBuilder;
import org.apache.hadoop.metrics2.lib.MetricMutableGaugeLong;

/**
* Implementation of MetricsMasterSource.
*
* Implements BaseSource through BaseSourceImpl, following the pattern
*/
public class MetricsMasterSourceImpl extends BaseSourceImpl implements
    MetricsMasterSource {
  private final MetricsMasterWrapper masterWrapper;
  private MetricMutableGaugeLong clusterRequestsGauge;
  private MetricMutableGaugeLong ritGauge;
  private MetricMutableGaugeLong ritCountOverThresholdGauge;
  private MetricMutableGaugeLong ritOldestAgeGauge;

  public MetricsMasterSourceImpl(MetricsMasterWrapper masterWrapper) {
    this(METRICS_NAME, METRICS_DESCRIPTION, METRICS_CONTEXT,
        METRICS_JMX_CONTEXT, masterWrapper);
  }

  public MetricsMasterSourceImpl(String metricsName, String metricsDescription,
      String metricsContext, String metricsJmxContext,
      MetricsMasterWrapper masterWrapper) {
    super(metricsName, metricsDescription, metricsContext, metricsJmxContext);
    this.masterWrapper = masterWrapper;
  }

  @Override
  public void init() {
    super.init();
    clusterRequestsGauge = metricsRegistry.newGauge(CLUSTER_REQUESTS_NAME,
        "", 0l);
    ritGauge = metricsRegistry.newGauge(RIT_COUNT_NAME, "", 0l);
    ritCountOverThresholdGauge = metricsRegistry.newGauge(
        RIT_COUNT_OVER_THRESHOLD_NAME, "", 0l);
    ritOldestAgeGauge = metricsRegistry.newGauge(RIT_OLDEST_AGE_NAME, "", 0l);
  }

  @Override
  public void incRequests(final int inc) {
    this.clusterRequestsGauge.incr(inc);
  }

  @Override
  public void setEGIT(int egitCount) {
    ritGauge.set(egitCount);
  }

  @Override
  public void setEGITCountOverThreshold(int egitCount) {
    ritCountOverThresholdGauge.set(egitCount);
  }

  @Override
  public void setEGITOldestAge(long egitCount) {
    ritOldestAgeGauge.set(egitCount);
  }

  /**
   * Method to export all the metrics.
   *
   * @param metricsBuilder Builder to accept metrics
   * @param all push all or only changed?
   */
  @Override
  public void getMetrics(MetricsBuilder metricsBuilder, boolean all) {

    MetricsRecordBuilder metricsRecordBuilder = metricsBuilder.addRecord(
        metricsName).setContext(metricsContext);

    // masterWrapper can be null because this function is called inside of init.
    if (masterWrapper != null) {
      metricsRecordBuilder
          .addGauge(MASTER_ACTIVE_TIME_NAME, MASTER_ACTIVE_TIME_DESC,
              masterWrapper.getActiveTime())
          .addGauge(MASTER_START_TIME_NAME, MASTER_START_TIME_DESC,
              masterWrapper.getStartTime())
          .addGauge(AVERAGE_LOAD_NAME, AVERAGE_LOAD_DESC,
              masterWrapper.getAverageLoad())
          .addGauge(NUM_FSERVERS_NAME, NUMBER_OF_FSERVERS_DESC,
              masterWrapper.getFServers())
          .addGauge(NUM_DEAD_FSERVERS_NAME, NUMBER_OF_DEAD_FSERVERS_DESC,
              masterWrapper.getDeadFServers())
          .tag(ZOOKEEPER_QUORUM_NAME, ZOOKEEPER_QUORUM_DESC,
              masterWrapper.getZookeeperQuorum())
          .tag(SERVER_NAME_NAME, SERVER_NAME_DESC,
              masterWrapper.getServerName())
          .tag(CLUSTER_ID_NAME, CLUSTER_ID_DESC, masterWrapper.getClusterId())
          .tag(IS_ACTIVE_MASTER_NAME, IS_ACTIVE_MASTER_DESC,
              String.valueOf(masterWrapper.getIsActiveMaster()));
    }

    metricsRegistry.snapshot(metricsRecordBuilder, all);
  }

}
TOP

Related Classes of com.alibaba.wasp.master.MetricsMasterSourceImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.