# 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 description of the conditions under which some aspect of your system is # considered to be "unhealthy" and the ways to notify people or services about # this state. For an overview of alert policies, see # [Introduction to Alerting](https://cloud.google.com/monitoring/alerts/). # @!attribute [rw] name # @return [String] # Required if the policy exists. The resource name for this policy. The # syntax is: # # projects/[PROJECT_ID]/alertPolicies/[ALERT_POLICY_ID] # # +[ALERT_POLICY_ID]+ is assigned by Stackdriver Monitoring when the policy # is created. When calling the # {Google::Monitoring::V3::AlertPolicyService::CreateAlertPolicy alertPolicies::create} # method, do not include the +name+ field in the alerting policy passed as # part of the request. # @!attribute [rw] display_name # @return [String] # A short name or phrase used to identify the policy in dashboards, # notifications, and incidents. To avoid confusion, don't use the same # display name for multiple policies in the same project. The name is # limited to 512 Unicode characters. # @!attribute [rw] documentation # @return [Google::Monitoring::V3::AlertPolicy::Documentation] # Documentation that is included with notifications and incidents related to # this policy. Best practice is for the documentation to include information # to help responders understand, mitigate, escalate, and correct the # underlying problems detected by the alerting policy. Notification channels # that have limited capacity might not show this documentation. # @!attribute [rw] user_labels # @return [Hash{String => String}] # User-supplied key/value data to be used for organizing and # identifying the +AlertPolicy+ objects. # # The field can contain up to 64 entries. Each key and value is limited to # 63 Unicode characters or 128 bytes, whichever is smaller. Labels and # values can contain only lowercase letters, numerals, underscores, and # dashes. Keys must begin with a letter. # @!attribute [rw] conditions # @return [Array] # A list of conditions for the policy. The conditions are combined by AND or # OR according to the +combiner+ field. If the combined conditions evaluate # to true, then an incident is created. A policy can have from one to six # conditions. # @!attribute [rw] combiner # @return [Google::Monitoring::V3::AlertPolicy::ConditionCombinerType] # How to combine the results of multiple conditions # to determine if an incident should be opened. # @!attribute [rw] enabled # @return [Google::Protobuf::BoolValue] # Whether or not the policy is enabled. On write, the default interpretation # if unset is that the policy is enabled. On read, clients should not make # any assumption about the state if it has not been populated. The # field should always be populated on List and Get operations, unless # a field projection has been specified that strips it out. # @!attribute [rw] notification_channels # @return [Array] # Identifies the notification channels to which notifications should be sent # when incidents are opened or closed or when new violations occur on # an already opened incident. Each element of this array corresponds to # the +name+ field in each of the # {Google::Monitoring::V3::NotificationChannel +NotificationChannel+} # objects that are returned from the [+ListNotificationChannels+] # [google.monitoring.v3.NotificationChannelService.ListNotificationChannels] # method. The syntax of the entries in this field is: # # projects/[PROJECT_ID]/notificationChannels/[CHANNEL_ID] # @!attribute [rw] creation_record # @return [Google::Monitoring::V3::MutationRecord] # A read-only record of the creation of the alerting policy. If provided # in a call to create or update, this field will be ignored. # @!attribute [rw] mutation_record # @return [Google::Monitoring::V3::MutationRecord] # A read-only record of the most recent change to the alerting policy. If # provided in a call to create or update, this field will be ignored. class AlertPolicy # A content string and a MIME type that describes the content string's # format. # @!attribute [rw] content # @return [String] # The text of the documentation, interpreted according to +mime_type+. # The content may not exceed 8,192 Unicode characters and may not exceed # more than 10,240 bytes when encoded in UTF-8 format, whichever is # smaller. # @!attribute [rw] mime_type # @return [String] # The format of the +content+ field. Presently, only the value # +"text/markdown"+ is supported. See # [Markdown](https://en.wikipedia.org/wiki/Markdown) for more information. class Documentation; end # A condition is a true/false test that determines when an alerting policy # should open an incident. If a condition evaluates to true, it signifies # that something is wrong. # @!attribute [rw] name # @return [String] # Required if the condition exists. The unique resource name for this # condition. Its syntax is: # # projects/[PROJECT_ID]/alertPolicies/[POLICY_ID]/conditions/[CONDITION_ID] # # +[CONDITION_ID]+ is assigned by Stackdriver Monitoring when the # condition is created as part of a new or updated alerting policy. # # When calling the # {Google::Monitoring::V3::AlertPolicyService::CreateAlertPolicy alertPolicies::create} # method, do not include the +name+ field in the conditions of the # requested alerting policy. Stackdriver Monitoring creates the # condition identifiers and includes them in the new policy. # # When calling the # {Google::Monitoring::V3::AlertPolicyService::UpdateAlertPolicy alertPolicies::update} # method to update a policy, including a condition +name+ causes the # existing condition to be updated. Conditions without names are added to # the updated policy. Existing conditions are deleted if they are not # updated. # # Best practice is to preserve +[CONDITION_ID]+ if you make only small # changes, such as those to condition thresholds, durations, or trigger # values. Otherwise, treat the change as a new condition and let the # existing condition be deleted. # @!attribute [rw] display_name # @return [String] # A short name or phrase used to identify the condition in dashboards, # notifications, and incidents. To avoid confusion, don't use the same # display name for multiple conditions in the same policy. # @!attribute [rw] condition_threshold # @return [Google::Monitoring::V3::AlertPolicy::Condition::MetricThreshold] # A condition that compares a time series against a threshold. # @!attribute [rw] condition_absent # @return [Google::Monitoring::V3::AlertPolicy::Condition::MetricAbsence] # A condition that checks that a time series continues to # receive new data points. class Condition # Specifies how many time series must fail a predicate to trigger a # condition. If not specified, then a +{count: 1}+ trigger is used. # @!attribute [rw] count # @return [Integer] # The absolute number of time series that must fail # the predicate for the condition to be triggered. # @!attribute [rw] percent # @return [Float] # The percentage of time series that must fail the # predicate for the condition to be triggered. class Trigger; end # A condition type that compares a collection of time series # against a threshold. # @!attribute [rw] filter # @return [String] # A [filter](https://cloud.google.com/monitoring/api/v3/filters) that # identifies which time series should be compared with the threshold. # # The filter is similar to the one that is specified in the # [+MetricService.ListTimeSeries+ # request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list) (that # call is useful to verify the time series that will be retrieved / # processed) and must specify the metric type and optionally may contain # restrictions on resource type, resource labels, and metric labels. # This field may not exceed 2048 Unicode characters in length. # @!attribute [rw] aggregations # @return [Array] # Specifies the alignment of data points in individual time series as # well as how to combine the retrieved time series together (such as # when aggregating multiple streams on each resource to a single # stream for each resource or when aggregating streams across all # members of a group of resrouces). Multiple aggregations # are applied in the order specified. # # This field is similar to the one in the # [+MetricService.ListTimeSeries+ request](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list). # It is advisable to use the +ListTimeSeries+ method when debugging this field. # @!attribute [rw] denominator_filter # @return [String] # A [filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies a time # series that should be used as the denominator of a ratio that will be # compared with the threshold. If a +denominator_filter+ is specified, # the time series specified by the +filter+ field will be used as the # numerator. # # The filter is similar to the one that is specified in the # [+MetricService.ListTimeSeries+ # request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list) (that # call is useful to verify the time series that will be retrieved / # processed) and must specify the metric type and optionally may contain # restrictions on resource type, resource labels, and metric labels. # This field may not exceed 2048 Unicode characters in length. # @!attribute [rw] denominator_aggregations # @return [Array] # Specifies the alignment of data points in individual time series # selected by +denominatorFilter+ as # well as how to combine the retrieved time series together (such as # when aggregating multiple streams on each resource to a single # stream for each resource or when aggregating streams across all # members of a group of resources). # # When computing ratios, the +aggregations+ and # +denominator_aggregations+ fields must use the same alignment period # and produce time series that have the same periodicity and labels. # # This field is similar to the one in the # [+MetricService.ListTimeSeries+ # request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list). It # is advisable to use the +ListTimeSeries+ method when debugging this # field. # @!attribute [rw] comparison # @return [Google::Monitoring::V3::ComparisonType] # The comparison to apply between the time series (indicated by +filter+ # and +aggregation+) and the threshold (indicated by +threshold_value+). # The comparison is applied on each time series, with the time series # on the left-hand side and the threshold on the right-hand side. # # Only +COMPARISON_LT+ and +COMPARISON_GT+ are supported currently. # @!attribute [rw] threshold_value # @return [Float] # A value against which to compare the time series. # @!attribute [rw] duration # @return [Google::Protobuf::Duration] # The amount of time that a time series must violate the # threshold to be considered failing. Currently, only values # that are a multiple of a minute--e.g., 0, 60, 120, or 300 # seconds--are supported. If an invalid value is given, an # error will be returned. When choosing a duration, it is useful to # keep in mind the frequency of the underlying time series data # (which may also be affected by any alignments specified in the # +aggregations+ field); a good duration is long enough so that a single # outlier does not generate spurious alerts, but short enough that # unhealthy states are detected and alerted on quickly. # @!attribute [rw] trigger # @return [Google::Monitoring::V3::AlertPolicy::Condition::Trigger] # The number/percent of time series for which the comparison must hold # in order for the condition to trigger. If unspecified, then the # condition will trigger if the comparison is true for any of the # time series that have been identified by +filter+ and +aggregations+, # or by the ratio, if +denominator_filter+ and +denominator_aggregations+ # are specified. class MetricThreshold; end # A condition type that checks that monitored resources # are reporting data. The configuration defines a metric and # a set of monitored resources. The predicate is considered in violation # when a time series for the specified metric of a monitored # resource does not include any data in the specified +duration+. # @!attribute [rw] filter # @return [String] # A [filter](https://cloud.google.com/monitoring/api/v3/filters) that # identifies which time series should be compared with the threshold. # # The filter is similar to the one that is specified in the # [+MetricService.ListTimeSeries+ # request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list) (that # call is useful to verify the time series that will be retrieved / # processed) and must specify the metric type and optionally may contain # restrictions on resource type, resource labels, and metric labels. # This field may not exceed 2048 Unicode characters in length. # @!attribute [rw] aggregations # @return [Array] # Specifies the alignment of data points in individual time series as # well as how to combine the retrieved time series together (such as # when aggregating multiple streams on each resource to a single # stream for each resource or when aggregating streams across all # members of a group of resrouces). Multiple aggregations # are applied in the order specified. # # This field is similar to the # one in the [+MetricService.ListTimeSeries+ request](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list). # It is advisable to use the +ListTimeSeries+ method when debugging this field. # @!attribute [rw] duration # @return [Google::Protobuf::Duration] # The amount of time that a time series must fail to report new # data to be considered failing. Currently, only values that # are a multiple of a minute--e.g. 60, 120, or 300 # seconds--are supported. If an invalid value is given, an # error will be returned. The +Duration.nanos+ field is # ignored. # @!attribute [rw] trigger # @return [Google::Monitoring::V3::AlertPolicy::Condition::Trigger] # The number/percent of time series for which the comparison must hold # in order for the condition to trigger. If unspecified, then the # condition will trigger if the comparison is true for any of the # time series that have been identified by +filter+ and +aggregations+. class MetricAbsence; end end # Operators for combining conditions. module ConditionCombinerType # An unspecified combiner. COMBINE_UNSPECIFIED = 0 # Combine conditions using the logical +AND+ operator. An # incident is created only if all conditions are met # simultaneously. This combiner is satisfied if all conditions are # met, even if they are met on completely different resources. AND = 1 # Combine conditions using the logical +OR+ operator. An incident # is created if any of the listed conditions is met. OR = 2 # Combine conditions using logical +AND+ operator, but unlike the regular # +AND+ option, an incident is created only if all conditions are met # simultaneously on at least one resource. AND_WITH_MATCHING_RESOURCE = 3 end end end end end