# Copyright 2015 Google Inc. # # 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 # # 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. require 'date' require 'google/apis/core/base_service' require 'google/apis/core/json_representation' require 'google/apis/core/hashable' require 'google/apis/errors' module Google module Apis module MonitoringV3 # Describes how to combine multiple time series to provide a different view of # the data. Aggregation of time series is done in two steps. First, each time # series in the set is aligned to the same time interval boundaries, then the # set of time series is optionally reduced in number.Alignment consists of # applying the per_series_aligner operation to each time series after its data # has been divided into regular alignment_period time intervals. This process # takes all of the data points in an alignment period, applies a mathematical # transformation such as averaging, minimum, maximum, delta, etc., and converts # them into a single data point per period.Reduction is when the aligned and # transformed time series can optionally be combined, reducing the number of # time series through similar mathematical transformations. Reduction involves # applying a cross_series_reducer to all the time series, optionally sorting the # time series into subsets with group_by_fields, and applying the reducer to # each subset.The raw time series data can contain a huge amount of information # from multiple sources. Alignment and reduction transforms this mass of data # into a more manageable and representative collection of data, for example "the # 95% latency across the average of all tasks in a cluster". This representative # data can be more easily graphed and comprehended, and the individual time # series data is still available for later drilldown. For more details, see # Filtering and aggregation (https://cloud.google.com/monitoring/api/v3/ # aggregation). class Aggregation include Google::Apis::Core::Hashable # The alignment_period specifies a time interval, in seconds, that is used to # divide the data in all the time series into consistent blocks of time. This # will be done before the per-series aligner can be applied to the data.The # value must be at least 60 seconds. If a per-series aligner other than # ALIGN_NONE is specified, this field is required or an error is returned. If no # per-series aligner is specified, or the aligner ALIGN_NONE is specified, then # this field is ignored. # Corresponds to the JSON property `alignmentPeriod` # @return [String] attr_accessor :alignment_period # The reduction operation to be used to combine time series into a single time # series, where the value of each data point in the resulting series is a # function of all the already aligned values in the input time series.Not all # reducer operations can be applied to all time series. The valid choices depend # on the metric_kind and the value_type of the original time series. Reduction # can yield a time series with a different metric_kind or value_type than the # input time series.Time series data must first be aligned (see # per_series_aligner) in order to perform cross-time series reduction. If # cross_series_reducer is specified, then per_series_aligner must be specified, # and must not be ALIGN_NONE. An alignment_period must also be specified; # otherwise, an error is returned. # Corresponds to the JSON property `crossSeriesReducer` # @return [String] attr_accessor :cross_series_reducer # The set of fields to preserve when cross_series_reducer is specified. The # group_by_fields determine how the time series are partitioned into subsets # prior to applying the aggregation operation. 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 cross_series_reducer 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 group_by_fields are aggregated away. If group_by_fields 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 # cross_series_reducer is not defined, this field is ignored. # Corresponds to the JSON property `groupByFields` # @return [Array] attr_accessor :group_by_fields # An Aligner describes how to bring the data points in a single time series into # temporal alignment. Except for ALIGN_NONE, all alignments cause all the data # points in an alignment_period to be mathematically grouped together, resulting # in a single data point for each alignment_period with end timestamp at the end # of the period.Not all alignment operations may be applied to all time series. # The valid choices depend on the metric_kind and value_type of the original # time series. Alignment can change the metric_kind or the value_type of the # time series.Time series data must be aligned in order to perform cross-time # series reduction. If cross_series_reducer is specified, then # per_series_aligner must be specified and not equal to ALIGN_NONE and # alignment_period must be specified; otherwise, an error is returned. # Corresponds to the JSON property `perSeriesAligner` # @return [String] attr_accessor :per_series_aligner def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @alignment_period = args[:alignment_period] if args.key?(:alignment_period) @cross_series_reducer = args[:cross_series_reducer] if args.key?(:cross_series_reducer) @group_by_fields = args[:group_by_fields] if args.key?(:group_by_fields) @per_series_aligner = args[:per_series_aligner] if args.key?(:per_series_aligner) end end # 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/). class AlertPolicy include Google::Apis::Core::Hashable # How to combine the results of multiple conditions to determine if an incident # should be opened. If condition_time_series_query_language is present, this # must be COMBINE_UNSPECIFIED. # Corresponds to the JSON property `combiner` # @return [String] attr_accessor :combiner # 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. If # condition_time_series_query_language is present, it must be the only condition. # Corresponds to the JSON property `conditions` # @return [Array] attr_accessor :conditions # Describes a change made to a configuration. # Corresponds to the JSON property `creationRecord` # @return [Google::Apis::MonitoringV3::MutationRecord] attr_accessor :creation_record # 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. # Corresponds to the JSON property `displayName` # @return [String] attr_accessor :display_name # A content string and a MIME type that describes the content string's format. # Corresponds to the JSON property `documentation` # @return [Google::Apis::MonitoringV3::Documentation] attr_accessor :documentation # 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. # Corresponds to the JSON property `enabled` # @return [Boolean] attr_accessor :enabled alias_method :enabled?, :enabled # Describes a change made to a configuration. # Corresponds to the JSON property `mutationRecord` # @return [Google::Apis::MonitoringV3::MutationRecord] attr_accessor :mutation_record # Required if the policy exists. The resource name for this policy. The format # is: # projects/[PROJECT_ID_OR_NUMBER]/alertPolicies/[ALERT_POLICY_ID] # [ALERT_POLICY_ID] is assigned by Stackdriver Monitoring when the policy is # created. When calling the alertPolicies.create method, do not include the name # field in the alerting policy passed as part of the request. # Corresponds to the JSON property `name` # @return [String] attr_accessor :name # 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 NotificationChannel objects that are returned from the # ListNotificationChannels method. The format of the entries in this field is: # projects/[PROJECT_ID_OR_NUMBER]/notificationChannels/[CHANNEL_ID] # Corresponds to the JSON property `notificationChannels` # @return [Array] attr_accessor :notification_channels # 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. # Corresponds to the JSON property `userLabels` # @return [Hash] attr_accessor :user_labels # The Status type defines a logical error model that is suitable for different # programming environments, including REST APIs and RPC APIs. It is used by gRPC # (https://github.com/grpc). Each Status message contains three pieces of data: # error code, error message, and error details.You can find out more about this # error model and how to work with it in the API Design Guide (https://cloud. # google.com/apis/design/errors). # Corresponds to the JSON property `validity` # @return [Google::Apis::MonitoringV3::Status] attr_accessor :validity def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @combiner = args[:combiner] if args.key?(:combiner) @conditions = args[:conditions] if args.key?(:conditions) @creation_record = args[:creation_record] if args.key?(:creation_record) @display_name = args[:display_name] if args.key?(:display_name) @documentation = args[:documentation] if args.key?(:documentation) @enabled = args[:enabled] if args.key?(:enabled) @mutation_record = args[:mutation_record] if args.key?(:mutation_record) @name = args[:name] if args.key?(:name) @notification_channels = args[:notification_channels] if args.key?(:notification_channels) @user_labels = args[:user_labels] if args.key?(:user_labels) @validity = args[:validity] if args.key?(:validity) end end # App Engine service. Learn more at https://cloud.google.com/appengine. class AppEngine include Google::Apis::Core::Hashable # The ID of the App Engine module underlying this service. Corresponds to the # module_id resource label in the gae_app monitored resource: https://cloud. # google.com/monitoring/api/resources#tag_gae_app # Corresponds to the JSON property `moduleId` # @return [String] attr_accessor :module_id def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @module_id = args[:module_id] if args.key?(:module_id) end end # Future parameters for the availability SLI. class AvailabilityCriteria include Google::Apis::Core::Hashable def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) end end # The authentication parameters to provide to the specified resource or URL that # requires a username and password. Currently, only Basic HTTP authentication ( # https://tools.ietf.org/html/rfc7617) is supported in Uptime checks. class BasicAuthentication include Google::Apis::Core::Hashable # The password to use when authenticating with the HTTP server. # Corresponds to the JSON property `password` # @return [String] attr_accessor :password # The username to use when authenticating with the HTTP server. # Corresponds to the JSON property `username` # @return [String] attr_accessor :username def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @password = args[:password] if args.key?(:password) @username = args[:username] if args.key?(:username) end end # An SLI measuring performance on a well-known service type. Performance will be # computed on the basis of pre-defined metrics. The type of the service_resource # determines the metrics to use and the service_resource.labels and # metric_labels are used to construct a monitoring filter to filter that metric # down to just the data relevant to this service. class BasicSli include Google::Apis::Core::Hashable # Future parameters for the availability SLI. # Corresponds to the JSON property `availability` # @return [Google::Apis::MonitoringV3::AvailabilityCriteria] attr_accessor :availability # Parameters for a latency threshold SLI. # Corresponds to the JSON property `latency` # @return [Google::Apis::MonitoringV3::LatencyCriteria] attr_accessor :latency # OPTIONAL: The set of locations to which this SLI is relevant. Telemetry from # other locations will not be used to calculate performance for this SLI. If # omitted, this SLI applies to all locations in which the Service has activity. # For service types that don't support breaking down by location, setting this # field will result in an error. # Corresponds to the JSON property `location` # @return [Array] attr_accessor :location # OPTIONAL: The set of RPCs to which this SLI is relevant. Telemetry from other # methods will not be used to calculate performance for this SLI. If omitted, # this SLI applies to all the Service's methods. For service types that don't # support breaking down by method, setting this field will result in an error. # Corresponds to the JSON property `method` # @return [Array] attr_accessor :method_prop # OPTIONAL: The set of API versions to which this SLI is relevant. Telemetry # from other API versions will not be used to calculate performance for this SLI. # If omitted, this SLI applies to all API versions. For service types that don' # t support breaking down by version, setting this field will result in an error. # Corresponds to the JSON property `version` # @return [Array] attr_accessor :version def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @availability = args[:availability] if args.key?(:availability) @latency = args[:latency] if args.key?(:latency) @location = args[:location] if args.key?(:location) @method_prop = args[:method_prop] if args.key?(:method_prop) @version = args[:version] if args.key?(:version) end end # BucketOptions describes the bucket boundaries used to create a histogram for # the distribution. The buckets can be in a linear sequence, an exponential # sequence, or each bucket can be specified explicitly. BucketOptions does not # include the number of values in each bucket.A bucket has an inclusive lower # bound and exclusive upper bound for the values that are counted for that # bucket. The upper bound of a bucket must be strictly greater than the lower # bound. The sequence of N buckets for a distribution consists of an underflow # bucket (number 0), zero or more finite buckets (number 1 through N - 2) and an # overflow bucket (number N - 1). The buckets are contiguous: the lower bound of # bucket i (i > 0) is the same as the upper bound of bucket i - 1. The buckets # span the whole range of finite values: lower bound of the underflow bucket is - # infinity and the upper bound of the overflow bucket is +infinity. The finite # buckets are so-called because both bounds are finite. class BucketOptions include Google::Apis::Core::Hashable # Specifies a set of buckets with arbitrary widths.There are size(bounds) + 1 (= # N) buckets. Bucket i has the following boundaries:Upper bound (0 <= i < N-1): # boundsi Lower bound (1 <= i < N); boundsi - 1The bounds field must contain at # least one element. If bounds has only one element, then there are no finite # buckets, and that single element is the common boundary of the overflow and # underflow buckets. # Corresponds to the JSON property `explicitBuckets` # @return [Google::Apis::MonitoringV3::Explicit] attr_accessor :explicit_buckets # Specifies an exponential sequence of buckets that have a width that is # proportional to the value of the lower bound. Each bucket represents a # constant relative uncertainty on a specific value in the bucket.There are # num_finite_buckets + 2 (= N) buckets. Bucket i has the following boundaries: # Upper bound (0 <= i < N-1): scale * (growth_factor ^ i). Lower bound (1 <= i < # N): scale * (growth_factor ^ (i - 1)). # Corresponds to the JSON property `exponentialBuckets` # @return [Google::Apis::MonitoringV3::Exponential] attr_accessor :exponential_buckets # Specifies a linear sequence of buckets that all have the same width (except # overflow and underflow). Each bucket represents a constant absolute # uncertainty on the specific value in the bucket.There are num_finite_buckets + # 2 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 <= i < N- # 1): offset + (width * i). Lower bound (1 <= i < N): offset + (width * (i - 1)) # . # Corresponds to the JSON property `linearBuckets` # @return [Google::Apis::MonitoringV3::Linear] attr_accessor :linear_buckets def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @explicit_buckets = args[:explicit_buckets] if args.key?(:explicit_buckets) @exponential_buckets = args[:exponential_buckets] if args.key?(:exponential_buckets) @linear_buckets = args[:linear_buckets] if args.key?(:linear_buckets) end end # Cloud Endpoints service. Learn more at https://cloud.google.com/endpoints. class CloudEndpoints include Google::Apis::Core::Hashable # The name of the Cloud Endpoints service underlying this service. Corresponds # to the service resource label in the api monitored resource: https://cloud. # google.com/monitoring/api/resources#tag_api # Corresponds to the JSON property `service` # @return [String] attr_accessor :service def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @service = args[:service] if args.key?(:service) end end # Istio service scoped to a single Kubernetes cluster. Learn more at http:// # istio.io. class ClusterIstio include Google::Apis::Core::Hashable # The name of the Kubernetes cluster in which this Istio service is defined. # Corresponds to the cluster_name resource label in k8s_cluster resources. # Corresponds to the JSON property `clusterName` # @return [String] attr_accessor :cluster_name # The location of the Kubernetes cluster in which this Istio service is defined. # Corresponds to the location resource label in k8s_cluster resources. # Corresponds to the JSON property `location` # @return [String] attr_accessor :location # The name of the Istio service underlying this service. Corresponds to the # destination_service_name metric label in Istio metrics. # Corresponds to the JSON property `serviceName` # @return [String] attr_accessor :service_name # The namespace of the Istio service underlying this service. Corresponds to the # destination_service_namespace metric label in Istio metrics. # Corresponds to the JSON property `serviceNamespace` # @return [String] attr_accessor :service_namespace def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @cluster_name = args[:cluster_name] if args.key?(:cluster_name) @location = args[:location] if args.key?(:location) @service_name = args[:service_name] if args.key?(:service_name) @service_namespace = args[:service_namespace] if args.key?(:service_namespace) end end # A collection of data points sent from a collectd-based plugin. See the # collectd documentation for more information. class CollectdPayload include Google::Apis::Core::Hashable # The end time of the interval. # Corresponds to the JSON property `endTime` # @return [String] attr_accessor :end_time # The measurement metadata. Example: "process_id" -> 12345 # Corresponds to the JSON property `metadata` # @return [Hash] attr_accessor :metadata # The name of the plugin. Example: "disk". # Corresponds to the JSON property `plugin` # @return [String] attr_accessor :plugin # The instance name of the plugin Example: "hdcl". # Corresponds to the JSON property `pluginInstance` # @return [String] attr_accessor :plugin_instance # The start time of the interval. # Corresponds to the JSON property `startTime` # @return [String] attr_accessor :start_time # The measurement type. Example: "memory". # Corresponds to the JSON property `type` # @return [String] attr_accessor :type # The measurement type instance. Example: "used". # Corresponds to the JSON property `typeInstance` # @return [String] attr_accessor :type_instance # The measured values during this time interval. Each value must have a # different dataSourceName. # Corresponds to the JSON property `values` # @return [Array] attr_accessor :values def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @end_time = args[:end_time] if args.key?(:end_time) @metadata = args[:metadata] if args.key?(:metadata) @plugin = args[:plugin] if args.key?(:plugin) @plugin_instance = args[:plugin_instance] if args.key?(:plugin_instance) @start_time = args[:start_time] if args.key?(:start_time) @type = args[:type] if args.key?(:type) @type_instance = args[:type_instance] if args.key?(:type_instance) @values = args[:values] if args.key?(:values) end end # Describes the error status for payloads that were not written. class CollectdPayloadError include Google::Apis::Core::Hashable # The Status type defines a logical error model that is suitable for different # programming environments, including REST APIs and RPC APIs. It is used by gRPC # (https://github.com/grpc). Each Status message contains three pieces of data: # error code, error message, and error details.You can find out more about this # error model and how to work with it in the API Design Guide (https://cloud. # google.com/apis/design/errors). # Corresponds to the JSON property `error` # @return [Google::Apis::MonitoringV3::Status] attr_accessor :error # The zero-based index in CreateCollectdTimeSeriesRequest.collectd_payloads. # Corresponds to the JSON property `index` # @return [Fixnum] attr_accessor :index # Records the error status for values that were not written due to an error. # Failed payloads for which nothing is written will not include partial value # errors. # Corresponds to the JSON property `valueErrors` # @return [Array] attr_accessor :value_errors def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @error = args[:error] if args.key?(:error) @index = args[:index] if args.key?(:index) @value_errors = args[:value_errors] if args.key?(:value_errors) end end # A single data point from a collectd-based plugin. class CollectdValue include Google::Apis::Core::Hashable # The data source for the collectd value. For example there are two data sources # for network measurements: "rx" and "tx". # Corresponds to the JSON property `dataSourceName` # @return [String] attr_accessor :data_source_name # The type of measurement. # Corresponds to the JSON property `dataSourceType` # @return [String] attr_accessor :data_source_type # A single strongly-typed value. # Corresponds to the JSON property `value` # @return [Google::Apis::MonitoringV3::TypedValue] attr_accessor :value def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @data_source_name = args[:data_source_name] if args.key?(:data_source_name) @data_source_type = args[:data_source_type] if args.key?(:data_source_type) @value = args[:value] if args.key?(:value) end end # Describes the error status for values that were not written. class CollectdValueError include Google::Apis::Core::Hashable # The Status type defines a logical error model that is suitable for different # programming environments, including REST APIs and RPC APIs. It is used by gRPC # (https://github.com/grpc). Each Status message contains three pieces of data: # error code, error message, and error details.You can find out more about this # error model and how to work with it in the API Design Guide (https://cloud. # google.com/apis/design/errors). # Corresponds to the JSON property `error` # @return [Google::Apis::MonitoringV3::Status] attr_accessor :error # The zero-based index in CollectdPayload.values within the parent # CreateCollectdTimeSeriesRequest.collectd_payloads. # Corresponds to the JSON property `index` # @return [Fixnum] attr_accessor :index def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @error = args[:error] if args.key?(:error) @index = args[:index] if args.key?(:index) end 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. class Condition include Google::Apis::Core::Hashable # 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. # Corresponds to the JSON property `conditionAbsent` # @return [Google::Apis::MonitoringV3::MetricAbsence] attr_accessor :condition_absent # A condition type that compares a collection of time series against a threshold. # Corresponds to the JSON property `conditionThreshold` # @return [Google::Apis::MonitoringV3::MetricThreshold] attr_accessor :condition_threshold # 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. # Corresponds to the JSON property `displayName` # @return [String] attr_accessor :display_name # Required if the condition exists. The unique resource name for this condition. # Its format is: # projects/[PROJECT_ID_OR_NUMBER]/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 # 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 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. # Corresponds to the JSON property `name` # @return [String] attr_accessor :name def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @condition_absent = args[:condition_absent] if args.key?(:condition_absent) @condition_threshold = args[:condition_threshold] if args.key?(:condition_threshold) @display_name = args[:display_name] if args.key?(:display_name) @name = args[:name] if args.key?(:name) end end # Optional. Used to perform content matching. This allows matching based on # substrings and regular expressions, together with their negations. Only the # first 4 MB of an HTTP or HTTPS check's response (and the first 1 MB # of a TCP check's response) are examined for purposes of content matching. class ContentMatcher include Google::Apis::Core::Hashable # String or regex content to match. Maximum 1024 bytes. An empty content string # indicates no content matching is to be performed. # Corresponds to the JSON property `content` # @return [String] attr_accessor :content # The type of content matcher that will be applied to the server output, # compared to the content string when the check is run. # Corresponds to the JSON property `matcher` # @return [String] attr_accessor :matcher def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @content = args[:content] if args.key?(:content) @matcher = args[:matcher] if args.key?(:matcher) end end # The CreateCollectdTimeSeries request. class CreateCollectdTimeSeriesRequest include Google::Apis::Core::Hashable # The collectd payloads representing the time series data. You must not include # more than a single point for each time series, so no two payloads can have the # same values for all of the fields plugin, plugin_instance, type, and # type_instance. # Corresponds to the JSON property `collectdPayloads` # @return [Array] attr_accessor :collectd_payloads # The version of collectd that collected the data. Example: "5.3.0-192.el6". # Corresponds to the JSON property `collectdVersion` # @return [String] attr_accessor :collectd_version # An object representing a resource that can be used for monitoring, logging, # billing, or other purposes. Examples include virtual machine instances, # databases, and storage devices such as disks. The type field identifies a # MonitoredResourceDescriptor object that describes the resource's schema. # Information in the labels field identifies the actual resource and its # attributes according to the schema. For example, a particular Compute Engine # VM instance could be represented by the following object, because the # MonitoredResourceDescriptor for "gce_instance" has labels "instance_id" and " # zone": # ` "type": "gce_instance", # "labels": ` "instance_id": "12345678901234", # "zone": "us-central1-a" `` # Corresponds to the JSON property `resource` # @return [Google::Apis::MonitoringV3::MonitoredResource] attr_accessor :resource def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @collectd_payloads = args[:collectd_payloads] if args.key?(:collectd_payloads) @collectd_version = args[:collectd_version] if args.key?(:collectd_version) @resource = args[:resource] if args.key?(:resource) end end # The CreateCollectdTimeSeries response. class CreateCollectdTimeSeriesResponse include Google::Apis::Core::Hashable # Records the error status for points that were not written due to an error in # the request.Failed requests for which nothing is written will return an error # response instead. Requests where data points were rejected by the backend will # set summary instead. # Corresponds to the JSON property `payloadErrors` # @return [Array] attr_accessor :payload_errors # Summary of the result of a failed request to write data to a time series. # Corresponds to the JSON property `summary` # @return [Google::Apis::MonitoringV3::CreateTimeSeriesSummary] attr_accessor :summary def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @payload_errors = args[:payload_errors] if args.key?(:payload_errors) @summary = args[:summary] if args.key?(:summary) end end # The CreateTimeSeries request. class CreateTimeSeriesRequest include Google::Apis::Core::Hashable # Required. The new data to be added to a list of time series. Adds at most one # data point to each of several time series. The new data point must be more # recent than any other point in its time series. Each TimeSeries value must # fully specify a unique time series by supplying all label values for the # metric and the monitored resource.The maximum number of TimeSeries objects per # Create request is 200. # Corresponds to the JSON property `timeSeries` # @return [Array] attr_accessor :time_series def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @time_series = args[:time_series] if args.key?(:time_series) end end # Summary of the result of a failed request to write data to a time series. class CreateTimeSeriesSummary include Google::Apis::Core::Hashable # The number of points that failed to be written. Order is not guaranteed. # Corresponds to the JSON property `errors` # @return [Array] attr_accessor :errors # The number of points that were successfully written. # Corresponds to the JSON property `successPointCount` # @return [Fixnum] attr_accessor :success_point_count # The number of points in the request. # Corresponds to the JSON property `totalPointCount` # @return [Fixnum] attr_accessor :total_point_count def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @errors = args[:errors] if args.key?(:errors) @success_point_count = args[:success_point_count] if args.key?(:success_point_count) @total_point_count = args[:total_point_count] if args.key?(:total_point_count) end end # Custom view of service telemetry. Currently a place-holder pending final # design. class Custom include Google::Apis::Core::Hashable def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) end end # Distribution contains summary statistics for a population of values. It # optionally contains a histogram representing the distribution of those values # across a set of buckets.The summary statistics are the count, mean, sum of the # squared deviation from the mean, the minimum, and the maximum of the set of # population of values. The histogram is based on a sequence of buckets and # gives a count of values that fall into each bucket. The boundaries of the # buckets are given either explicitly or by formulas for buckets of fixed or # exponentially increasing widths.Although it is not forbidden, it is generally # a bad idea to include non-finite values (infinities or NaNs) in the population # of values, as this will render the mean and sum_of_squared_deviation fields # meaningless. class Distribution include Google::Apis::Core::Hashable # Required in the Cloud Monitoring API v3. The values for each bucket specified # in bucket_options. The sum of the values in bucketCounts must equal the value # in the count field of the Distribution object. The order of the bucket counts # follows the numbering schemes described for the three bucket types. The # underflow bucket has number 0; the finite buckets, if any, have numbers 1 # through N-2; and the overflow bucket has number N-1. The size of bucket_counts # must not be greater than N. If the size is less than N, then the remaining # buckets are assigned values of zero. # Corresponds to the JSON property `bucketCounts` # @return [Array] attr_accessor :bucket_counts # BucketOptions describes the bucket boundaries used to create a histogram for # the distribution. The buckets can be in a linear sequence, an exponential # sequence, or each bucket can be specified explicitly. BucketOptions does not # include the number of values in each bucket.A bucket has an inclusive lower # bound and exclusive upper bound for the values that are counted for that # bucket. The upper bound of a bucket must be strictly greater than the lower # bound. The sequence of N buckets for a distribution consists of an underflow # bucket (number 0), zero or more finite buckets (number 1 through N - 2) and an # overflow bucket (number N - 1). The buckets are contiguous: the lower bound of # bucket i (i > 0) is the same as the upper bound of bucket i - 1. The buckets # span the whole range of finite values: lower bound of the underflow bucket is - # infinity and the upper bound of the overflow bucket is +infinity. The finite # buckets are so-called because both bounds are finite. # Corresponds to the JSON property `bucketOptions` # @return [Google::Apis::MonitoringV3::BucketOptions] attr_accessor :bucket_options # The number of values in the population. Must be non-negative. This value must # equal the sum of the values in bucket_counts if a histogram is provided. # Corresponds to the JSON property `count` # @return [Fixnum] attr_accessor :count # Must be in increasing order of value field. # Corresponds to the JSON property `exemplars` # @return [Array] attr_accessor :exemplars # The arithmetic mean of the values in the population. If count is zero then # this field must be zero. # Corresponds to the JSON property `mean` # @return [Float] attr_accessor :mean # The range of the population values. # Corresponds to the JSON property `range` # @return [Google::Apis::MonitoringV3::Range] attr_accessor :range # The sum of squared deviations from the mean of the values in the population. # For values x_i this is: # Sum[i=1..n]((x_i - mean)^2) # Knuth, "The Art of Computer Programming", Vol. 2, page 323, 3rd edition # describes Welford's method for accumulating this sum in one pass.If count is # zero then this field must be zero. # Corresponds to the JSON property `sumOfSquaredDeviation` # @return [Float] attr_accessor :sum_of_squared_deviation def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @bucket_counts = args[:bucket_counts] if args.key?(:bucket_counts) @bucket_options = args[:bucket_options] if args.key?(:bucket_options) @count = args[:count] if args.key?(:count) @exemplars = args[:exemplars] if args.key?(:exemplars) @mean = args[:mean] if args.key?(:mean) @range = args[:range] if args.key?(:range) @sum_of_squared_deviation = args[:sum_of_squared_deviation] if args.key?(:sum_of_squared_deviation) end end # A DistributionCut defines a TimeSeries and thresholds used for measuring good # service and total service. The TimeSeries must have ValueType = # DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE. The computed # good_service will be the count of values x in the Distribution such that range. # min <= x < range.max. class DistributionCut include Google::Apis::Core::Hashable # A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) # specifying a TimeSeries aggregating values. Must have ValueType = # DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE. # Corresponds to the JSON property `distributionFilter` # @return [String] attr_accessor :distribution_filter # Range of numerical values, inclusive of min and exclusive of max. If the open # range "< range.max" is desired, set range.min = -infinity. If the open range "> # = range.min" is desired, set range.max = infinity. # Corresponds to the JSON property `range` # @return [Google::Apis::MonitoringV3::GoogleMonitoringV3Range] attr_accessor :range def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @distribution_filter = args[:distribution_filter] if args.key?(:distribution_filter) @range = args[:range] if args.key?(:range) end end # A content string and a MIME type that describes the content string's format. class Documentation include Google::Apis::Core::Hashable # 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. # Corresponds to the JSON property `content` # @return [String] attr_accessor :content # 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. # Corresponds to the JSON property `mimeType` # @return [String] attr_accessor :mime_type def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @content = args[:content] if args.key?(:content) @mime_type = args[:mime_type] if args.key?(:mime_type) end end # A set of (label, value) pairs which were dropped during aggregation, attached # to google.api.Distribution.Exemplars in google.api.Distribution values during # aggregation.These values are used in combination with the label values that # remain on the aggregated Distribution timeseries to construct the full label # set for the exemplar values. The resulting full label set may be used to # identify the specific task/job/instance (for example) which may be # contributing to a long-tail, while allowing the storage savings of only # storing aggregated distribution values for a large group.Note that there are # no guarantees on ordering of the labels from exemplar-to-exemplar and from # distribution-to-distribution in the same stream, and there may be duplicates. # It is up to clients to resolve any ambiguities. class DroppedLabels include Google::Apis::Core::Hashable # Map from label to its value, for all labels dropped in any aggregation. # Corresponds to the JSON property `label` # @return [Hash] attr_accessor :label def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @label = args[:label] if args.key?(:label) end end # A generic empty message that you can re-use to avoid defining duplicated empty # messages in your APIs. A typical example is to use it as the request or the # response type of an API method. For instance: # service Foo ` # rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); # ` # The JSON representation for Empty is empty JSON object ``. class Empty include Google::Apis::Core::Hashable def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) end end # Detailed information about an error category. class Error include Google::Apis::Core::Hashable # The number of points that couldn't be written because of status. # Corresponds to the JSON property `pointCount` # @return [Fixnum] attr_accessor :point_count # The Status type defines a logical error model that is suitable for different # programming environments, including REST APIs and RPC APIs. It is used by gRPC # (https://github.com/grpc). Each Status message contains three pieces of data: # error code, error message, and error details.You can find out more about this # error model and how to work with it in the API Design Guide (https://cloud. # google.com/apis/design/errors). # Corresponds to the JSON property `status` # @return [Google::Apis::MonitoringV3::Status] attr_accessor :status def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @point_count = args[:point_count] if args.key?(:point_count) @status = args[:status] if args.key?(:status) end end # Exemplars are example points that may be used to annotate aggregated # distribution values. They are metadata that gives information about a # particular value added to a Distribution bucket, such as a trace ID that was # active when a value was added. They may contain further information, such as a # example values and timestamps, origin, etc. class Exemplar include Google::Apis::Core::Hashable # Contextual information about the example value. Examples are:Trace: type. # googleapis.com/google.monitoring.v3.SpanContextLiteral string: type.googleapis. # com/google.protobuf.StringValueLabels dropped during aggregation: type. # googleapis.com/google.monitoring.v3.DroppedLabelsThere may be only a single # attachment of any given message type in a single exemplar, and this is # enforced by the system. # Corresponds to the JSON property `attachments` # @return [Array>] attr_accessor :attachments # The observation (sampling) time of the above value. # Corresponds to the JSON property `timestamp` # @return [String] attr_accessor :timestamp # Value of the exemplar point. This value determines to which bucket the # exemplar belongs. # Corresponds to the JSON property `value` # @return [Float] attr_accessor :value def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @attachments = args[:attachments] if args.key?(:attachments) @timestamp = args[:timestamp] if args.key?(:timestamp) @value = args[:value] if args.key?(:value) end end # Specifies a set of buckets with arbitrary widths.There are size(bounds) + 1 (= # N) buckets. Bucket i has the following boundaries:Upper bound (0 <= i < N-1): # boundsi Lower bound (1 <= i < N); boundsi - 1The bounds field must contain at # least one element. If bounds has only one element, then there are no finite # buckets, and that single element is the common boundary of the overflow and # underflow buckets. class Explicit include Google::Apis::Core::Hashable # The values must be monotonically increasing. # Corresponds to the JSON property `bounds` # @return [Array] attr_accessor :bounds def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @bounds = args[:bounds] if args.key?(:bounds) end end # Specifies an exponential sequence of buckets that have a width that is # proportional to the value of the lower bound. Each bucket represents a # constant relative uncertainty on a specific value in the bucket.There are # num_finite_buckets + 2 (= N) buckets. Bucket i has the following boundaries: # Upper bound (0 <= i < N-1): scale * (growth_factor ^ i). Lower bound (1 <= i < # N): scale * (growth_factor ^ (i - 1)). class Exponential include Google::Apis::Core::Hashable # Must be greater than 1. # Corresponds to the JSON property `growthFactor` # @return [Float] attr_accessor :growth_factor # Must be greater than 0. # Corresponds to the JSON property `numFiniteBuckets` # @return [Fixnum] attr_accessor :num_finite_buckets # Must be greater than 0. # Corresponds to the JSON property `scale` # @return [Float] attr_accessor :scale def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @growth_factor = args[:growth_factor] if args.key?(:growth_factor) @num_finite_buckets = args[:num_finite_buckets] if args.key?(:num_finite_buckets) @scale = args[:scale] if args.key?(:scale) end end # A single field of a message type. class Field include Google::Apis::Core::Hashable # The field cardinality. # Corresponds to the JSON property `cardinality` # @return [String] attr_accessor :cardinality # The string value of the default value of this field. Proto2 syntax only. # Corresponds to the JSON property `defaultValue` # @return [String] attr_accessor :default_value # The field JSON name. # Corresponds to the JSON property `jsonName` # @return [String] attr_accessor :json_name # The field type. # Corresponds to the JSON property `kind` # @return [String] attr_accessor :kind # The field name. # Corresponds to the JSON property `name` # @return [String] attr_accessor :name # The field number. # Corresponds to the JSON property `number` # @return [Fixnum] attr_accessor :number # The index of the field type in Type.oneofs, for message or enumeration types. # The first type has index 1; zero means the type is not in the list. # Corresponds to the JSON property `oneofIndex` # @return [Fixnum] attr_accessor :oneof_index # The protocol buffer options. # Corresponds to the JSON property `options` # @return [Array] attr_accessor :options # Whether to use alternative packed wire representation. # Corresponds to the JSON property `packed` # @return [Boolean] attr_accessor :packed alias_method :packed?, :packed # The field type URL, without the scheme, for message or enumeration types. # Example: "type.googleapis.com/google.protobuf.Timestamp". # Corresponds to the JSON property `typeUrl` # @return [String] attr_accessor :type_url def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @cardinality = args[:cardinality] if args.key?(:cardinality) @default_value = args[:default_value] if args.key?(:default_value) @json_name = args[:json_name] if args.key?(:json_name) @kind = args[:kind] if args.key?(:kind) @name = args[:name] if args.key?(:name) @number = args[:number] if args.key?(:number) @oneof_index = args[:oneof_index] if args.key?(:oneof_index) @options = args[:options] if args.key?(:options) @packed = args[:packed] if args.key?(:packed) @type_url = args[:type_url] if args.key?(:type_url) end end # The GetNotificationChannelVerificationCode request. class GetNotificationChannelVerificationCodeRequest include Google::Apis::Core::Hashable # The desired expiration time. If specified, the API will guarantee that the # returned code will not be valid after the specified timestamp; however, the # API cannot guarantee that the returned code will be valid for at least as long # as the requested time (the API puts an upper bound on the amount of time for # which a code may be valid). If omitted, a default expiration will be used, # which may be less than the max permissible expiration (so specifying an # expiration may extend the code's lifetime over omitting an expiration, even # though the API does impose an upper limit on the maximum expiration that is # permitted). # Corresponds to the JSON property `expireTime` # @return [String] attr_accessor :expire_time def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @expire_time = args[:expire_time] if args.key?(:expire_time) end end # The GetNotificationChannelVerificationCode request. class GetNotificationChannelVerificationCodeResponse include Google::Apis::Core::Hashable # The verification code, which may be used to verify other channels that have an # equivalent identity (i.e. other channels of the same type with the same # fingerprint such as other email channels with the same email address or other # sms channels with the same number). # Corresponds to the JSON property `code` # @return [String] attr_accessor :code # The expiration time associated with the code that was returned. If an # expiration was provided in the request, this is the minimum of the requested # expiration in the request and the max permitted expiration. # Corresponds to the JSON property `expireTime` # @return [String] attr_accessor :expire_time def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @code = args[:code] if args.key?(:code) @expire_time = args[:expire_time] if args.key?(:expire_time) end end # Range of numerical values, inclusive of min and exclusive of max. If the open # range "< range.max" is desired, set range.min = -infinity. If the open range "> # = range.min" is desired, set range.max = infinity. class GoogleMonitoringV3Range include Google::Apis::Core::Hashable # Range maximum. # Corresponds to the JSON property `max` # @return [Float] attr_accessor :max # Range minimum. # Corresponds to the JSON property `min` # @return [Float] attr_accessor :min def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @max = args[:max] if args.key?(:max) @min = args[:min] if args.key?(:min) end end # The description of a dynamic collection of monitored resources. Each group has # a filter that is matched against monitored resources and their associated # metadata. If a group's filter matches an available monitored resource, then # that resource is a member of that group. Groups can contain any number of # monitored resources, and each monitored resource can be a member of any number # of groups.Groups can be nested in parent-child hierarchies. The parentName # field identifies an optional parent for each group. If a group has a parent, # then the only monitored resources available to be matched by the group's # filter are the resources contained in the parent group. In other words, a # group contains the monitored resources that match its filter and the filters # of all the group's ancestors. A group without a parent can contain any # monitored resource.For example, consider an infrastructure running a set of # instances with two user-defined tags: "environment" and "role". A parent group # has a filter, environment="production". A child of that parent group has a # filter, role="transcoder". The parent group contains all instances in the # production environment, regardless of their roles. The child group contains # instances that have the transcoder role and are in the production environment. # The monitored resources contained in a group can change at any moment, # depending on what resources exist and what filters are associated with the # group and its ancestors. class Group include Google::Apis::Core::Hashable # A user-assigned name for this group, used only for display purposes. # Corresponds to the JSON property `displayName` # @return [String] attr_accessor :display_name # The filter used to determine which monitored resources belong to this group. # Corresponds to the JSON property `filter` # @return [String] attr_accessor :filter # If true, the members of this group are considered to be a cluster. The system # can perform additional analysis on groups that are clusters. # Corresponds to the JSON property `isCluster` # @return [Boolean] attr_accessor :is_cluster alias_method :is_cluster?, :is_cluster # Output only. The name of this group. The format is: # projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID] # When creating a group, this field is ignored and a new name is created # consisting of the project specified in the call to CreateGroup and a unique [ # GROUP_ID] that is generated automatically. # Corresponds to the JSON property `name` # @return [String] attr_accessor :name # The name of the group's parent, if it has one. The format is: # projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID] # For groups with no parent, parent_name is the empty string, "". # Corresponds to the JSON property `parentName` # @return [String] attr_accessor :parent_name def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @display_name = args[:display_name] if args.key?(:display_name) @filter = args[:filter] if args.key?(:filter) @is_cluster = args[:is_cluster] if args.key?(:is_cluster) @name = args[:name] if args.key?(:name) @parent_name = args[:parent_name] if args.key?(:parent_name) end end # Information involved in an HTTP/HTTPS Uptime check request. class HttpCheck include Google::Apis::Core::Hashable # The authentication parameters to provide to the specified resource or URL that # requires a username and password. Currently, only Basic HTTP authentication ( # https://tools.ietf.org/html/rfc7617) is supported in Uptime checks. # Corresponds to the JSON property `authInfo` # @return [Google::Apis::MonitoringV3::BasicAuthentication] attr_accessor :auth_info # The request body associated with the HTTP POST request. If content_type is # URL_ENCODED, the body passed in must be URL-encoded. Users can provide a # Content-Length header via the headers field or the API will do so. If the # request_method is GET and body is not empty, the API will return an error. The # maximum byte size is 1 megabyte. Note: As with all bytes fields JSON # representations are base64 encoded. e.g.: "foo=bar" in URL-encoded form is " # foo%3Dbar" and in base64 encoding is "Zm9vJTI1M0RiYXI=". # Corresponds to the JSON property `body` # NOTE: Values are automatically base64 encoded/decoded in the client library. # @return [String] attr_accessor :body # The content type to use for the check. # Corresponds to the JSON property `contentType` # @return [String] attr_accessor :content_type # The list of headers to send as part of the Uptime check request. If two # headers have the same key and different values, they should be entered as a # single header, with the value being a comma-separated list of all the desired # values as described at https://www.w3.org/Protocols/rfc2616/rfc2616.txt (page # 31). Entering two separate headers with the same key in a Create call will # cause the first to be overwritten by the second. The maximum number of headers # allowed is 100. # Corresponds to the JSON property `headers` # @return [Hash] attr_accessor :headers # Boolean specifying whether to encrypt the header information. Encryption # should be specified for any headers related to authentication that you do not # wish to be seen when retrieving the configuration. The server will be # responsible for encrypting the headers. On Get/List calls, if mask_headers is # set to true then the headers will be obscured with ******. # Corresponds to the JSON property `maskHeaders` # @return [Boolean] attr_accessor :mask_headers alias_method :mask_headers?, :mask_headers # Optional (defaults to "/"). The path to the page against which to run the # check. Will be combined with the host (specified within the monitored_resource) # and port to construct the full URL. If the provided path does not begin with " # /", a "/" will be prepended automatically. # Corresponds to the JSON property `path` # @return [String] attr_accessor :path # Optional (defaults to 80 when use_ssl is false, and 443 when use_ssl is true). # The TCP port on the HTTP server against which to run the check. Will be # combined with host (specified within the monitored_resource) and path to # construct the full URL. # Corresponds to the JSON property `port` # @return [Fixnum] attr_accessor :port # The HTTP request method to use for the check. If set to METHOD_UNSPECIFIED # then request_method defaults to GET. # Corresponds to the JSON property `requestMethod` # @return [String] attr_accessor :request_method # If true, use HTTPS instead of HTTP to run the check. # Corresponds to the JSON property `useSsl` # @return [Boolean] attr_accessor :use_ssl alias_method :use_ssl?, :use_ssl # Boolean specifying whether to include SSL certificate validation as a part of # the Uptime check. Only applies to checks where monitored_resource is set to # uptime_url. If use_ssl is false, setting validate_ssl to true has no effect. # Corresponds to the JSON property `validateSsl` # @return [Boolean] attr_accessor :validate_ssl alias_method :validate_ssl?, :validate_ssl def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @auth_info = args[:auth_info] if args.key?(:auth_info) @body = args[:body] if args.key?(:body) @content_type = args[:content_type] if args.key?(:content_type) @headers = args[:headers] if args.key?(:headers) @mask_headers = args[:mask_headers] if args.key?(:mask_headers) @path = args[:path] if args.key?(:path) @port = args[:port] if args.key?(:port) @request_method = args[:request_method] if args.key?(:request_method) @use_ssl = args[:use_ssl] if args.key?(:use_ssl) @validate_ssl = args[:validate_ssl] if args.key?(:validate_ssl) end end # An internal checker allows Uptime checks to run on private/internal GCP # resources. class InternalChecker include Google::Apis::Core::Hashable # The checker's human-readable name. The display name should be unique within a # Stackdriver Workspace in order to make it easier to identify; however, # uniqueness is not enforced. # Corresponds to the JSON property `displayName` # @return [String] attr_accessor :display_name # The GCP zone the Uptime check should egress from. Only respected for internal # Uptime checks, where internal_network is specified. # Corresponds to the JSON property `gcpZone` # @return [String] attr_accessor :gcp_zone # A unique resource name for this InternalChecker. The format is: # projects/[PROJECT_ID_OR_NUMBER]/internalCheckers/[INTERNAL_CHECKER_ID] # [PROJECT_ID_OR_NUMBER] is the Stackdriver Workspace project for the Uptime # check config associated with the internal checker. # Corresponds to the JSON property `name` # @return [String] attr_accessor :name # The GCP VPC network (https://cloud.google.com/vpc/docs/vpc) where the internal # resource lives (ex: "default"). # Corresponds to the JSON property `network` # @return [String] attr_accessor :network # The GCP project ID where the internal checker lives. Not necessary the same as # the Workspace project. # Corresponds to the JSON property `peerProjectId` # @return [String] attr_accessor :peer_project_id # The current operational state of the internal checker. # Corresponds to the JSON property `state` # @return [String] attr_accessor :state def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @display_name = args[:display_name] if args.key?(:display_name) @gcp_zone = args[:gcp_zone] if args.key?(:gcp_zone) @name = args[:name] if args.key?(:name) @network = args[:network] if args.key?(:network) @peer_project_id = args[:peer_project_id] if args.key?(:peer_project_id) @state = args[:state] if args.key?(:state) end end # A description of a label. class LabelDescriptor include Google::Apis::Core::Hashable # A human-readable description for the label. # Corresponds to the JSON property `description` # @return [String] attr_accessor :description # The key for this label. The key must meet the following criteria: # Does not exceed 100 characters. # Matches the following regular expression: [a-zA-Z][a-zA-Z0-9_]* # The first character must be an upper- or lower-case letter. # The remaining characters must be letters, digits, or underscores. # Corresponds to the JSON property `key` # @return [String] attr_accessor :key # The type of data that can be assigned to the label. # Corresponds to the JSON property `valueType` # @return [String] attr_accessor :value_type def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @description = args[:description] if args.key?(:description) @key = args[:key] if args.key?(:key) @value_type = args[:value_type] if args.key?(:value_type) end end # A label value. class LabelValue include Google::Apis::Core::Hashable # A bool label value. # Corresponds to the JSON property `boolValue` # @return [Boolean] attr_accessor :bool_value alias_method :bool_value?, :bool_value # An int64 label value. # Corresponds to the JSON property `int64Value` # @return [Fixnum] attr_accessor :int64_value # A string label value. # Corresponds to the JSON property `stringValue` # @return [String] attr_accessor :string_value def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @bool_value = args[:bool_value] if args.key?(:bool_value) @int64_value = args[:int64_value] if args.key?(:int64_value) @string_value = args[:string_value] if args.key?(:string_value) end end # Parameters for a latency threshold SLI. class LatencyCriteria include Google::Apis::Core::Hashable # Good service is defined to be the count of requests made to this service that # return in no more than threshold. # Corresponds to the JSON property `threshold` # @return [String] attr_accessor :threshold def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @threshold = args[:threshold] if args.key?(:threshold) end end # Specifies a linear sequence of buckets that all have the same width (except # overflow and underflow). Each bucket represents a constant absolute # uncertainty on the specific value in the bucket.There are num_finite_buckets + # 2 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 <= i < N- # 1): offset + (width * i). Lower bound (1 <= i < N): offset + (width * (i - 1)) # . class Linear include Google::Apis::Core::Hashable # Must be greater than 0. # Corresponds to the JSON property `numFiniteBuckets` # @return [Fixnum] attr_accessor :num_finite_buckets # Lower bound of the first bucket. # Corresponds to the JSON property `offset` # @return [Float] attr_accessor :offset # Must be greater than 0. # Corresponds to the JSON property `width` # @return [Float] attr_accessor :width def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @num_finite_buckets = args[:num_finite_buckets] if args.key?(:num_finite_buckets) @offset = args[:offset] if args.key?(:offset) @width = args[:width] if args.key?(:width) end end # The protocol for the ListAlertPolicies response. class ListAlertPoliciesResponse include Google::Apis::Core::Hashable # The returned alert policies. # Corresponds to the JSON property `alertPolicies` # @return [Array] attr_accessor :alert_policies # If there might be more results than were returned, then this field is set to a # non-empty value. To see the additional results, use that value as page_token # in the next call to this method. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # The total number of alert policies in all pages. This number is only an # estimate, and may change in subsequent pages. https://aip.dev/158 # Corresponds to the JSON property `totalSize` # @return [Fixnum] attr_accessor :total_size def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @alert_policies = args[:alert_policies] if args.key?(:alert_policies) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @total_size = args[:total_size] if args.key?(:total_size) end end # The ListGroupMembers response. class ListGroupMembersResponse include Google::Apis::Core::Hashable # A set of monitored resources in the group. # Corresponds to the JSON property `members` # @return [Array] attr_accessor :members # If there are more results than have been returned, then this field is set to a # non-empty value. To see the additional results, use that value as page_token # in the next call to this method. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # The total number of elements matching this request. # Corresponds to the JSON property `totalSize` # @return [Fixnum] attr_accessor :total_size def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @members = args[:members] if args.key?(:members) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @total_size = args[:total_size] if args.key?(:total_size) end end # The ListGroups response. class ListGroupsResponse include Google::Apis::Core::Hashable # The groups that match the specified filters. # Corresponds to the JSON property `group` # @return [Array] attr_accessor :group # If there are more results than have been returned, then this field is set to a # non-empty value. To see the additional results, use that value as page_token # in the next call to this method. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @group = args[:group] if args.key?(:group) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) end end # The ListMetricDescriptors response. class ListMetricDescriptorsResponse include Google::Apis::Core::Hashable # The metric descriptors that are available to the project and that match the # value of filter, if present. # Corresponds to the JSON property `metricDescriptors` # @return [Array] attr_accessor :metric_descriptors # If there are more results than have been returned, then this field is set to a # non-empty value. To see the additional results, use that value as page_token # in the next call to this method. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @metric_descriptors = args[:metric_descriptors] if args.key?(:metric_descriptors) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) end end # The ListMonitoredResourceDescriptors response. class ListMonitoredResourceDescriptorsResponse include Google::Apis::Core::Hashable # If there are more results than have been returned, then this field is set to a # non-empty value. To see the additional results, use that value as page_token # in the next call to this method. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # The monitored resource descriptors that are available to this project and that # match filter, if present. # Corresponds to the JSON property `resourceDescriptors` # @return [Array] attr_accessor :resource_descriptors def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @resource_descriptors = args[:resource_descriptors] if args.key?(:resource_descriptors) end end # The ListNotificationChannelDescriptors response. class ListNotificationChannelDescriptorsResponse include Google::Apis::Core::Hashable # The monitored resource descriptors supported for the specified project, # optionally filtered. # Corresponds to the JSON property `channelDescriptors` # @return [Array] attr_accessor :channel_descriptors # If not empty, indicates that there may be more results that match the request. # Use the value in the page_token field in a subsequent request to fetch the # next set of results. If empty, all results have been returned. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @channel_descriptors = args[:channel_descriptors] if args.key?(:channel_descriptors) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) end end # The ListNotificationChannels response. class ListNotificationChannelsResponse include Google::Apis::Core::Hashable # If not empty, indicates that there may be more results that match the request. # Use the value in the page_token field in a subsequent request to fetch the # next set of results. If empty, all results have been returned. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # The notification channels defined for the specified project. # Corresponds to the JSON property `notificationChannels` # @return [Array] attr_accessor :notification_channels def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @notification_channels = args[:notification_channels] if args.key?(:notification_channels) end end # The ListServiceLevelObjectives response. class ListServiceLevelObjectivesResponse include Google::Apis::Core::Hashable # If there are more results than have been returned, then this field is set to a # non-empty value. To see the additional results, use that value as page_token # in the next call to this method. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # The ServiceLevelObjectives matching the specified filter. # Corresponds to the JSON property `serviceLevelObjectives` # @return [Array] attr_accessor :service_level_objectives def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @service_level_objectives = args[:service_level_objectives] if args.key?(:service_level_objectives) end end # The ListServices response. class ListServicesResponse include Google::Apis::Core::Hashable # If there are more results than have been returned, then this field is set to a # non-empty value. To see the additional results, use that value as page_token # in the next call to this method. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # The Services matching the specified filter. # Corresponds to the JSON property `services` # @return [Array] attr_accessor :services def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @services = args[:services] if args.key?(:services) end end # The ListTimeSeries response. class ListTimeSeriesResponse include Google::Apis::Core::Hashable # Query execution errors that may have caused the time series data returned to # be incomplete. # Corresponds to the JSON property `executionErrors` # @return [Array] attr_accessor :execution_errors # If there are more results than have been returned, then this field is set to a # non-empty value. To see the additional results, use that value as page_token # in the next call to this method. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # One or more time series that match the filter included in the request. # Corresponds to the JSON property `timeSeries` # @return [Array] attr_accessor :time_series # The unit in which all time_series point values are reported. unit follows the # UCUM format for units as seen in https://unitsofmeasure.org/ucum.html. If # different time_series have different units (for example, because they come # from different metric types, or a unit is absent), then unit will be "` # not_a_unit`". # Corresponds to the JSON property `unit` # @return [String] attr_accessor :unit def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @execution_errors = args[:execution_errors] if args.key?(:execution_errors) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @time_series = args[:time_series] if args.key?(:time_series) @unit = args[:unit] if args.key?(:unit) end end # The protocol for the ListUptimeCheckConfigs response. class ListUptimeCheckConfigsResponse include Google::Apis::Core::Hashable # This field represents the pagination token to retrieve the next page of # results. If the value is empty, it means no further results for the request. # To retrieve the next page of results, the value of the next_page_token is # passed to the subsequent List method call (in the request message's page_token # field). # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # The total number of Uptime check configurations for the project, irrespective # of any pagination. # Corresponds to the JSON property `totalSize` # @return [Fixnum] attr_accessor :total_size # The returned Uptime check configurations. # Corresponds to the JSON property `uptimeCheckConfigs` # @return [Array] attr_accessor :uptime_check_configs def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @total_size = args[:total_size] if args.key?(:total_size) @uptime_check_configs = args[:uptime_check_configs] if args.key?(:uptime_check_configs) end end # The protocol for the ListUptimeCheckIps response. class ListUptimeCheckIpsResponse include Google::Apis::Core::Hashable # This field represents the pagination token to retrieve the next page of # results. If the value is empty, it means no further results for the request. # To retrieve the next page of results, the value of the next_page_token is # passed to the subsequent List method call (in the request message's page_token # field). NOTE: this field is not yet implemented # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # The returned list of IP addresses (including region and location) that the # checkers run from. # Corresponds to the JSON property `uptimeCheckIps` # @return [Array] attr_accessor :uptime_check_ips def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @uptime_check_ips = args[:uptime_check_ips] if args.key?(:uptime_check_ips) end end # Istio service scoped to an Istio mesh class MeshIstio include Google::Apis::Core::Hashable # Identifier for the mesh in which this Istio service is defined. Corresponds to # the mesh_uid metric label in Istio metrics. # Corresponds to the JSON property `meshUid` # @return [String] attr_accessor :mesh_uid # The name of the Istio service underlying this service. Corresponds to the # destination_service_name metric label in Istio metrics. # Corresponds to the JSON property `serviceName` # @return [String] attr_accessor :service_name # The namespace of the Istio service underlying this service. Corresponds to the # destination_service_namespace metric label in Istio metrics. # Corresponds to the JSON property `serviceNamespace` # @return [String] attr_accessor :service_namespace def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @mesh_uid = args[:mesh_uid] if args.key?(:mesh_uid) @service_name = args[:service_name] if args.key?(:service_name) @service_namespace = args[:service_namespace] if args.key?(:service_namespace) end end # A specific metric, identified by specifying values for all of the labels of a # MetricDescriptor. class Metric include Google::Apis::Core::Hashable # The set of label values that uniquely identify this metric. All labels listed # in the MetricDescriptor must be assigned values. # Corresponds to the JSON property `labels` # @return [Hash] attr_accessor :labels # An existing metric type, see google.api.MetricDescriptor. For example, custom. # googleapis.com/invoice/paid/amount. # Corresponds to the JSON property `type` # @return [String] attr_accessor :type def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @labels = args[:labels] if args.key?(:labels) @type = args[:type] if args.key?(:type) end 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. class MetricAbsence include Google::Apis::Core::Hashable # 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 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. # Corresponds to the JSON property `aggregations` # @return [Array] attr_accessor :aggregations # 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. # Corresponds to the JSON property `duration` # @return [String] attr_accessor :duration # 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 ListTimeSeries request (https://cloud. # google.com/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. # Corresponds to the JSON property `filter` # @return [String] attr_accessor :filter # Specifies how many time series must fail a predicate to trigger a condition. # If not specified, then a `count: 1` trigger is used. # Corresponds to the JSON property `trigger` # @return [Google::Apis::MonitoringV3::Trigger] attr_accessor :trigger def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @aggregations = args[:aggregations] if args.key?(:aggregations) @duration = args[:duration] if args.key?(:duration) @filter = args[:filter] if args.key?(:filter) @trigger = args[:trigger] if args.key?(:trigger) end end # Defines a metric type and its schema. Once a metric descriptor is created, # deleting or altering it stops data collection and makes the metric type's # existing data unusable.The following are specific rules for service defined # Monitoring metric descriptors: # type, metric_kind, value_type, description, display_name, launch_stage fields # are all required. The unit field must be specified if the value_type is any # of DOUBLE, INT64, DISTRIBUTION. # Maximum of default 500 metric descriptors per service is allowed. # Maximum of default 10 labels per metric descriptor is allowed.The default # maximum limit can be overridden. Please follow https://cloud.google.com/ # monitoring/quotas class MetricDescriptor include Google::Apis::Core::Hashable # A detailed description of the metric, which can be used in documentation. # Corresponds to the JSON property `description` # @return [String] attr_accessor :description # A concise name for the metric, which can be displayed in user interfaces. Use # sentence case without an ending period, for example "Request count". This # field is optional but it is recommended to be set for any metrics associated # with user-visible concepts, such as Quota. # Corresponds to the JSON property `displayName` # @return [String] attr_accessor :display_name # The set of labels that can be used to describe a specific instance of this # metric type.The label key name must follow: # Only upper and lower-case letters, digits and underscores (_) are allowed. # Label name must start with a letter or digit. # The maximum length of a label name is 100 characters.For example, the # appengine.googleapis.com/http/server/response_latencies metric type has a # label for the HTTP response code, response_code, so you can look at latencies # for successful responses or just for responses that failed. # Corresponds to the JSON property `labels` # @return [Array] attr_accessor :labels # Optional. The launch stage of the metric definition. # Corresponds to the JSON property `launchStage` # @return [String] attr_accessor :launch_stage # Additional annotations that can be used to guide the usage of a metric. # Corresponds to the JSON property `metadata` # @return [Google::Apis::MonitoringV3::MetricDescriptorMetadata] attr_accessor :metadata # Whether the metric records instantaneous values, changes to a value, etc. Some # combinations of metric_kind and value_type might not be supported. # Corresponds to the JSON property `metricKind` # @return [String] attr_accessor :metric_kind # Read-only. If present, then a time series, which is identified partially by a # metric type and a MonitoredResourceDescriptor, that is associated with this # metric type can only be associated with one of the monitored resource types # listed here. # Corresponds to the JSON property `monitoredResourceTypes` # @return [Array] attr_accessor :monitored_resource_types # The resource name of the metric descriptor. # Corresponds to the JSON property `name` # @return [String] attr_accessor :name # The metric type, including its DNS name prefix. The type is not URL-encoded. # All service defined metrics must be prefixed with the service name, in the # format of `service name`/`relative metric name`, such as cloudsql.googleapis. # com/database/cpu/utilization. The relative metric name must follow: # Only upper and lower-case letters, digits, '/' and underscores '_' are # allowed. # The maximum number of characters allowed for the relative_metric_name is 100. # All user-defined metric types have the DNS name custom.googleapis.com, # external.googleapis.com, or logging.googleapis.com/user/.Metric types should # use a natural hierarchical grouping. For example: # "custom.googleapis.com/invoice/paid/amount" # "external.googleapis.com/prometheus/up" # "appengine.googleapis.com/http/server/response_latencies" # Corresponds to the JSON property `type` # @return [String] attr_accessor :type # The units in which the metric value is reported. It is only applicable if the # value_type is INT64, DOUBLE, or DISTRIBUTION. The unit defines the # representation of the stored metric values.Different systems may scale the # values to be more easily displayed (so a value of 0.02KBy might be displayed # as 20By, and a value of 3523KBy might be displayed as 3.5MBy). However, if the # unit is KBy, then the value of the metric is always in thousands of bytes, no # matter how it may be displayed..If you want a custom metric to record the # exact number of CPU-seconds used by a job, you can create an INT64 CUMULATIVE # metric whose unit is s`CPU` (or equivalently 1s`CPU` or just s). If the job # uses 12,005 CPU-seconds, then the value is written as 12005.Alternatively, if # you want a custom metric to record data in a more granular way, you can create # a DOUBLE CUMULATIVE metric whose unit is ks`CPU`, and then write the value 12. # 005 (which is 12005/1000), or use Kis`CPU` and write 11.723 (which is 12005/ # 1024).The supported units are a subset of The Unified Code for Units of # Measure (http://unitsofmeasure.org/ucum.html) standard:Basic units (UNIT) # bit bit # By byte # s second # min minute # h hour # d day # 1 dimensionlessPrefixes (PREFIX) # k kilo (10^3) # M mega (10^6) # G giga (10^9) # T tera (10^12) # P peta (10^15) # E exa (10^18) # Z zetta (10^21) # Y yotta (10^24) # m milli (10^-3) # u micro (10^-6) # n nano (10^-9) # p pico (10^-12) # f femto (10^-15) # a atto (10^-18) # z zepto (10^-21) # y yocto (10^-24) # Ki kibi (2^10) # Mi mebi (2^20) # Gi gibi (2^30) # Ti tebi (2^40) # Pi pebi (2^50)GrammarThe grammar also includes these connectors: # / division or ratio (as an infix operator). For examples, kBy/`email` or MiBy/ # 10ms (although you should almost never have /s in a metric unit; rates should # always be computed at query time from the underlying cumulative or delta # value). # . multiplication or composition (as an infix operator). For examples, GBy.d # or k`watt`.h.The grammar for a unit is as follows: # Expression = Component ` "." Component ` ` "/" Component ` ; # Component = ( [ PREFIX ] UNIT | "%" ) [ Annotation ] # | Annotation # | "1" # ; # Annotation = "`" NAME "`" ; # Notes: # Annotation is just a comment if it follows a UNIT. If the annotation is used # alone, then the unit is equivalent to 1. For examples, `request`/s == 1/s, By` # transmitted`/s == By/s. # NAME is a sequence of non-blank printable ASCII characters not containing ` # or `. # 1 represents a unitary dimensionless unit (https://en.wikipedia.org/wiki/ # Dimensionless_quantity) of 1, such as in 1/s. It is typically used when none # of the basic units are appropriate. For example, "new users per day" can be # represented as 1/d or `new-users`/d (and a metric value 5 would mean "5 new # users). Alternatively, "thousands of page views per day" would be represented # as 1000/d or k1/d or k`page_views`/d (and a metric value of 5.3 would mean " # 5300 page views per day"). # % represents dimensionless value of 1/100, and annotates values giving a # percentage (so the metric values are typically in the range of 0..100, and a # metric value 3 means "3 percent"). # 10^2.% indicates a metric contains a ratio, typically in the range 0..1, that # will be multiplied by 100 and displayed as a percentage (so a metric value 0. # 03 means "3 percent"). # Corresponds to the JSON property `unit` # @return [String] attr_accessor :unit # Whether the measurement is an integer, a floating-point number, etc. Some # combinations of metric_kind and value_type might not be supported. # Corresponds to the JSON property `valueType` # @return [String] attr_accessor :value_type def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @description = args[:description] if args.key?(:description) @display_name = args[:display_name] if args.key?(:display_name) @labels = args[:labels] if args.key?(:labels) @launch_stage = args[:launch_stage] if args.key?(:launch_stage) @metadata = args[:metadata] if args.key?(:metadata) @metric_kind = args[:metric_kind] if args.key?(:metric_kind) @monitored_resource_types = args[:monitored_resource_types] if args.key?(:monitored_resource_types) @name = args[:name] if args.key?(:name) @type = args[:type] if args.key?(:type) @unit = args[:unit] if args.key?(:unit) @value_type = args[:value_type] if args.key?(:value_type) end end # Additional annotations that can be used to guide the usage of a metric. class MetricDescriptorMetadata include Google::Apis::Core::Hashable # The delay of data points caused by ingestion. Data points older than this age # are guaranteed to be ingested and available to be read, excluding data loss # due to errors. # Corresponds to the JSON property `ingestDelay` # @return [String] attr_accessor :ingest_delay # Deprecated. Must use the MetricDescriptor.launch_stage instead. # Corresponds to the JSON property `launchStage` # @return [String] attr_accessor :launch_stage # The sampling period of metric data points. For metrics which are written # periodically, consecutive data points are stored at this time interval, # excluding data loss due to errors. Metrics with a higher granularity have a # smaller sampling period. # Corresponds to the JSON property `samplePeriod` # @return [String] attr_accessor :sample_period def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @ingest_delay = args[:ingest_delay] if args.key?(:ingest_delay) @launch_stage = args[:launch_stage] if args.key?(:launch_stage) @sample_period = args[:sample_period] if args.key?(:sample_period) end end # A MetricRange is used when each window is good when the value x of a single # TimeSeries satisfies range.min <= x < range.max. The provided TimeSeries must # have ValueType = INT64 or ValueType = DOUBLE and MetricKind = GAUGE. class MetricRange include Google::Apis::Core::Hashable # Range of numerical values, inclusive of min and exclusive of max. If the open # range "< range.max" is desired, set range.min = -infinity. If the open range "> # = range.min" is desired, set range.max = infinity. # Corresponds to the JSON property `range` # @return [Google::Apis::MonitoringV3::GoogleMonitoringV3Range] attr_accessor :range # A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) # specifying the TimeSeries to use for evaluating window quality. # Corresponds to the JSON property `timeSeries` # @return [String] attr_accessor :time_series def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @range = args[:range] if args.key?(:range) @time_series = args[:time_series] if args.key?(:time_series) end end # A condition type that compares a collection of time series against a threshold. class MetricThreshold include Google::Apis::Core::Hashable # 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 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. # Corresponds to the JSON property `aggregations` # @return [Array] attr_accessor :aggregations # 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. # Corresponds to the JSON property `comparison` # @return [String] attr_accessor :comparison # 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. # Corresponds to the JSON property `denominatorAggregations` # @return [Array] attr_accessor :denominator_aggregations # 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 # 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. # Corresponds to the JSON property `denominatorFilter` # @return [String] attr_accessor :denominator_filter # 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. # Corresponds to the JSON property `duration` # @return [String] attr_accessor :duration # 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 ListTimeSeries request (https://cloud. # google.com/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. # Corresponds to the JSON property `filter` # @return [String] attr_accessor :filter # A value against which to compare the time series. # Corresponds to the JSON property `thresholdValue` # @return [Float] attr_accessor :threshold_value # Specifies how many time series must fail a predicate to trigger a condition. # If not specified, then a `count: 1` trigger is used. # Corresponds to the JSON property `trigger` # @return [Google::Apis::MonitoringV3::Trigger] attr_accessor :trigger def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @aggregations = args[:aggregations] if args.key?(:aggregations) @comparison = args[:comparison] if args.key?(:comparison) @denominator_aggregations = args[:denominator_aggregations] if args.key?(:denominator_aggregations) @denominator_filter = args[:denominator_filter] if args.key?(:denominator_filter) @duration = args[:duration] if args.key?(:duration) @filter = args[:filter] if args.key?(:filter) @threshold_value = args[:threshold_value] if args.key?(:threshold_value) @trigger = args[:trigger] if args.key?(:trigger) end end # An object representing a resource that can be used for monitoring, logging, # billing, or other purposes. Examples include virtual machine instances, # databases, and storage devices such as disks. The type field identifies a # MonitoredResourceDescriptor object that describes the resource's schema. # Information in the labels field identifies the actual resource and its # attributes according to the schema. For example, a particular Compute Engine # VM instance could be represented by the following object, because the # MonitoredResourceDescriptor for "gce_instance" has labels "instance_id" and " # zone": # ` "type": "gce_instance", # "labels": ` "instance_id": "12345678901234", # "zone": "us-central1-a" `` class MonitoredResource include Google::Apis::Core::Hashable # Required. Values for all of the labels listed in the associated monitored # resource descriptor. For example, Compute Engine VM instances use the labels " # project_id", "instance_id", and "zone". # Corresponds to the JSON property `labels` # @return [Hash] attr_accessor :labels # Required. The monitored resource type. This field must match the type field of # a MonitoredResourceDescriptor object. For example, the type of a Compute # Engine VM instance is gce_instance. For a list of types, see Monitoring # resource types and Logging resource types. # Corresponds to the JSON property `type` # @return [String] attr_accessor :type def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @labels = args[:labels] if args.key?(:labels) @type = args[:type] if args.key?(:type) end end # An object that describes the schema of a MonitoredResource object using a type # name and a set of labels. For example, the monitored resource descriptor for # Google Compute Engine VM instances has a type of "gce_instance" and specifies # the use of the labels "instance_id" and "zone" to identify particular VM # instances.Different services can support different monitored resource types. # The following are specific rules to service defined monitored resources for # Monitoring and Logging: # The type, display_name, description, labels and launch_stage fields are all # required. # The first label of the monitored resource descriptor must be # resource_container. There are legacy monitored resource descritptors start # with project_id. # It must include a location label. # Maximum of default 5 service defined monitored resource descriptors is # allowed per service. # Maximum of default 10 labels per monitored resource is allowed.The default # maximum limit can be overridden. Please follow https://cloud.google.com/ # monitoring/quotas class MonitoredResourceDescriptor include Google::Apis::Core::Hashable # Optional. A detailed description of the monitored resource type that might be # used in documentation. # Corresponds to the JSON property `description` # @return [String] attr_accessor :description # Optional. A concise name for the monitored resource type that might be # displayed in user interfaces. It should be a Title Cased Noun Phrase, without # any article or other determiners. For example, "Google Cloud SQL Database". # Corresponds to the JSON property `displayName` # @return [String] attr_accessor :display_name # Required. A set of labels used to describe instances of this monitored # resource type. The label key name must follow: # Only upper and lower-case letters, digits and underscores (_) are allowed. # Label name must start with a letter or digit. # The maximum length of a label name is 100 characters.For example, an # individual Google Cloud SQL database is identified by values for the labels # database_id and location. # Corresponds to the JSON property `labels` # @return [Array] attr_accessor :labels # Optional. The launch stage of the monitored resource definition. # Corresponds to the JSON property `launchStage` # @return [String] attr_accessor :launch_stage # Optional. The resource name of the monitored resource descriptor: "projects/` # project_id`/monitoredResourceDescriptors/`type`" where `type` is the value of # the type field in this object and `project_id` is a project ID that provides # API-specific context for accessing the type. APIs that do not use project # information can use the resource name format "monitoredResourceDescriptors/` # type`". # Corresponds to the JSON property `name` # @return [String] attr_accessor :name # Required. The monitored resource type. For example, the type cloudsql_database # represents databases in Google Cloud SQL.All service defined monitored # resource types must be prefixed with the service name, in the format of ` # service name`/`relative resource name`. The relative resource name must follow: # Only upper and lower-case letters and digits are allowed. # It must start with upper case character and is recommended to use Upper Camel # Case style. # The maximum number of characters allowed for the relative_resource_name is # 100.Note there are legacy service monitored resources not following this rule. # Corresponds to the JSON property `type` # @return [String] attr_accessor :type def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @description = args[:description] if args.key?(:description) @display_name = args[:display_name] if args.key?(:display_name) @labels = args[:labels] if args.key?(:labels) @launch_stage = args[:launch_stage] if args.key?(:launch_stage) @name = args[:name] if args.key?(:name) @type = args[:type] if args.key?(:type) end end # Auxiliary metadata for a MonitoredResource object. MonitoredResource objects # contain the minimum set of information to uniquely identify a monitored # resource instance. There is some other useful auxiliary metadata. Monitoring # and Logging use an ingestion pipeline to extract metadata for cloud resources # of all types, and store the metadata in this message. class MonitoredResourceMetadata include Google::Apis::Core::Hashable # Output only. Values for predefined system metadata labels. System labels are a # kind of metadata extracted by Google, including "machine_image", "vpc", " # subnet_id", "security_group", "name", etc. System label values can be only # strings, Boolean values, or a list of strings. For example: # ` "name": "my-test-instance", # "security_group": ["a", "b", "c"], # "spot_instance": false ` # Corresponds to the JSON property `systemLabels` # @return [Hash] attr_accessor :system_labels # Output only. A map of user-defined metadata labels. # Corresponds to the JSON property `userLabels` # @return [Hash] attr_accessor :user_labels def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @system_labels = args[:system_labels] if args.key?(:system_labels) @user_labels = args[:user_labels] if args.key?(:user_labels) end end # Describes a change made to a configuration. class MutationRecord include Google::Apis::Core::Hashable # When the change occurred. # Corresponds to the JSON property `mutateTime` # @return [String] attr_accessor :mutate_time # The email address of the user making the change. # Corresponds to the JSON property `mutatedBy` # @return [String] attr_accessor :mutated_by def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @mutate_time = args[:mutate_time] if args.key?(:mutate_time) @mutated_by = args[:mutated_by] if args.key?(:mutated_by) end end # A NotificationChannel is a medium through which an alert is delivered when a # policy violation is detected. Examples of channels include email, SMS, and # third-party messaging applications. Fields containing sensitive information # like authentication tokens or contact info are only partially populated on # retrieval. class NotificationChannel include Google::Apis::Core::Hashable # An optional human-readable description of this notification channel. This # description may provide additional details, beyond the display name, for the # channel. This may not exceed 1024 Unicode characters. # Corresponds to the JSON property `description` # @return [String] attr_accessor :description # An optional human-readable name for this notification channel. It is # recommended that you specify a non-empty and unique name in order to make it # easier to identify the channels in your project, though this is not enforced. # The display name is limited to 512 Unicode characters. # Corresponds to the JSON property `displayName` # @return [String] attr_accessor :display_name # Whether notifications are forwarded to the described channel. This makes it # possible to disable delivery of notifications to a particular channel without # removing the channel from all alerting policies that reference the channel. # This is a more convenient approach when the change is temporary and you want # to receive notifications from the same set of alerting policies on the channel # at some point in the future. # Corresponds to the JSON property `enabled` # @return [Boolean] attr_accessor :enabled alias_method :enabled?, :enabled # Configuration fields that define the channel and its behavior. The permissible # and required labels are specified in the NotificationChannelDescriptor.labels # of the NotificationChannelDescriptor corresponding to the type field. # Corresponds to the JSON property `labels` # @return [Hash] attr_accessor :labels # The full REST resource name for this channel. The format is: # projects/[PROJECT_ID_OR_NUMBER]/notificationChannels/[CHANNEL_ID] # The [CHANNEL_ID] is automatically assigned by the server on creation. # Corresponds to the JSON property `name` # @return [String] attr_accessor :name # The type of the notification channel. This field matches the value of the # NotificationChannelDescriptor.type field. # Corresponds to the JSON property `type` # @return [String] attr_accessor :type # User-supplied key/value data that does not need to conform to the # corresponding NotificationChannelDescriptor's schema, unlike the labels field. # This field is intended to be used for organizing and identifying the # NotificationChannel 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. # Corresponds to the JSON property `userLabels` # @return [Hash] attr_accessor :user_labels # Indicates whether this channel has been verified or not. On a # ListNotificationChannels or GetNotificationChannel operation, this field is # expected to be populated.If the value is UNVERIFIED, then it indicates that # the channel is non-functioning (it both requires verification and lacks # verification); otherwise, it is assumed that the channel works.If the channel # is neither VERIFIED nor UNVERIFIED, it implies that the channel is of a type # that does not require verification or that this specific channel has been # exempted from verification because it was created prior to verification being # required for channels of this type.This field cannot be modified using a # standard UpdateNotificationChannel operation. To change the value of this # field, you must call VerifyNotificationChannel. # Corresponds to the JSON property `verificationStatus` # @return [String] attr_accessor :verification_status def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @description = args[:description] if args.key?(:description) @display_name = args[:display_name] if args.key?(:display_name) @enabled = args[:enabled] if args.key?(:enabled) @labels = args[:labels] if args.key?(:labels) @name = args[:name] if args.key?(:name) @type = args[:type] if args.key?(:type) @user_labels = args[:user_labels] if args.key?(:user_labels) @verification_status = args[:verification_status] if args.key?(:verification_status) end end # A description of a notification channel. The descriptor includes the # properties of the channel and the set of labels or fields that must be # specified to configure channels of a given type. class NotificationChannelDescriptor include Google::Apis::Core::Hashable # A human-readable description of the notification channel type. The description # may include a description of the properties of the channel and pointers to # external documentation. # Corresponds to the JSON property `description` # @return [String] attr_accessor :description # A human-readable name for the notification channel type. This form of the name # is suitable for a user interface. # Corresponds to the JSON property `displayName` # @return [String] attr_accessor :display_name # The set of labels that must be defined to identify a particular channel of the # corresponding type. Each label includes a description for how that field # should be populated. # Corresponds to the JSON property `labels` # @return [Array] attr_accessor :labels # The product launch stage for channels of this type. # Corresponds to the JSON property `launchStage` # @return [String] attr_accessor :launch_stage # The full REST resource name for this descriptor. The format is: # projects/[PROJECT_ID_OR_NUMBER]/notificationChannelDescriptors/[TYPE] # In the above, [TYPE] is the value of the type field. # Corresponds to the JSON property `name` # @return [String] attr_accessor :name # The type of notification channel, such as "email", "sms", etc. Notification # channel types are globally unique. # Corresponds to the JSON property `type` # @return [String] attr_accessor :type def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @description = args[:description] if args.key?(:description) @display_name = args[:display_name] if args.key?(:display_name) @labels = args[:labels] if args.key?(:labels) @launch_stage = args[:launch_stage] if args.key?(:launch_stage) @name = args[:name] if args.key?(:name) @type = args[:type] if args.key?(:type) end end # A protocol buffer option, which can be attached to a message, field, # enumeration, etc. class Option include Google::Apis::Core::Hashable # The option's name. For protobuf built-in options (options defined in # descriptor.proto), this is the short name. For example, "map_entry". For # custom options, it should be the fully-qualified name. For example, "google. # api.http". # Corresponds to the JSON property `name` # @return [String] attr_accessor :name # The option's value packed in an Any message. If the value is a primitive, the # corresponding wrapper type defined in google/protobuf/wrappers.proto should be # used. If the value is an enum, it should be stored as an int32 value using the # google.protobuf.Int32Value type. # Corresponds to the JSON property `value` # @return [Hash] attr_accessor :value def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @name = args[:name] if args.key?(:name) @value = args[:value] if args.key?(:value) end end # A PerformanceThreshold is used when each window is good when that window has a # sufficiently high performance. class PerformanceThreshold include Google::Apis::Core::Hashable # An SLI measuring performance on a well-known service type. Performance will be # computed on the basis of pre-defined metrics. The type of the service_resource # determines the metrics to use and the service_resource.labels and # metric_labels are used to construct a monitoring filter to filter that metric # down to just the data relevant to this service. # Corresponds to the JSON property `basicSliPerformance` # @return [Google::Apis::MonitoringV3::BasicSli] attr_accessor :basic_sli_performance # Service Level Indicators for which atomic units of service are counted # directly. # Corresponds to the JSON property `performance` # @return [Google::Apis::MonitoringV3::RequestBasedSli] attr_accessor :performance # If window performance >= threshold, the window is counted as good. # Corresponds to the JSON property `threshold` # @return [Float] attr_accessor :threshold def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @basic_sli_performance = args[:basic_sli_performance] if args.key?(:basic_sli_performance) @performance = args[:performance] if args.key?(:performance) @threshold = args[:threshold] if args.key?(:threshold) end end # A single data point in a time series. class Point include Google::Apis::Core::Hashable # A closed time interval. It extends from the start time to the end time, and # includes both: [startTime, endTime]. Valid time intervals depend on the # MetricKind of the metric value. In no case can the end time be earlier than # the start time. # For a GAUGE metric, the startTime value is technically optional; if no value # is specified, the start time defaults to the value of the end time, and the # interval represents a single point in time. If both start and end times are # specified, they must be identical. Such an interval is valid only for GAUGE # metrics, which are point-in-time measurements. # For DELTA and CUMULATIVE metrics, the start time must be earlier than the end # time. # In all cases, the start time of the next interval must be at least a # millisecond after the end time of the previous interval. Because the interval # is closed, if the start time of a new interval is the same as the end time of # the previous interval, data written at the new start time could overwrite # data written at the previous end time. # Corresponds to the JSON property `interval` # @return [Google::Apis::MonitoringV3::TimeInterval] attr_accessor :interval # A single strongly-typed value. # Corresponds to the JSON property `value` # @return [Google::Apis::MonitoringV3::TypedValue] attr_accessor :value def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @interval = args[:interval] if args.key?(:interval) @value = args[:value] if args.key?(:value) end end # A point's value columns and time interval. Each point has one or more point # values corresponding to the entries in point_descriptors field in the # TimeSeriesDescriptor associated with this object. class PointData include Google::Apis::Core::Hashable # A closed time interval. It extends from the start time to the end time, and # includes both: [startTime, endTime]. Valid time intervals depend on the # MetricKind of the metric value. In no case can the end time be earlier than # the start time. # For a GAUGE metric, the startTime value is technically optional; if no value # is specified, the start time defaults to the value of the end time, and the # interval represents a single point in time. If both start and end times are # specified, they must be identical. Such an interval is valid only for GAUGE # metrics, which are point-in-time measurements. # For DELTA and CUMULATIVE metrics, the start time must be earlier than the end # time. # In all cases, the start time of the next interval must be at least a # millisecond after the end time of the previous interval. Because the interval # is closed, if the start time of a new interval is the same as the end time of # the previous interval, data written at the new start time could overwrite # data written at the previous end time. # Corresponds to the JSON property `timeInterval` # @return [Google::Apis::MonitoringV3::TimeInterval] attr_accessor :time_interval # The values that make up the point. # Corresponds to the JSON property `values` # @return [Array] attr_accessor :values def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @time_interval = args[:time_interval] if args.key?(:time_interval) @values = args[:values] if args.key?(:values) end end # The QueryTimeSeries request. class QueryTimeSeriesRequest include Google::Apis::Core::Hashable # A positive number that is the maximum number of time_series_data to return. # Corresponds to the JSON property `pageSize` # @return [Fixnum] attr_accessor :page_size # If this field is not empty then it must contain the nextPageToken value # returned by a previous call to this method. Using this field causes the method # to return additional results from the previous method call. # Corresponds to the JSON property `pageToken` # @return [String] attr_accessor :page_token # Required. The query in the monitoring query language format. The default time # zone is in UTC. # Corresponds to the JSON property `query` # @return [String] attr_accessor :query def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @page_size = args[:page_size] if args.key?(:page_size) @page_token = args[:page_token] if args.key?(:page_token) @query = args[:query] if args.key?(:query) end end # The QueryTimeSeries response. class QueryTimeSeriesResponse include Google::Apis::Core::Hashable # If there are more results than have been returned, then this field is set to a # non-empty value. To see the additional results, use that value as page_token # in the next call to this method. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # Query execution errors that may have caused the time series data returned to # be incomplete. The available data will be available in the response. # Corresponds to the JSON property `partialErrors` # @return [Array] attr_accessor :partial_errors # The time series data. # Corresponds to the JSON property `timeSeriesData` # @return [Array] attr_accessor :time_series_data # A descriptor for the labels and points in a timeseries. # Corresponds to the JSON property `timeSeriesDescriptor` # @return [Google::Apis::MonitoringV3::TimeSeriesDescriptor] attr_accessor :time_series_descriptor def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @partial_errors = args[:partial_errors] if args.key?(:partial_errors) @time_series_data = args[:time_series_data] if args.key?(:time_series_data) @time_series_descriptor = args[:time_series_descriptor] if args.key?(:time_series_descriptor) end end # The range of the population values. class Range include Google::Apis::Core::Hashable # The maximum of the population values. # Corresponds to the JSON property `max` # @return [Float] attr_accessor :max # The minimum of the population values. # Corresponds to the JSON property `min` # @return [Float] attr_accessor :min def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @max = args[:max] if args.key?(:max) @min = args[:min] if args.key?(:min) end end # Service Level Indicators for which atomic units of service are counted # directly. class RequestBasedSli include Google::Apis::Core::Hashable # A DistributionCut defines a TimeSeries and thresholds used for measuring good # service and total service. The TimeSeries must have ValueType = # DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE. The computed # good_service will be the count of values x in the Distribution such that range. # min <= x < range.max. # Corresponds to the JSON property `distributionCut` # @return [Google::Apis::MonitoringV3::DistributionCut] attr_accessor :distribution_cut # A TimeSeriesRatio specifies two TimeSeries to use for computing the # good_service / total_service ratio. The specified TimeSeries must have # ValueType = DOUBLE or ValueType = INT64 and must have MetricKind = # DELTA or MetricKind = CUMULATIVE. The TimeSeriesRatio must specify exactly two # of good, bad, and total, and the relationship good_service + # bad_service = total_service will be assumed. # Corresponds to the JSON property `goodTotalRatio` # @return [Google::Apis::MonitoringV3::TimeSeriesRatio] attr_accessor :good_total_ratio def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @distribution_cut = args[:distribution_cut] if args.key?(:distribution_cut) @good_total_ratio = args[:good_total_ratio] if args.key?(:good_total_ratio) end end # The resource submessage for group checks. It can be used instead of a # monitored resource, when multiple resources are being monitored. class ResourceGroup include Google::Apis::Core::Hashable # The group of resources being monitored. Should be only the [GROUP_ID], and not # the full-path projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID]. # Corresponds to the JSON property `groupId` # @return [String] attr_accessor :group_id # The resource type of the group members. # Corresponds to the JSON property `resourceType` # @return [String] attr_accessor :resource_type def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @group_id = args[:group_id] if args.key?(:group_id) @resource_type = args[:resource_type] if args.key?(:resource_type) end end # The SendNotificationChannelVerificationCode request. class SendNotificationChannelVerificationCodeRequest include Google::Apis::Core::Hashable def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) end end # A Service is a discrete, autonomous, and network-accessible unit, designed to # solve an individual concern (Wikipedia (https://en.wikipedia.org/wiki/Service- # orientation)). In Cloud Monitoring, a Service acts as the root resource under # which operational aspects of the service are accessible. class Service include Google::Apis::Core::Hashable # App Engine service. Learn more at https://cloud.google.com/appengine. # Corresponds to the JSON property `appEngine` # @return [Google::Apis::MonitoringV3::AppEngine] attr_accessor :app_engine # Cloud Endpoints service. Learn more at https://cloud.google.com/endpoints. # Corresponds to the JSON property `cloudEndpoints` # @return [Google::Apis::MonitoringV3::CloudEndpoints] attr_accessor :cloud_endpoints # Istio service scoped to a single Kubernetes cluster. Learn more at http:// # istio.io. # Corresponds to the JSON property `clusterIstio` # @return [Google::Apis::MonitoringV3::ClusterIstio] attr_accessor :cluster_istio # Custom view of service telemetry. Currently a place-holder pending final # design. # Corresponds to the JSON property `custom` # @return [Google::Apis::MonitoringV3::Custom] attr_accessor :custom # Name used for UI elements listing this Service. # Corresponds to the JSON property `displayName` # @return [String] attr_accessor :display_name # Istio service scoped to an Istio mesh # Corresponds to the JSON property `meshIstio` # @return [Google::Apis::MonitoringV3::MeshIstio] attr_accessor :mesh_istio # Resource name for this Service. The format is: # projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID] # Corresponds to the JSON property `name` # @return [String] attr_accessor :name # Configuration for how to query telemetry on a Service. # Corresponds to the JSON property `telemetry` # @return [Google::Apis::MonitoringV3::Telemetry] attr_accessor :telemetry def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @app_engine = args[:app_engine] if args.key?(:app_engine) @cloud_endpoints = args[:cloud_endpoints] if args.key?(:cloud_endpoints) @cluster_istio = args[:cluster_istio] if args.key?(:cluster_istio) @custom = args[:custom] if args.key?(:custom) @display_name = args[:display_name] if args.key?(:display_name) @mesh_istio = args[:mesh_istio] if args.key?(:mesh_istio) @name = args[:name] if args.key?(:name) @telemetry = args[:telemetry] if args.key?(:telemetry) end end # A Service-Level Indicator (SLI) describes the "performance" of a service. For # some services, the SLI is well-defined. In such cases, the SLI can be # described easily by referencing the well-known SLI and providing the needed # parameters. Alternatively, a "custom" SLI can be defined with a query to the # underlying metric store. An SLI is defined to be good_service / # total_service over any queried time interval. The value of performance always # falls into the range 0 <= performance <= 1. A custom SLI describes how to # compute this ratio, whether this is by dividing values from a pair of time # series, cutting a Distribution into good and bad counts, or counting time # windows in which the service complies with a criterion. For separation of # concerns, a single Service-Level Indicator measures performance for only one # aspect of service quality, such as fraction of successful queries or fast- # enough queries. class ServiceLevelIndicator include Google::Apis::Core::Hashable # An SLI measuring performance on a well-known service type. Performance will be # computed on the basis of pre-defined metrics. The type of the service_resource # determines the metrics to use and the service_resource.labels and # metric_labels are used to construct a monitoring filter to filter that metric # down to just the data relevant to this service. # Corresponds to the JSON property `basicSli` # @return [Google::Apis::MonitoringV3::BasicSli] attr_accessor :basic_sli # Service Level Indicators for which atomic units of service are counted # directly. # Corresponds to the JSON property `requestBased` # @return [Google::Apis::MonitoringV3::RequestBasedSli] attr_accessor :request_based # A WindowsBasedSli defines good_service as the count of time windows for which # the provided service was of good quality. Criteria for determining if service # was good are embedded in the window_criterion. # Corresponds to the JSON property `windowsBased` # @return [Google::Apis::MonitoringV3::WindowsBasedSli] attr_accessor :windows_based def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @basic_sli = args[:basic_sli] if args.key?(:basic_sli) @request_based = args[:request_based] if args.key?(:request_based) @windows_based = args[:windows_based] if args.key?(:windows_based) end end # A Service-Level Objective (SLO) describes a level of desired good service. It # consists of a service-level indicator (SLI), a performance goal, and a period # over which the objective is to be evaluated against that goal. The SLO can use # SLIs defined in a number of different manners. Typical SLOs might include "99% # of requests in each rolling week have latency below 200 milliseconds" or "99.5% # of requests in each calendar month return successfully." class ServiceLevelObjective include Google::Apis::Core::Hashable # A calendar period, semantically "since the start of the current < # calendar_period>". At this time, only DAY, WEEK, FORTNIGHT, and MONTH are # supported. # Corresponds to the JSON property `calendarPeriod` # @return [String] attr_accessor :calendar_period # Name used for UI elements listing this SLO. # Corresponds to the JSON property `displayName` # @return [String] attr_accessor :display_name # The fraction of service that must be good in order for this objective to be # met. 0 < goal <= 0.999. # Corresponds to the JSON property `goal` # @return [Float] attr_accessor :goal # Resource name for this ServiceLevelObjective. The format is: # projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]/serviceLevelObjectives/[ # SLO_NAME] # Corresponds to the JSON property `name` # @return [String] attr_accessor :name # A rolling time period, semantically "in the past ". Must be an # integer multiple of 1 day no larger than 30 days. # Corresponds to the JSON property `rollingPeriod` # @return [String] attr_accessor :rolling_period # A Service-Level Indicator (SLI) describes the "performance" of a service. For # some services, the SLI is well-defined. In such cases, the SLI can be # described easily by referencing the well-known SLI and providing the needed # parameters. Alternatively, a "custom" SLI can be defined with a query to the # underlying metric store. An SLI is defined to be good_service / # total_service over any queried time interval. The value of performance always # falls into the range 0 <= performance <= 1. A custom SLI describes how to # compute this ratio, whether this is by dividing values from a pair of time # series, cutting a Distribution into good and bad counts, or counting time # windows in which the service complies with a criterion. For separation of # concerns, a single Service-Level Indicator measures performance for only one # aspect of service quality, such as fraction of successful queries or fast- # enough queries. # Corresponds to the JSON property `serviceLevelIndicator` # @return [Google::Apis::MonitoringV3::ServiceLevelIndicator] attr_accessor :service_level_indicator def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @calendar_period = args[:calendar_period] if args.key?(:calendar_period) @display_name = args[:display_name] if args.key?(:display_name) @goal = args[:goal] if args.key?(:goal) @name = args[:name] if args.key?(:name) @rolling_period = args[:rolling_period] if args.key?(:rolling_period) @service_level_indicator = args[:service_level_indicator] if args.key?(:service_level_indicator) end end # SourceContext represents information about the source of a protobuf element, # like the file in which it is defined. class SourceContext include Google::Apis::Core::Hashable # The path-qualified name of the .proto file that contained the associated # protobuf element. For example: "google/protobuf/source_context.proto". # Corresponds to the JSON property `fileName` # @return [String] attr_accessor :file_name def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @file_name = args[:file_name] if args.key?(:file_name) end end # The context of a span, attached to Exemplars in Distribution values during # aggregation.It contains the name of a span with format: # projects/[PROJECT_ID_OR_NUMBER]/traces/[TRACE_ID]/spans/[SPAN_ID] class SpanContext include Google::Apis::Core::Hashable # The resource name of the span. The format is: # projects/[PROJECT_ID_OR_NUMBER]/traces/[TRACE_ID]/spans/[SPAN_ID] # [TRACE_ID] is a unique identifier for a trace within a project; it is a 32- # character hexadecimal encoding of a 16-byte array.[SPAN_ID] is a unique # identifier for a span within a trace; it is a 16-character hexadecimal # encoding of an 8-byte array. # Corresponds to the JSON property `spanName` # @return [String] attr_accessor :span_name def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @span_name = args[:span_name] if args.key?(:span_name) end end # The Status type defines a logical error model that is suitable for different # programming environments, including REST APIs and RPC APIs. It is used by gRPC # (https://github.com/grpc). Each Status message contains three pieces of data: # error code, error message, and error details.You can find out more about this # error model and how to work with it in the API Design Guide (https://cloud. # google.com/apis/design/errors). class Status include Google::Apis::Core::Hashable # The status code, which should be an enum value of google.rpc.Code. # Corresponds to the JSON property `code` # @return [Fixnum] attr_accessor :code # A list of messages that carry the error details. There is a common set of # message types for APIs to use. # Corresponds to the JSON property `details` # @return [Array>] attr_accessor :details # A developer-facing error message, which should be in English. Any user-facing # error message should be localized and sent in the google.rpc.Status.details # field, or localized by the client. # Corresponds to the JSON property `message` # @return [String] attr_accessor :message def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @code = args[:code] if args.key?(:code) @details = args[:details] if args.key?(:details) @message = args[:message] if args.key?(:message) end end # Information required for a TCP Uptime check request. class TcpCheck include Google::Apis::Core::Hashable # The TCP port on the server against which to run the check. Will be combined # with host (specified within the monitored_resource) to construct the full URL. # Required. # Corresponds to the JSON property `port` # @return [Fixnum] attr_accessor :port def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @port = args[:port] if args.key?(:port) end end # Configuration for how to query telemetry on a Service. class Telemetry include Google::Apis::Core::Hashable # The full name of the resource that defines this service. Formatted as # described in https://cloud.google.com/apis/design/resource_names. # Corresponds to the JSON property `resourceName` # @return [String] attr_accessor :resource_name def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @resource_name = args[:resource_name] if args.key?(:resource_name) end end # A closed time interval. It extends from the start time to the end time, and # includes both: [startTime, endTime]. Valid time intervals depend on the # MetricKind of the metric value. In no case can the end time be earlier than # the start time. # For a GAUGE metric, the startTime value is technically optional; if no value # is specified, the start time defaults to the value of the end time, and the # interval represents a single point in time. If both start and end times are # specified, they must be identical. Such an interval is valid only for GAUGE # metrics, which are point-in-time measurements. # For DELTA and CUMULATIVE metrics, the start time must be earlier than the end # time. # In all cases, the start time of the next interval must be at least a # millisecond after the end time of the previous interval. Because the interval # is closed, if the start time of a new interval is the same as the end time of # the previous interval, data written at the new start time could overwrite # data written at the previous end time. class TimeInterval include Google::Apis::Core::Hashable # Required. The end of the time interval. # Corresponds to the JSON property `endTime` # @return [String] attr_accessor :end_time # 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. # Corresponds to the JSON property `startTime` # @return [String] attr_accessor :start_time def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @end_time = args[:end_time] if args.key?(:end_time) @start_time = args[:start_time] if args.key?(:start_time) end end # A collection of data points that describes the time-varying values of a metric. # A time series is identified by a combination of a fully-specified monitored # resource and a fully-specified metric. This type is used for both listing and # creating time series. class TimeSeries include Google::Apis::Core::Hashable # Auxiliary metadata for a MonitoredResource object. MonitoredResource objects # contain the minimum set of information to uniquely identify a monitored # resource instance. There is some other useful auxiliary metadata. Monitoring # and Logging use an ingestion pipeline to extract metadata for cloud resources # of all types, and store the metadata in this message. # Corresponds to the JSON property `metadata` # @return [Google::Apis::MonitoringV3::MonitoredResourceMetadata] attr_accessor :metadata # A specific metric, identified by specifying values for all of the labels of a # MetricDescriptor. # Corresponds to the JSON property `metric` # @return [Google::Apis::MonitoringV3::Metric] attr_accessor :metric # The metric kind of the time series. When listing time series, this metric kind # might be different from the metric kind of the associated metric if this time # series is an alignment or reduction of other time series.When creating a time # series, this field is optional. If present, it must be the same as the metric # kind of the associated metric. If the associated metric's descriptor must be # auto-created, then this field specifies the metric kind of the new descriptor # and must be either GAUGE (the default) or CUMULATIVE. # Corresponds to the JSON property `metricKind` # @return [String] attr_accessor :metric_kind # The data points of this time series. When listing time series, points are # returned in reverse time order.When creating a time series, this field must # contain exactly one point and the point's type must be the same as the value # type of the associated metric. If the associated metric's descriptor must be # auto-created, then the value type of the descriptor is determined by the point' # s type, which must be BOOL, INT64, DOUBLE, or DISTRIBUTION. # Corresponds to the JSON property `points` # @return [Array] attr_accessor :points # An object representing a resource that can be used for monitoring, logging, # billing, or other purposes. Examples include virtual machine instances, # databases, and storage devices such as disks. The type field identifies a # MonitoredResourceDescriptor object that describes the resource's schema. # Information in the labels field identifies the actual resource and its # attributes according to the schema. For example, a particular Compute Engine # VM instance could be represented by the following object, because the # MonitoredResourceDescriptor for "gce_instance" has labels "instance_id" and " # zone": # ` "type": "gce_instance", # "labels": ` "instance_id": "12345678901234", # "zone": "us-central1-a" `` # Corresponds to the JSON property `resource` # @return [Google::Apis::MonitoringV3::MonitoredResource] attr_accessor :resource # The value type of the time series. When listing time series, this value type # might be different from the value type of the associated metric if this time # series is an alignment or reduction of other time series.When creating a time # series, this field is optional. If present, it must be the same as the type of # the data in the points field. # Corresponds to the JSON property `valueType` # @return [String] attr_accessor :value_type def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @metadata = args[:metadata] if args.key?(:metadata) @metric = args[:metric] if args.key?(:metric) @metric_kind = args[:metric_kind] if args.key?(:metric_kind) @points = args[:points] if args.key?(:points) @resource = args[:resource] if args.key?(:resource) @value_type = args[:value_type] if args.key?(:value_type) end end # Represents the values of a time series associated with a TimeSeriesDescriptor. class TimeSeriesData include Google::Apis::Core::Hashable # The values of the labels in the time series identifier, given in the same # order as the label_descriptors field of the TimeSeriesDescriptor associated # with this object. Each value must have a value of the type given in the # corresponding entry of label_descriptors. # Corresponds to the JSON property `labelValues` # @return [Array] attr_accessor :label_values # The points in the time series. # Corresponds to the JSON property `pointData` # @return [Array] attr_accessor :point_data def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @label_values = args[:label_values] if args.key?(:label_values) @point_data = args[:point_data] if args.key?(:point_data) end end # A descriptor for the labels and points in a timeseries. class TimeSeriesDescriptor include Google::Apis::Core::Hashable # Descriptors for the labels. # Corresponds to the JSON property `labelDescriptors` # @return [Array] attr_accessor :label_descriptors # Descriptors for the point data value columns. # Corresponds to the JSON property `pointDescriptors` # @return [Array] attr_accessor :point_descriptors def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @label_descriptors = args[:label_descriptors] if args.key?(:label_descriptors) @point_descriptors = args[:point_descriptors] if args.key?(:point_descriptors) end end # A TimeSeriesRatio specifies two TimeSeries to use for computing the # good_service / total_service ratio. The specified TimeSeries must have # ValueType = DOUBLE or ValueType = INT64 and must have MetricKind = # DELTA or MetricKind = CUMULATIVE. The TimeSeriesRatio must specify exactly two # of good, bad, and total, and the relationship good_service + # bad_service = total_service will be assumed. class TimeSeriesRatio include Google::Apis::Core::Hashable # A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) # specifying a TimeSeries quantifying bad service, either demanded service that # was not provided or demanded service that was of inadequate quality. Must have # ValueType = DOUBLE or ValueType = INT64 and must have MetricKind = DELTA or # MetricKind = CUMULATIVE. # Corresponds to the JSON property `badServiceFilter` # @return [String] attr_accessor :bad_service_filter # A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) # specifying a TimeSeries quantifying good service provided. Must have ValueType # = DOUBLE or ValueType = INT64 and must have MetricKind = # DELTA or MetricKind = CUMULATIVE. # Corresponds to the JSON property `goodServiceFilter` # @return [String] attr_accessor :good_service_filter # A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) # specifying a TimeSeries quantifying total demanded service. Must have # ValueType = DOUBLE or ValueType = INT64 and must have MetricKind = # DELTA or MetricKind = CUMULATIVE. # Corresponds to the JSON property `totalServiceFilter` # @return [String] attr_accessor :total_service_filter def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @bad_service_filter = args[:bad_service_filter] if args.key?(:bad_service_filter) @good_service_filter = args[:good_service_filter] if args.key?(:good_service_filter) @total_service_filter = args[:total_service_filter] if args.key?(:total_service_filter) end end # Specifies how many time series must fail a predicate to trigger a condition. # If not specified, then a `count: 1` trigger is used. class Trigger include Google::Apis::Core::Hashable # The absolute number of time series that must fail the predicate for the # condition to be triggered. # Corresponds to the JSON property `count` # @return [Fixnum] attr_accessor :count # The percentage of time series that must fail the predicate for the condition # to be triggered. # Corresponds to the JSON property `percent` # @return [Float] attr_accessor :percent def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @count = args[:count] if args.key?(:count) @percent = args[:percent] if args.key?(:percent) end end # A protocol buffer message type. class Type include Google::Apis::Core::Hashable # The list of fields. # Corresponds to the JSON property `fields` # @return [Array] attr_accessor :fields # The fully qualified message name. # Corresponds to the JSON property `name` # @return [String] attr_accessor :name # The list of types appearing in oneof definitions in this type. # Corresponds to the JSON property `oneofs` # @return [Array] attr_accessor :oneofs # The protocol buffer options. # Corresponds to the JSON property `options` # @return [Array] attr_accessor :options # SourceContext represents information about the source of a protobuf element, # like the file in which it is defined. # Corresponds to the JSON property `sourceContext` # @return [Google::Apis::MonitoringV3::SourceContext] attr_accessor :source_context # The source syntax. # Corresponds to the JSON property `syntax` # @return [String] attr_accessor :syntax def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @fields = args[:fields] if args.key?(:fields) @name = args[:name] if args.key?(:name) @oneofs = args[:oneofs] if args.key?(:oneofs) @options = args[:options] if args.key?(:options) @source_context = args[:source_context] if args.key?(:source_context) @syntax = args[:syntax] if args.key?(:syntax) end end # A single strongly-typed value. class TypedValue include Google::Apis::Core::Hashable # A Boolean value: true or false. # Corresponds to the JSON property `boolValue` # @return [Boolean] attr_accessor :bool_value alias_method :bool_value?, :bool_value # Distribution contains summary statistics for a population of values. It # optionally contains a histogram representing the distribution of those values # across a set of buckets.The summary statistics are the count, mean, sum of the # squared deviation from the mean, the minimum, and the maximum of the set of # population of values. The histogram is based on a sequence of buckets and # gives a count of values that fall into each bucket. The boundaries of the # buckets are given either explicitly or by formulas for buckets of fixed or # exponentially increasing widths.Although it is not forbidden, it is generally # a bad idea to include non-finite values (infinities or NaNs) in the population # of values, as this will render the mean and sum_of_squared_deviation fields # meaningless. # Corresponds to the JSON property `distributionValue` # @return [Google::Apis::MonitoringV3::Distribution] attr_accessor :distribution_value # A 64-bit double-precision floating-point number. Its magnitude is # approximately ±10±300 and it has 16 significant # digits of precision. # Corresponds to the JSON property `doubleValue` # @return [Float] attr_accessor :double_value # A 64-bit integer. Its range is approximately ±9.2x1018. # Corresponds to the JSON property `int64Value` # @return [Fixnum] attr_accessor :int64_value # A variable-length string value. # Corresponds to the JSON property `stringValue` # @return [String] attr_accessor :string_value def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @bool_value = args[:bool_value] if args.key?(:bool_value) @distribution_value = args[:distribution_value] if args.key?(:distribution_value) @double_value = args[:double_value] if args.key?(:double_value) @int64_value = args[:int64_value] if args.key?(:int64_value) @string_value = args[:string_value] if args.key?(:string_value) end end # This message configures which resources and services to monitor for # availability. class UptimeCheckConfig include Google::Apis::Core::Hashable # The content that is expected to appear in the data returned by the target # server against which the check is run. Currently, only the first entry in the # content_matchers list is supported, and additional entries will be ignored. # This field is optional and should only be specified if a content match is # required as part of the/ Uptime check. # Corresponds to the JSON property `contentMatchers` # @return [Array] attr_accessor :content_matchers # A human-friendly name for the Uptime check configuration. The display name # should be unique within a Stackdriver Workspace in order to make it easier to # identify; however, uniqueness is not enforced. Required. # Corresponds to the JSON property `displayName` # @return [String] attr_accessor :display_name # Information involved in an HTTP/HTTPS Uptime check request. # Corresponds to the JSON property `httpCheck` # @return [Google::Apis::MonitoringV3::HttpCheck] attr_accessor :http_check # The internal checkers that this check will egress from. If is_internal is true # and this list is empty, the check will egress from all the InternalCheckers # configured for the project that owns this UptimeCheckConfig. # Corresponds to the JSON property `internalCheckers` # @return [Array] attr_accessor :internal_checkers # If this is true, then checks are made only from the 'internal_checkers'. If it # is false, then checks are made only from the 'selected_regions'. It is an # error to provide 'selected_regions' when is_internal is true, or to provide ' # internal_checkers' when is_internal is false. # Corresponds to the JSON property `isInternal` # @return [Boolean] attr_accessor :is_internal alias_method :is_internal?, :is_internal # An object representing a resource that can be used for monitoring, logging, # billing, or other purposes. Examples include virtual machine instances, # databases, and storage devices such as disks. The type field identifies a # MonitoredResourceDescriptor object that describes the resource's schema. # Information in the labels field identifies the actual resource and its # attributes according to the schema. For example, a particular Compute Engine # VM instance could be represented by the following object, because the # MonitoredResourceDescriptor for "gce_instance" has labels "instance_id" and " # zone": # ` "type": "gce_instance", # "labels": ` "instance_id": "12345678901234", # "zone": "us-central1-a" `` # Corresponds to the JSON property `monitoredResource` # @return [Google::Apis::MonitoringV3::MonitoredResource] attr_accessor :monitored_resource # A unique resource name for this Uptime check configuration. The format is: # projects/[PROJECT_ID_OR_NUMBER]/uptimeCheckConfigs/[UPTIME_CHECK_ID] # This field should be omitted when creating the Uptime check configuration; on # create, the resource name is assigned by the server and included in the # response. # Corresponds to the JSON property `name` # @return [String] attr_accessor :name # How often, in seconds, the Uptime check is performed. Currently, the only # supported values are 60s (1 minute), 300s (5 minutes), 600s (10 minutes), and # 900s (15 minutes). Optional, defaults to 60s. # Corresponds to the JSON property `period` # @return [String] attr_accessor :period # The resource submessage for group checks. It can be used instead of a # monitored resource, when multiple resources are being monitored. # Corresponds to the JSON property `resourceGroup` # @return [Google::Apis::MonitoringV3::ResourceGroup] attr_accessor :resource_group # The list of regions from which the check will be run. Some regions contain one # location, and others contain more than one. If this field is specified, enough # regions must be provided to include a minimum of 3 locations. Not specifying # this field will result in Uptime checks running from all available regions. # Corresponds to the JSON property `selectedRegions` # @return [Array] attr_accessor :selected_regions # Information required for a TCP Uptime check request. # Corresponds to the JSON property `tcpCheck` # @return [Google::Apis::MonitoringV3::TcpCheck] attr_accessor :tcp_check # The maximum amount of time to wait for the request to complete (must be # between 1 and 60 seconds). Required. # Corresponds to the JSON property `timeout` # @return [String] attr_accessor :timeout def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @content_matchers = args[:content_matchers] if args.key?(:content_matchers) @display_name = args[:display_name] if args.key?(:display_name) @http_check = args[:http_check] if args.key?(:http_check) @internal_checkers = args[:internal_checkers] if args.key?(:internal_checkers) @is_internal = args[:is_internal] if args.key?(:is_internal) @monitored_resource = args[:monitored_resource] if args.key?(:monitored_resource) @name = args[:name] if args.key?(:name) @period = args[:period] if args.key?(:period) @resource_group = args[:resource_group] if args.key?(:resource_group) @selected_regions = args[:selected_regions] if args.key?(:selected_regions) @tcp_check = args[:tcp_check] if args.key?(:tcp_check) @timeout = args[:timeout] if args.key?(:timeout) end end # Contains the region, location, and list of IP addresses where checkers in the # location run from. class UptimeCheckIp include Google::Apis::Core::Hashable # The IP address from which the Uptime check originates. This is a fully # specified IP address (not an IP address range). Most IP addresses, as of this # publication, are in IPv4 format; however, one should not rely on the IP # addresses being in IPv4 format indefinitely, and should support interpreting # this field in either IPv4 or IPv6 format. # Corresponds to the JSON property `ipAddress` # @return [String] attr_accessor :ip_address # A more specific location within the region that typically encodes a particular # city/town/metro (and its containing state/province or country) within the # broader umbrella region category. # Corresponds to the JSON property `location` # @return [String] attr_accessor :location # A broad region category in which the IP address is located. # Corresponds to the JSON property `region` # @return [String] attr_accessor :region def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @ip_address = args[:ip_address] if args.key?(:ip_address) @location = args[:location] if args.key?(:location) @region = args[:region] if args.key?(:region) end end # A descriptor for the value columns in a data point. class ValueDescriptor include Google::Apis::Core::Hashable # The value key. # Corresponds to the JSON property `key` # @return [String] attr_accessor :key # The value stream kind. # Corresponds to the JSON property `metricKind` # @return [String] attr_accessor :metric_kind # The value type. # Corresponds to the JSON property `valueType` # @return [String] attr_accessor :value_type def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @key = args[:key] if args.key?(:key) @metric_kind = args[:metric_kind] if args.key?(:metric_kind) @value_type = args[:value_type] if args.key?(:value_type) end end # The VerifyNotificationChannel request. class VerifyNotificationChannelRequest include Google::Apis::Core::Hashable # Required. The verification code that was delivered to the channel as a result # of invoking the SendNotificationChannelVerificationCode API method or that was # retrieved from a verified channel via GetNotificationChannelVerificationCode. # For example, one might have "G-123456" or "TKNZGhhd2EyN3I1MnRnMjRv" (in # general, one is only guaranteed that the code is valid UTF-8; one should not # make any assumptions regarding the structure or format of the code). # Corresponds to the JSON property `code` # @return [String] attr_accessor :code def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @code = args[:code] if args.key?(:code) end end # A WindowsBasedSli defines good_service as the count of time windows for which # the provided service was of good quality. Criteria for determining if service # was good are embedded in the window_criterion. class WindowsBasedSli include Google::Apis::Core::Hashable # A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) # specifying a TimeSeries with ValueType = BOOL. The window is good if any true # values appear in the window. # Corresponds to the JSON property `goodBadMetricFilter` # @return [String] attr_accessor :good_bad_metric_filter # A PerformanceThreshold is used when each window is good when that window has a # sufficiently high performance. # Corresponds to the JSON property `goodTotalRatioThreshold` # @return [Google::Apis::MonitoringV3::PerformanceThreshold] attr_accessor :good_total_ratio_threshold # A MetricRange is used when each window is good when the value x of a single # TimeSeries satisfies range.min <= x < range.max. The provided TimeSeries must # have ValueType = INT64 or ValueType = DOUBLE and MetricKind = GAUGE. # Corresponds to the JSON property `metricMeanInRange` # @return [Google::Apis::MonitoringV3::MetricRange] attr_accessor :metric_mean_in_range # A MetricRange is used when each window is good when the value x of a single # TimeSeries satisfies range.min <= x < range.max. The provided TimeSeries must # have ValueType = INT64 or ValueType = DOUBLE and MetricKind = GAUGE. # Corresponds to the JSON property `metricSumInRange` # @return [Google::Apis::MonitoringV3::MetricRange] attr_accessor :metric_sum_in_range # Duration over which window quality is evaluated. Must be an integer fraction # of a day and at least 60s. # Corresponds to the JSON property `windowPeriod` # @return [String] attr_accessor :window_period def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @good_bad_metric_filter = args[:good_bad_metric_filter] if args.key?(:good_bad_metric_filter) @good_total_ratio_threshold = args[:good_total_ratio_threshold] if args.key?(:good_total_ratio_threshold) @metric_mean_in_range = args[:metric_mean_in_range] if args.key?(:metric_mean_in_range) @metric_sum_in_range = args[:metric_sum_in_range] if args.key?(:metric_sum_in_range) @window_period = args[:window_period] if args.key?(:window_period) end end end end end