/* * 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.hadoop.yarn.server.timeline; import org.apache.hadoop.metrics2.MetricsSystem; import org.apache.hadoop.metrics2.annotation.Metric; import org.apache.hadoop.metrics2.annotation.Metrics; import org.apache.hadoop.metrics2.lib.DefaultMetricsSystem; import org.apache.hadoop.metrics2.lib.MutableCounterLong; import org.apache.hadoop.metrics2.lib.MutableRate; /** This class tracks metrics for the TimelineDataManager. */ @Metrics(about="Metrics for TimelineDataManager", context="yarn") public class TimelineDataManagerMetrics { @Metric("getEntities calls") MutableCounterLong getEntitiesOps; @Metric("Entities returned via getEntities") MutableCounterLong getEntitiesTotal; @Metric("getEntities processing time") MutableRate getEntitiesTime; @Metric("getEntity calls") MutableCounterLong getEntityOps; @Metric("getEntity processing time") MutableRate getEntityTime; @Metric("getEvents calls") MutableCounterLong getEventsOps; @Metric("Events returned via getEvents") MutableCounterLong getEventsTotal; @Metric("getEvents processing time") MutableRate getEventsTime; @Metric("postEntities calls") MutableCounterLong postEntitiesOps; @Metric("Entities posted via postEntities") MutableCounterLong postEntitiesTotal; @Metric("postEntities processing time") MutableRate postEntitiesTime; @Metric("putDomain calls") MutableCounterLong putDomainOps; @Metric("putDomain processing time") MutableRate putDomainTime; @Metric("getDomain calls") MutableCounterLong getDomainOps; @Metric("getDomain processing time") MutableRate getDomainTime; @Metric("getDomains calls") MutableCounterLong getDomainsOps; @Metric("Domains returned via getDomains") MutableCounterLong getDomainsTotal; @Metric("getDomains processing time") MutableRate getDomainsTime; @Metric("Total calls") public long totalOps() { return getEntitiesOps.value() + getEntityOps.value() + getEventsOps.value() + postEntitiesOps.value() + putDomainOps.value() + getDomainOps.value() + getDomainsOps.value(); } private static TimelineDataManagerMetrics instance = null; TimelineDataManagerMetrics() { } public static synchronized TimelineDataManagerMetrics create() { if (instance == null) { MetricsSystem ms = DefaultMetricsSystem.instance(); instance = ms.register(new TimelineDataManagerMetrics()); } return instance; } public void incrGetEntitiesOps() { getEntitiesOps.incr(); } public void incrGetEntitiesTotal(long delta) { getEntitiesTotal.incr(delta); } public void addGetEntitiesTime(long msec) { getEntitiesTime.add(msec); } public void incrGetEntityOps() { getEntityOps.incr(); } public void addGetEntityTime(long msec) { getEntityTime.add(msec); } public void incrGetEventsOps() { getEventsOps.incr(); } public void incrGetEventsTotal(long delta) { getEventsTotal.incr(delta); } public void addGetEventsTime(long msec) { getEventsTime.add(msec); } public void incrPostEntitiesOps() { postEntitiesOps.incr(); } public void incrPostEntitiesTotal(long delta) { postEntitiesTotal.incr(delta); } public void addPostEntitiesTime(long msec) { postEntitiesTime.add(msec); } public void incrPutDomainOps() { putDomainOps.incr(); } public void addPutDomainTime(long msec) { putDomainTime.add(msec); } public void incrGetDomainOps() { getDomainOps.incr(); } public void addGetDomainTime(long msec) { getDomainTime.add(msec); } public void incrGetDomainsOps() { getDomainsOps.incr(); } public void incrGetDomainsTotal(long delta) { getDomainsTotal.incr(delta); } public void addGetDomainsTime(long msec) { getDomainsTime.add(msec); } }