# Copyright 2018 Google LLC
#
# Licensed 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
#
# https://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.
module Google
module Monitoring
module V3
# A single strongly-typed value.
# @!attribute [rw] bool_value
# @return [true, false]
# A Boolean value: `true` or `false`.
# @!attribute [rw] int64_value
# @return [Integer]
# A 64-bit integer. Its range is approximately ±9.2x1018.
# @!attribute [rw] double_value
# @return [Float]
# A 64-bit double-precision floating-point number. Its magnitude
# is approximately ±10±300 and it has 16
# significant digits of precision.
# @!attribute [rw] string_value
# @return [String]
# A variable-length string value.
# @!attribute [rw] distribution_value
# @return [Google::Api::Distribution]
# A distribution value.
class TypedValue; end
# A time interval extending just after a start time through an end time.
# If the start time is the same as the end time, then the interval
# represents a single point in time.
# @!attribute [rw] end_time
# @return [Google::Protobuf::Timestamp]
# Required. The end of the time interval.
# @!attribute [rw] start_time
# @return [Google::Protobuf::Timestamp]
# Optional. The beginning of the time interval. The default value
# for the start time is the end time. The start time must not be
# later than the end time.
class TimeInterval; end
# Describes how to combine multiple time series to provide different views of
# the data. Aggregation consists of an alignment step on individual time
# series (`alignment_period` and `per_series_aligner`) followed by an optional
# reduction step of the data across the aligned time series
# (`cross_series_reducer` and `group_by_fields`). For more details, see
# [Aggregation](https://cloud.google.com/monitoring/api/learn_more#aggregation).
# @!attribute [rw] alignment_period
# @return [Google::Protobuf::Duration]
# The alignment period for per-{Google::Monitoring::V3::TimeSeries time series}
# alignment. If present, `alignmentPeriod` must be at least 60
# seconds. After per-time series alignment, each time series will
# contain data points only on the period boundaries. If
# `perSeriesAligner` is not specified or equals `ALIGN_NONE`, then
# this field is ignored. If `perSeriesAligner` is specified and
# does not equal `ALIGN_NONE`, then this field must be defined;
# otherwise an error is returned.
# @!attribute [rw] per_series_aligner
# @return [Google::Monitoring::V3::Aggregation::Aligner]
# The approach to be used to align individual time series. Not all
# alignment functions may be applied to all time series, depending
# on the metric type and value type of the original time
# series. Alignment may change the metric type or the value type of
# the time series.
#
# Time series data must be aligned in order to perform cross-time
# series reduction. If `crossSeriesReducer` is specified, then
# `perSeriesAligner` must be specified and not equal `ALIGN_NONE`
# and `alignmentPeriod` must be specified; otherwise, an error is
# returned.
# @!attribute [rw] cross_series_reducer
# @return [Google::Monitoring::V3::Aggregation::Reducer]
# The approach to be used to combine time series. Not all reducer
# functions may be applied to all time series, depending on the
# metric type and the value type of the original time
# series. Reduction may change the metric type of value type of the
# time series.
#
# Time series data must be aligned in order to perform cross-time
# series reduction. If `crossSeriesReducer` is specified, then
# `perSeriesAligner` must be specified and not equal `ALIGN_NONE`
# and `alignmentPeriod` must be specified; otherwise, an error is
# returned.
# @!attribute [rw] group_by_fields
# @return [Array]
# The set of fields to preserve when `crossSeriesReducer` is
# specified. The `groupByFields` determine how the time series are
# partitioned into subsets prior to applying the aggregation
# function. Each subset contains time series that have the same
# value for each of the grouping fields. Each individual time
# series is a member of exactly one subset. The
# `crossSeriesReducer` is applied to each subset of time series.
# It is not possible to reduce across different resource types, so
# this field implicitly contains `resource.type`. Fields not
# specified in `groupByFields` are aggregated away. If
# `groupByFields` is not specified and all the time series have
# the same resource type, then the time series are aggregated into
# a single output time series. If `crossSeriesReducer` is not
# defined, this field is ignored.
class Aggregation
# The Aligner describes how to bring the data points in a single
# time series into temporal alignment.
module Aligner
# No alignment. Raw data is returned. Not valid if cross-time
# series reduction is requested. The value type of the result is
# the same as the value type of the input.
ALIGN_NONE = 0
# Align and convert to delta metric type. This alignment is valid
# for cumulative metrics and delta metrics. Aligning an existing
# delta metric to a delta metric requires that the alignment
# period be increased. The value type of the result is the same
# as the value type of the input.
#
# One can think of this aligner as a rate but without time units; that
# is, the output is conceptually (second_point - first_point).
ALIGN_DELTA = 1
# Align and convert to a rate. This alignment is valid for
# cumulative metrics and delta metrics with numeric values. The output is a
# gauge metric with value type
# {Google::Api::MetricDescriptor::ValueType::DOUBLE DOUBLE}.
#
# One can think of this aligner as conceptually providing the slope of
# the line that passes through the value at the start and end of the
# window. In other words, this is conceptually ((y1 - y0)/(t1 - t0)),
# and the output unit is one that has a "/time" dimension.
#
# If, by rate, you are looking for percentage change, see the
# `ALIGN_PERCENT_CHANGE` aligner option.
ALIGN_RATE = 2
# Align by interpolating between adjacent points around the
# period boundary. This alignment is valid for gauge
# metrics with numeric values. The value type of the result is the same
# as the value type of the input.
ALIGN_INTERPOLATE = 3
# Align by shifting the oldest data point before the period
# boundary to the boundary. This alignment is valid for gauge
# metrics. The value type of the result is the same as the
# value type of the input.
ALIGN_NEXT_OLDER = 4
# Align time series via aggregation. The resulting data point in
# the alignment period is the minimum of all data points in the
# period. This alignment is valid for gauge and delta metrics with numeric
# values. The value type of the result is the same as the value
# type of the input.
ALIGN_MIN = 10
# Align time series via aggregation. The resulting data point in
# the alignment period is the maximum of all data points in the
# period. This alignment is valid for gauge and delta metrics with numeric
# values. The value type of the result is the same as the value
# type of the input.
ALIGN_MAX = 11
# Align time series via aggregation. The resulting data point in
# the alignment period is the average or arithmetic mean of all
# data points in the period. This alignment is valid for gauge and delta
# metrics with numeric values. The value type of the output is
# {Google::Api::MetricDescriptor::ValueType::DOUBLE DOUBLE}.
ALIGN_MEAN = 12
# Align time series via aggregation. The resulting data point in
# the alignment period is the count of all data points in the
# period. This alignment is valid for gauge and delta metrics with numeric
# or Boolean values. The value type of the output is
# {Google::Api::MetricDescriptor::ValueType::INT64 INT64}.
ALIGN_COUNT = 13
# Align time series via aggregation. The resulting data point in
# the alignment period is the sum of all data points in the
# period. This alignment is valid for gauge and delta metrics with numeric
# and distribution values. The value type of the output is the
# same as the value type of the input.
ALIGN_SUM = 14
# Align time series via aggregation. The resulting data point in
# the alignment period is the standard deviation of all data
# points in the period. This alignment is valid for gauge and delta metrics
# with numeric values. The value type of the output is
# {Google::Api::MetricDescriptor::ValueType::DOUBLE DOUBLE}.
ALIGN_STDDEV = 15
# Align time series via aggregation. The resulting data point in
# the alignment period is the count of True-valued data points in the
# period. This alignment is valid for gauge metrics with
# Boolean values. The value type of the output is
# {Google::Api::MetricDescriptor::ValueType::INT64 INT64}.
ALIGN_COUNT_TRUE = 16
# Align time series via aggregation. The resulting data point in
# the alignment period is the count of False-valued data points in the
# period. This alignment is valid for gauge metrics with
# Boolean values. The value type of the output is
# {Google::Api::MetricDescriptor::ValueType::INT64 INT64}.
ALIGN_COUNT_FALSE = 24
# Align time series via aggregation. The resulting data point in
# the alignment period is the fraction of True-valued data points in the
# period. This alignment is valid for gauge metrics with Boolean values.
# The output value is in the range [0, 1] and has value type
# {Google::Api::MetricDescriptor::ValueType::DOUBLE DOUBLE}.
ALIGN_FRACTION_TRUE = 17
# Align time series via aggregation. The resulting data point in
# the alignment period is the 99th percentile of all data
# points in the period. This alignment is valid for gauge and delta metrics
# with distribution values. The output is a gauge metric with value type
# {Google::Api::MetricDescriptor::ValueType::DOUBLE DOUBLE}.
ALIGN_PERCENTILE_99 = 18
# Align time series via aggregation. The resulting data point in
# the alignment period is the 95th percentile of all data
# points in the period. This alignment is valid for gauge and delta metrics
# with distribution values. The output is a gauge metric with value type
# {Google::Api::MetricDescriptor::ValueType::DOUBLE DOUBLE}.
ALIGN_PERCENTILE_95 = 19
# Align time series via aggregation. The resulting data point in
# the alignment period is the 50th percentile of all data
# points in the period. This alignment is valid for gauge and delta metrics
# with distribution values. The output is a gauge metric with value type
# {Google::Api::MetricDescriptor::ValueType::DOUBLE DOUBLE}.
ALIGN_PERCENTILE_50 = 20
# Align time series via aggregation. The resulting data point in
# the alignment period is the 5th percentile of all data
# points in the period. This alignment is valid for gauge and delta metrics
# with distribution values. The output is a gauge metric with value type
# {Google::Api::MetricDescriptor::ValueType::DOUBLE DOUBLE}.
ALIGN_PERCENTILE_05 = 21
# Align and convert to a percentage change. This alignment is valid for
# gauge and delta metrics with numeric values. This alignment conceptually
# computes the equivalent of "((current - previous)/previous)*100"
# where previous value is determined based on the alignmentPeriod.
# In the event that previous is 0 the calculated value is infinity with the
# exception that if both (current - previous) and previous are 0 the
# calculated value is 0.
# A 10 minute moving mean is computed at each point of the time window
# prior to the above calculation to smooth the metric and prevent false
# positives from very short lived spikes.
# Only applicable for data that is >= 0. Any values < 0 are treated as
# no data. While delta metrics are accepted by this alignment special care
# should be taken that the values for the metric will always be positive.
# The output is a gauge metric with value type
# {Google::Api::MetricDescriptor::ValueType::DOUBLE DOUBLE}.
ALIGN_PERCENT_CHANGE = 23
end
# A Reducer describes how to aggregate data points from multiple
# time series into a single time series.
module Reducer
# No cross-time series reduction. The output of the aligner is
# returned.
REDUCE_NONE = 0
# Reduce by computing the mean across time series for each
# alignment period. This reducer is valid for delta and
# gauge metrics with numeric or distribution values. The value type of the
# output is {Google::Api::MetricDescriptor::ValueType::DOUBLE DOUBLE}.
REDUCE_MEAN = 1
# Reduce by computing the minimum across time series for each
# alignment period. This reducer is valid for delta and
# gauge metrics with numeric values. The value type of the output
# is the same as the value type of the input.
REDUCE_MIN = 2
# Reduce by computing the maximum across time series for each
# alignment period. This reducer is valid for delta and
# gauge metrics with numeric values. The value type of the output
# is the same as the value type of the input.
REDUCE_MAX = 3
# Reduce by computing the sum across time series for each
# alignment period. This reducer is valid for delta and
# gauge metrics with numeric and distribution values. The value type of
# the output is the same as the value type of the input.
REDUCE_SUM = 4
# Reduce by computing the standard deviation across time series
# for each alignment period. This reducer is valid for delta
# and gauge metrics with numeric or distribution values. The value type of
# the output is {Google::Api::MetricDescriptor::ValueType::DOUBLE DOUBLE}.
REDUCE_STDDEV = 5
# Reduce by computing the count of data points across time series
# for each alignment period. This reducer is valid for delta
# and gauge metrics of numeric, Boolean, distribution, and string value
# type. The value type of the output is
# {Google::Api::MetricDescriptor::ValueType::INT64 INT64}.
REDUCE_COUNT = 6
# Reduce by computing the count of True-valued data points across time
# series for each alignment period. This reducer is valid for delta
# and gauge metrics of Boolean value type. The value type of
# the output is {Google::Api::MetricDescriptor::ValueType::INT64 INT64}.
REDUCE_COUNT_TRUE = 7
# Reduce by computing the count of False-valued data points across time
# series for each alignment period. This reducer is valid for delta
# and gauge metrics of Boolean value type. The value type of
# the output is {Google::Api::MetricDescriptor::ValueType::INT64 INT64}.
REDUCE_COUNT_FALSE = 15
# Reduce by computing the fraction of True-valued data points across time
# series for each alignment period. This reducer is valid for delta
# and gauge metrics of Boolean value type. The output value is in the
# range [0, 1] and has value type
# {Google::Api::MetricDescriptor::ValueType::DOUBLE DOUBLE}.
REDUCE_FRACTION_TRUE = 8
# Reduce by computing 99th percentile of data points across time series
# for each alignment period. This reducer is valid for gauge and delta
# metrics of numeric and distribution type. The value of the output is
# {Google::Api::MetricDescriptor::ValueType::DOUBLE DOUBLE}
REDUCE_PERCENTILE_99 = 9
# Reduce by computing 95th percentile of data points across time series
# for each alignment period. This reducer is valid for gauge and delta
# metrics of numeric and distribution type. The value of the output is
# {Google::Api::MetricDescriptor::ValueType::DOUBLE DOUBLE}
REDUCE_PERCENTILE_95 = 10
# Reduce by computing 50th percentile of data points across time series
# for each alignment period. This reducer is valid for gauge and delta
# metrics of numeric and distribution type. The value of the output is
# {Google::Api::MetricDescriptor::ValueType::DOUBLE DOUBLE}
REDUCE_PERCENTILE_50 = 11
# Reduce by computing 5th percentile of data points across time series
# for each alignment period. This reducer is valid for gauge and delta
# metrics of numeric and distribution type. The value of the output is
# {Google::Api::MetricDescriptor::ValueType::DOUBLE DOUBLE}
REDUCE_PERCENTILE_05 = 12
end
end
# Specifies an ordering relationship on two arguments, here called left and
# right.
module ComparisonType
# No ordering relationship is specified.
COMPARISON_UNSPECIFIED = 0
# The left argument is greater than the right argument.
COMPARISON_GT = 1
# The left argument is greater than or equal to the right argument.
COMPARISON_GE = 2
# The left argument is less than the right argument.
COMPARISON_LT = 3
# The left argument is less than or equal to the right argument.
COMPARISON_LE = 4
# The left argument is equal to the right argument.
COMPARISON_EQ = 5
# The left argument is not equal to the right argument.
COMPARISON_NE = 6
end
# The tier of service for a Stackdriver account. Please see the
# [service tiers documentation](https://cloud.google.com/monitoring/accounts/tiers)
# for more details.
module ServiceTier
# An invalid sentinel value, used to indicate that a tier has not
# been provided explicitly.
SERVICE_TIER_UNSPECIFIED = 0
# The Stackdriver Basic tier, a free tier of service that provides basic
# features, a moderate allotment of logs, and access to built-in metrics.
# A number of features are not available in this tier. For more details,
# see [the service tiers documentation](https://cloud.google.com/monitoring/accounts/tiers).
SERVICE_TIER_BASIC = 1
# The Stackdriver Premium tier, a higher, more expensive tier of service
# that provides access to all Stackdriver features, lets you use Stackdriver
# with AWS accounts, and has a larger allotments for logs and metrics. For
# more details, see [the service tiers documentation](https://cloud.google.com/monitoring/accounts/tiers).
SERVICE_TIER_PREMIUM = 2
end
end
end
end