All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.flink.runtime.metrics.dump.MetricDump Maven / Gradle / Ivy

There is a newer version: 1.13.6
Show newest version
/*
 * 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.flink.runtime.metrics.dump;

import org.apache.flink.util.Preconditions;

/**
 * A container for a dumped metric that contains the scope, name and value(s) of the metric.
 */
public abstract class MetricDump {
	/** Categories to be returned by {@link MetricDump#getCategory()} to avoid instanceof checks. */
	public static final byte METRIC_CATEGORY_COUNTER = 0;
	public static final byte METRIC_CATEGORY_GAUGE = 1;
	public static final byte METRIC_CATEGORY_HISTOGRAM = 2;
	public static final byte METRIC_CATEGORY_METER = 3;

	/** The scope information for the stored metric. */
	public final QueryScopeInfo scopeInfo;
	/** The name of the stored metric. */
	public final String name;

	private MetricDump(QueryScopeInfo scopeInfo, String name) {
		this.scopeInfo = Preconditions.checkNotNull(scopeInfo);
		this.name = Preconditions.checkNotNull(name);
	}

	/**
	 * Returns the category for this MetricDump.
	 *
	 * @return category
	 */
	public abstract byte getCategory();

	@Override
	public String toString() {
		return "MetricDump{" +
			"scopeInfo=" + scopeInfo +
			", name='" + name + '\'' +
			", category='" + getCategory() + '\'' +
			'}';
	}

	/**
	 * Container for the value of a {@link org.apache.flink.metrics.Counter}.
	 */
	public static class CounterDump extends MetricDump {
		public final long count;

		public CounterDump(QueryScopeInfo scopeInfo, String name, long count) {
			super(scopeInfo, name);
			this.count = count;
		}

		@Override
		public byte getCategory() {
			return METRIC_CATEGORY_COUNTER;
		}
	}

	/**
	 * Container for the value of a {@link org.apache.flink.metrics.Gauge} as a string.
	 */
	public static class GaugeDump extends MetricDump {
		public final String value;

		public GaugeDump(QueryScopeInfo scopeInfo, String name, String value) {
			super(scopeInfo, name);
			this.value = Preconditions.checkNotNull(value);
		}

		@Override
		public byte getCategory() {
			return METRIC_CATEGORY_GAUGE;
		}
	}

	/**
	 * Container for the values of a {@link org.apache.flink.metrics.Histogram}.
	 */
	public static class HistogramDump extends MetricDump {
		public final long min;
		public final long max;
		public final double mean;
		public final double median;
		public final double stddev;
		public final double p75;
		public final double p90;
		public final double p95;
		public final double p98;
		public final double p99;
		public final double p999;

		public HistogramDump(QueryScopeInfo scopeInfo, String name,
			long min, long max, double mean, double median, double stddev,
			double p75, double p90, double p95, double p98, double p99, double p999) {

			super(scopeInfo, name);
			this.min = min;
			this.max = max;
			this.mean = mean;
			this.median = median;
			this.stddev = stddev;
			this.p75 = p75;
			this.p90 = p90;
			this.p95 = p95;
			this.p98 = p98;
			this.p99 = p99;
			this.p999 = p999;
		}

		@Override
		public byte getCategory() {
			return METRIC_CATEGORY_HISTOGRAM;
		}
	}

	/**
	 * Container for the rate of a {@link org.apache.flink.metrics.Meter}.
	 */
	public static class MeterDump extends MetricDump {
		public final double rate;

		public MeterDump(QueryScopeInfo scopeInfo, String name, double rate) {
			super(scopeInfo, name);
			this.rate = rate;
		}

		@Override
		public byte getCategory() {
			return METRIC_CATEGORY_METER;
		}
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy