| /* |
| * 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.MutableStat; |
| |
| /** |
| * This class tracks metrics for the EntityGroupFSTimelineStore. It tracks |
| * the read and write metrics for timeline server v1.5. It serves as a |
| * complement to {@link TimelineDataManagerMetrics}. |
| */ |
| @Metrics(about="Metrics for EntityGroupFSTimelineStore", context="yarn") |
| public class EntityGroupFSTimelineStoreMetrics { |
| private static final String DEFAULT_VALUE_WITH_SCALE = "TimeMs"; |
| |
| // General read related metrics |
| @Metric("getEntity calls to summary storage") |
| private MutableCounterLong getEntityToSummaryOps; |
| |
| @Metric("getEntity calls to detail storage") |
| private MutableCounterLong getEntityToDetailOps; |
| |
| // Summary data related metrics |
| @Metric(value = "summary log read ops and time", |
| valueName = DEFAULT_VALUE_WITH_SCALE) |
| private MutableStat summaryLogRead; |
| |
| @Metric("entities read into the summary storage") |
| private MutableCounterLong entitiesReadToSummary; |
| |
| // Detail data cache related metrics |
| @Metric("cache storage read that does not require a refresh") |
| private MutableCounterLong noRefreshCacheRead; |
| |
| @Metric("cache storage refresh due to the cached storage is stale") |
| private MutableCounterLong cacheStaleRefreshes; |
| |
| @Metric("cache storage evicts") |
| private MutableCounterLong cacheEvicts; |
| |
| @Metric(value = "cache storage refresh ops and time", |
| valueName = DEFAULT_VALUE_WITH_SCALE) |
| private MutableStat cacheRefresh; |
| |
| // Log scanner and cleaner related metrics |
| @Metric(value = "active log scan ops and time", |
| valueName = DEFAULT_VALUE_WITH_SCALE) |
| private MutableStat activeLogDirScan; |
| |
| @Metric(value = "log cleaner purging ops and time", |
| valueName = DEFAULT_VALUE_WITH_SCALE) |
| private MutableStat logClean; |
| |
| @Metric("log cleaner dirs purged") |
| private MutableCounterLong logsDirsCleaned; |
| |
| private static EntityGroupFSTimelineStoreMetrics instance = null; |
| |
| EntityGroupFSTimelineStoreMetrics() { |
| } |
| |
| public static synchronized EntityGroupFSTimelineStoreMetrics create() { |
| if (instance == null) { |
| MetricsSystem ms = DefaultMetricsSystem.instance(); |
| instance = ms.register(new EntityGroupFSTimelineStoreMetrics()); |
| } |
| return instance; |
| } |
| |
| // Setters |
| // General read related |
| public void incrGetEntityToSummaryOps() { |
| getEntityToSummaryOps.incr(); |
| } |
| |
| public void incrGetEntityToDetailOps() { |
| getEntityToDetailOps.incr(); |
| } |
| |
| // Summary data related |
| public void addSummaryLogReadTime(long msec) { |
| summaryLogRead.add(msec); |
| } |
| |
| public void incrEntitiesReadToSummary(long delta) { |
| entitiesReadToSummary.incr(delta); |
| } |
| |
| // Cache related |
| public void incrNoRefreshCacheRead() { |
| noRefreshCacheRead.incr(); |
| } |
| |
| public void incrCacheStaleRefreshes() { |
| cacheStaleRefreshes.incr(); |
| } |
| |
| public void incrCacheEvicts() { |
| cacheEvicts.incr(); |
| } |
| |
| public void addCacheRefreshTime(long msec) { |
| cacheRefresh.add(msec); |
| } |
| |
| // Log scanner and cleaner related |
| public void addActiveLogDirScanTime(long msec) { |
| activeLogDirScan.add(msec); |
| } |
| |
| public void addLogCleanTime(long msec) { |
| logClean.add(msec); |
| } |
| |
| public void incrLogsDirsCleaned() { |
| logsDirsCleaned.incr(); |
| } |
| |
| // Getters |
| MutableCounterLong getEntitiesReadToSummary() { |
| return entitiesReadToSummary; |
| } |
| |
| MutableCounterLong getLogsDirsCleaned() { |
| return logsDirsCleaned; |
| } |
| |
| MutableCounterLong getGetEntityToSummaryOps() { |
| return getEntityToSummaryOps; |
| } |
| |
| MutableCounterLong getGetEntityToDetailOps() { |
| return getEntityToDetailOps; |
| } |
| |
| MutableStat getCacheRefresh() { |
| return cacheRefresh; |
| } |
| } |
| |