Package com.alibaba.wasp.fserver

Source Code of com.alibaba.wasp.fserver.MetricsFServerSourceImpl

/**
* 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.fserver;

import com.alibaba.wasp.fserver.metrics.MetricsFServerSource;
import com.alibaba.wasp.fserver.metrics.MetricsFServerWrapper;
import com.alibaba.wasp.metrics.BaseSourceImpl;
import com.alibaba.wasp.metrics.lib.MetricHistogram;
import org.apache.hadoop.metrics2.MetricsBuilder;
import org.apache.hadoop.metrics2.MetricsRecordBuilder;
import org.apache.hadoop.metrics2.lib.MetricMutableCounterLong;

public class MetricsFServerSourceImpl extends BaseSourceImpl implements
    MetricsFServerSource {

  final MetricsFServerWrapper fsWrap;
  private final MetricHistogram transactionHisto;
  private final MetricMutableCounterLong slowTransaction;
  private final MetricHistogram insertHisto;
  private final MetricMutableCounterLong slowInsert;
  private final MetricHistogram updateHisto;
  private final MetricMutableCounterLong slowUpdate;
  private final MetricHistogram deleteHisto;
  private final MetricMutableCounterLong slowDelete;
  private final MetricHistogram getHisto;
  private final MetricMutableCounterLong slowGet;
  private final MetricHistogram scanHisto;
  private final MetricMutableCounterLong slowScan;
  private final MetricHistogram genPlanHisto;
  private final MetricMutableCounterLong slowGenPlan;
  private final MetricHistogram sqlExecuteHisto;
  private final MetricMutableCounterLong slowSqlExecute;
  private final MetricHistogram countHisto;
  private final MetricMutableCounterLong slowCount;
  private final MetricHistogram sumHisto;
  private final MetricMutableCounterLong slowSum;

  public MetricsFServerSourceImpl(MetricsFServerWrapper fsWrap) {
    this(METRICS_NAME, METRICS_DESCRIPTION, METRICS_CONTEXT,
        METRICS_JMX_CONTEXT, fsWrap);
  }

  public MetricsFServerSourceImpl(String metricsName,
      String metricsDescription, String metricsContext,
      String metricsJmxContext, MetricsFServerWrapper fsWrap) {
    super(metricsName, metricsDescription, metricsContext, metricsJmxContext);
    this.fsWrap = fsWrap;

    transactionHisto = getMetricsRegistry().newHistogram(TRANSACTION_KEY);
    slowTransaction = getMetricsRegistry().newCounter(SLOW_TRANSACTION_KEY,
        SLOW_TRANSACTION_DESC, 0l);
    insertHisto = getMetricsRegistry().newHistogram(INSERT_KEY);
    slowInsert = getMetricsRegistry().newCounter(SLOW_INSERT_KEY,
        SLOW_INSERT_DESC, 0l);
    updateHisto = getMetricsRegistry().newHistogram(UPDATE_KEY);
    slowUpdate = getMetricsRegistry().newCounter(SLOW_UPDATE_KEY,
        SLOW_UPDATE_DESC, 0l);
    deleteHisto = getMetricsRegistry().newHistogram(DELETE_KEY);
    slowDelete = getMetricsRegistry().newCounter(SLOW_DELETE_KEY,
        SLOW_DELETE_DESC, 0l);
    getHisto = getMetricsRegistry().newHistogram(GET_KEY);
    slowGet = getMetricsRegistry().newCounter(SLOW_GET_KEY, SLOW_GET_DESC, 0l);
    scanHisto = getMetricsRegistry().newHistogram(SCAN_KEY);
    slowScan = getMetricsRegistry().newCounter(SLOW_SCAN_KEY, SLOW_SCAN_DESC,
        0l);
    genPlanHisto = getMetricsRegistry().newHistogram(GENPLAN_KEY);
    slowGenPlan = getMetricsRegistry().newCounter(SLOW_GENPLAN_KEY,
        SLOW_GENPLAN_DESC, 0l);
    sqlExecuteHisto = getMetricsRegistry().newHistogram(SQLEXECUTE_KEY);
    slowSqlExecute = getMetricsRegistry().newCounter(SLOW_SQLEXECUTE_KEY,
        SLOW_SQLEXECUTE_DESC, 0l);
    countHisto = getMetricsRegistry().newHistogram(COUNT_KEY);
    slowCount = getMetricsRegistry().newCounter(SLOW_COUNT_KEY, SLOW_COUNT_DESC, 0l);
    sumHisto = getMetricsRegistry().newHistogram(SUM_KEY);
    slowSum = getMetricsRegistry().newCounter(SLOW_SUM_KEY, SLOW_SUM_DESC, 0l);
  }

  @Override
  public void updateInsert(long t) {
    insertHisto.add(t);
  }

  @Override
  public void incrSlowInsert() {
    slowInsert.incr();
  }

  @Override
  public void updateTransaction(long t) {
    transactionHisto.add(t);
  }

  @Override
  public void incrSlowTransaction() {
    slowTransaction.incr();
  }

  @Override
  public void updateUpdate(long t) {
    updateHisto.add(t);
  }

  @Override
  public void incrSlowUpdate() {
    slowUpdate.incr();
  }

  @Override
  public void updateDelete(long t) {
    deleteHisto.add(t);
  }

  @Override
  public void incrSlowDelete() {
    slowDelete.incr();
  }

  @Override
  public void updateGet(long t) {
    getHisto.add(t);
  }

  @Override
  public void incrSlowGet() {
    slowGet.incr();
  }

  @Override
  public void updateScan(long t) {
    scanHisto.add(t);
  }

  @Override
  public void incrSlowScan() {
    slowScan.incr();
  }

  @Override
  public void updateCount(long t) {
    countHisto.add(t);
  }

  @Override
  public void incrSlowCount() {
    slowCount.incr();
  }

  @Override
  public void updateSum(long t) {
    sumHisto.add(t);
  }

  @Override
  public void incrSlowSum() {
    slowSum.incr();
  }

  @Override
  public void updateGenPlan(long t) {
    genPlanHisto.add(t);
  }

  @Override
  public void incrSlowGenPlan() {
    slowGenPlan.incr();
  }

  @Override
  public void updateSqlExecute(long t) {
    sqlExecuteHisto.add(t);
  }

  @Override
  public void incrSlowSqlExecute() {
    slowSqlExecute.incr();
  }

  /**
   * Yes this is a get function that doesn't return anything. Thanks Hadoop for
   * breaking all expectations of java programmers. Instead of returning
   * anything Hadoop metrics expects getMetrics to push the metrics into the
   * metricsBuilder.
   *
   * @param metricsBuilder Builder to accept metrics
   * @param all push all or only changed?
   */
  @Override
  public void getMetrics(MetricsBuilder metricsBuilder, boolean all) {

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

    // fsWrap can be null because this function is called inside of init.
    if (fsWrap != null) {
      mrb.addGauge(ENTITYGROUP_COUNT, ENTITYGROUP_COUNT_DESC,fsWrap.getNumOnlineEntityGroups())
          .addGauge(FS_START_TIME_NAME, FS_START_TIME_DESC, fsWrap.getStartCode())
          .addCounter(READ_REQUEST_COUNT, READ_REQUEST_COUNT_DESC,
              (int) fsWrap.getReadRequestsPerSecond())
          .addCounter(WRITE_REQUEST_COUNT, WRITE_REQUEST_COUNT_DESC,
              (int) fsWrap.getWriteRequestsPerSecond())
          .tag(ZOOKEEPER_QUORUM_NAME, ZOOKEEPER_QUORUM_DESC,
              fsWrap.getZookeeperQuorum())
          .tag(SERVER_NAME_NAME, SERVER_NAME_DESC, fsWrap.getServerName())
          .tag(CLUSTER_ID_NAME, CLUSTER_ID_DESC, fsWrap.getClusterId());
    }

    metricsRegistry.snapshot(mrb, all);
  }
}
TOP

Related Classes of com.alibaba.wasp.fserver.MetricsFServerSourceImpl

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.