Initial commit
This commit is contained in:
+441
@@ -0,0 +1,441 @@
|
||||
// Copyright 2021 Google LLC
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// 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.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.monitoring.v3;
|
||||
|
||||
import "google/api/field_behavior.proto";
|
||||
import "google/api/resource.proto";
|
||||
import "google/monitoring/v3/common.proto";
|
||||
import "google/monitoring/v3/mutation_record.proto";
|
||||
import "google/protobuf/duration.proto";
|
||||
import "google/protobuf/wrappers.proto";
|
||||
import "google/rpc/status.proto";
|
||||
|
||||
option csharp_namespace = "Google.Cloud.Monitoring.V3";
|
||||
option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "AlertProto";
|
||||
option java_package = "com.google.monitoring.v3";
|
||||
option php_namespace = "Google\\Cloud\\Monitoring\\V3";
|
||||
option ruby_package = "Google::Cloud::Monitoring::V3";
|
||||
|
||||
// A description of the conditions under which some aspect of your system is
|
||||
// considered to be "unhealthy" and the ways to notify people or services about
|
||||
// this state. For an overview of alert policies, see
|
||||
// [Introduction to Alerting](https://cloud.google.com/monitoring/alerts/).
|
||||
message AlertPolicy {
|
||||
option (google.api.resource) = {
|
||||
type: "monitoring.googleapis.com/AlertPolicy"
|
||||
pattern: "projects/{project}/alertPolicies/{alert_policy}"
|
||||
pattern: "organizations/{organization}/alertPolicies/{alert_policy}"
|
||||
pattern: "folders/{folder}/alertPolicies/{alert_policy}"
|
||||
pattern: "*"
|
||||
};
|
||||
|
||||
// A content string and a MIME type that describes the content string's
|
||||
// format.
|
||||
message Documentation {
|
||||
// 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.
|
||||
string content = 1;
|
||||
|
||||
// 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.
|
||||
string mime_type = 2;
|
||||
}
|
||||
|
||||
// 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.
|
||||
message Condition {
|
||||
option (google.api.resource) = {
|
||||
type: "monitoring.googleapis.com/AlertPolicyCondition"
|
||||
pattern: "projects/{project}/alertPolicies/{alert_policy}/conditions/{condition}"
|
||||
pattern: "organizations/{organization}/alertPolicies/{alert_policy}/conditions/{condition}"
|
||||
pattern: "folders/{folder}/alertPolicies/{alert_policy}/conditions/{condition}"
|
||||
pattern: "*"
|
||||
};
|
||||
|
||||
// Specifies how many time series must fail a predicate to trigger a
|
||||
// condition. If not specified, then a `{count: 1}` trigger is used.
|
||||
message Trigger {
|
||||
// A type of trigger.
|
||||
oneof type {
|
||||
// The absolute number of time series that must fail
|
||||
// the predicate for the condition to be triggered.
|
||||
int32 count = 1;
|
||||
|
||||
// The percentage of time series that must fail the
|
||||
// predicate for the condition to be triggered.
|
||||
double percent = 2;
|
||||
}
|
||||
}
|
||||
|
||||
// A condition type that compares a collection of time series
|
||||
// against a threshold.
|
||||
message MetricThreshold {
|
||||
// Required. 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). The filter must specify the metric type and the resource
|
||||
// type. Optionally, it can specify resource labels and metric labels.
|
||||
// This field must not exceed 2048 Unicode characters in length.
|
||||
string filter = 2 [(google.api.field_behavior) = REQUIRED];
|
||||
|
||||
// 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 resources). 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.
|
||||
repeated Aggregation aggregations = 8;
|
||||
|
||||
// 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.
|
||||
string denominator_filter = 9;
|
||||
|
||||
// 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.
|
||||
repeated Aggregation denominator_aggregations = 10;
|
||||
|
||||
// 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.
|
||||
ComparisonType comparison = 4;
|
||||
|
||||
// A value against which to compare the time series.
|
||||
double threshold_value = 5;
|
||||
|
||||
// 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.
|
||||
google.protobuf.Duration duration = 6;
|
||||
|
||||
// The number/percent of time series for which the comparison must hold
|
||||
// in order for the condition to trigger. If unspecified, then the
|
||||
// condition will trigger if the comparison is true for any of the
|
||||
// time series that have been identified by `filter` and `aggregations`,
|
||||
// or by the ratio, if `denominator_filter` and `denominator_aggregations`
|
||||
// are specified.
|
||||
Trigger trigger = 7;
|
||||
}
|
||||
|
||||
// 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`.
|
||||
message MetricAbsence {
|
||||
// Required. 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). The filter must specify the metric type and the resource
|
||||
// type. Optionally, it can specify resource labels and metric labels.
|
||||
// This field must not exceed 2048 Unicode characters in length.
|
||||
string filter = 1 [(google.api.field_behavior) = REQUIRED];
|
||||
|
||||
// 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 resources). 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.
|
||||
repeated Aggregation aggregations = 5;
|
||||
|
||||
// The amount of time that a time series must fail to report new
|
||||
// data to be considered failing. The minimum value of this field
|
||||
// is 120 seconds. Larger values that are a multiple of a
|
||||
// minute--for example, 240 or 300 seconds--are supported.
|
||||
// If an invalid value is given, an
|
||||
// error will be returned. The `Duration.nanos` field is
|
||||
// ignored.
|
||||
google.protobuf.Duration duration = 2;
|
||||
|
||||
// The number/percent of time series for which the comparison must hold
|
||||
// in order for the condition to trigger. If unspecified, then the
|
||||
// condition will trigger if the comparison is true for any of the
|
||||
// time series that have been identified by `filter` and `aggregations`.
|
||||
Trigger trigger = 3;
|
||||
}
|
||||
|
||||
// A condition type that checks whether a log message in the [scoping
|
||||
// project](https://cloud.google.com/monitoring/api/v3#project_name)
|
||||
// satisfies the given filter. Logs from other projects in the metrics
|
||||
// scope are not evaluated.
|
||||
message LogMatch {
|
||||
// Required. A logs-based filter. See [Advanced Logs
|
||||
// Queries](https://cloud.google.com/logging/docs/view/advanced-queries)
|
||||
// for how this filter should be constructed.
|
||||
string filter = 1 [(google.api.field_behavior) = REQUIRED];
|
||||
|
||||
// Optional. A map from a label key to an extractor expression, which is
|
||||
// used to extract the value for this label key. Each entry in this map is
|
||||
// a specification for how data should be extracted from log entries that
|
||||
// match `filter`. Each combination of extracted values is treated as a
|
||||
// separate rule for the purposes of triggering notifications. Label keys
|
||||
// and corresponding values can be used in notifications generated by this
|
||||
// condition.
|
||||
//
|
||||
// Please see [the documentation on logs-based metric
|
||||
// `valueExtractor`s](https://cloud.google.com/logging/docs/reference/v2/rest/v2/projects.metrics#LogMetric.FIELDS.value_extractor)
|
||||
// for syntax and examples.
|
||||
map<string, string> label_extractors = 2;
|
||||
}
|
||||
|
||||
// A condition type that allows alert policies to be defined using
|
||||
// [Monitoring Query Language](https://cloud.google.com/monitoring/mql).
|
||||
message MonitoringQueryLanguageCondition {
|
||||
// [Monitoring Query Language](https://cloud.google.com/monitoring/mql)
|
||||
// query that outputs a boolean stream.
|
||||
string query = 1;
|
||||
|
||||
// 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.
|
||||
google.protobuf.Duration duration = 2;
|
||||
|
||||
// The number/percent of time series for which the comparison must hold
|
||||
// in order for the condition to trigger. If unspecified, then the
|
||||
// condition will trigger if the comparison is true for any of the
|
||||
// time series that have been identified by `filter` and `aggregations`,
|
||||
// or by the ratio, if `denominator_filter` and `denominator_aggregations`
|
||||
// are specified.
|
||||
Trigger trigger = 3;
|
||||
}
|
||||
|
||||
// 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][google.monitoring.v3.AlertPolicyService.CreateAlertPolicy]
|
||||
// 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][google.monitoring.v3.AlertPolicyService.UpdateAlertPolicy]
|
||||
// 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.
|
||||
string name = 12;
|
||||
|
||||
// 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.
|
||||
string display_name = 6;
|
||||
|
||||
// Only one of the following condition types will be specified.
|
||||
oneof condition {
|
||||
// A condition that compares a time series against a threshold.
|
||||
MetricThreshold condition_threshold = 1;
|
||||
|
||||
// A condition that checks that a time series continues to
|
||||
// receive new data points.
|
||||
MetricAbsence condition_absent = 2;
|
||||
|
||||
// A condition that checks for log messages matching given constraints. If
|
||||
// set, no other conditions can be present.
|
||||
LogMatch condition_matched_log = 20;
|
||||
|
||||
// A condition that uses the Monitoring Query Language to define
|
||||
// alerts.
|
||||
MonitoringQueryLanguageCondition condition_monitoring_query_language = 19;
|
||||
}
|
||||
}
|
||||
|
||||
// Control over how the notification channels in `notification_channels`
|
||||
// are notified when this alert fires.
|
||||
message AlertStrategy {
|
||||
// Control over the rate of notifications sent to this alert policy's
|
||||
// notification channels.
|
||||
message NotificationRateLimit {
|
||||
// Not more than one notification per `period`.
|
||||
google.protobuf.Duration period = 1;
|
||||
}
|
||||
|
||||
// Required for alert policies with a `LogMatch` condition.
|
||||
//
|
||||
// This limit is not implemented for alert policies that are not log-based.
|
||||
NotificationRateLimit notification_rate_limit = 1;
|
||||
}
|
||||
|
||||
// Operators for combining conditions.
|
||||
enum ConditionCombinerType {
|
||||
// An unspecified combiner.
|
||||
COMBINE_UNSPECIFIED = 0;
|
||||
|
||||
// Combine conditions using the logical `AND` operator. An
|
||||
// incident is created only if all the conditions are met
|
||||
// simultaneously. This combiner is satisfied if all conditions are
|
||||
// met, even if they are met on completely different resources.
|
||||
AND = 1;
|
||||
|
||||
// Combine conditions using the logical `OR` operator. An incident
|
||||
// is created if any of the listed conditions is met.
|
||||
OR = 2;
|
||||
|
||||
// Combine conditions using logical `AND` operator, but unlike the regular
|
||||
// `AND` option, an incident is created only if all conditions are met
|
||||
// simultaneously on at least one resource.
|
||||
AND_WITH_MATCHING_RESOURCE = 3;
|
||||
}
|
||||
|
||||
// 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][google.monitoring.v3.AlertPolicyService.CreateAlertPolicy]
|
||||
// method, do not include the `name` field in the alerting policy passed as
|
||||
// part of the request.
|
||||
string name = 1;
|
||||
|
||||
// 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.
|
||||
string display_name = 2;
|
||||
|
||||
// Documentation that is included with notifications and incidents related to
|
||||
// this policy. Best practice is for the documentation to include information
|
||||
// to help responders understand, mitigate, escalate, and correct the
|
||||
// underlying problems detected by the alerting policy. Notification channels
|
||||
// that have limited capacity might not show this documentation.
|
||||
Documentation documentation = 13;
|
||||
|
||||
// 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.
|
||||
map<string, string> user_labels = 16;
|
||||
|
||||
// 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`.
|
||||
repeated Condition conditions = 12;
|
||||
|
||||
// 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`.
|
||||
ConditionCombinerType combiner = 6;
|
||||
|
||||
// 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.
|
||||
google.protobuf.BoolValue enabled = 17;
|
||||
|
||||
// Read-only description of how the alert policy is invalid. OK if the alert
|
||||
// policy is valid. If not OK, the alert policy will not generate incidents.
|
||||
google.rpc.Status validity = 18;
|
||||
|
||||
// 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`][google.monitoring.v3.NotificationChannel]
|
||||
// objects that are returned from the [`ListNotificationChannels`]
|
||||
// [google.monitoring.v3.NotificationChannelService.ListNotificationChannels]
|
||||
// method. The format of the entries in this field is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]/notificationChannels/[CHANNEL_ID]
|
||||
repeated string notification_channels = 14;
|
||||
|
||||
// A read-only record of the creation of the alerting policy. If provided
|
||||
// in a call to create or update, this field will be ignored.
|
||||
MutationRecord creation_record = 10;
|
||||
|
||||
// A read-only record of the most recent change to the alerting policy. If
|
||||
// provided in a call to create or update, this field will be ignored.
|
||||
MutationRecord mutation_record = 11;
|
||||
|
||||
// Control over how this alert policy's notification channels are notified.
|
||||
AlertStrategy alert_strategy = 21;
|
||||
}
|
||||
+240
@@ -0,0 +1,240 @@
|
||||
// Copyright 2021 Google LLC
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// 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.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.monitoring.v3;
|
||||
|
||||
import "google/api/annotations.proto";
|
||||
import "google/api/client.proto";
|
||||
import "google/api/field_behavior.proto";
|
||||
import "google/api/resource.proto";
|
||||
import "google/monitoring/v3/alert.proto";
|
||||
import "google/protobuf/empty.proto";
|
||||
import "google/protobuf/field_mask.proto";
|
||||
|
||||
option csharp_namespace = "Google.Cloud.Monitoring.V3";
|
||||
option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "AlertServiceProto";
|
||||
option java_package = "com.google.monitoring.v3";
|
||||
option php_namespace = "Google\\Cloud\\Monitoring\\V3";
|
||||
option ruby_package = "Google::Cloud::Monitoring::V3";
|
||||
|
||||
// The AlertPolicyService API is used to manage (list, create, delete,
|
||||
// edit) alert policies in Stackdriver Monitoring. An alerting policy is
|
||||
// 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. In addition to using this API, alert
|
||||
// policies can also be managed through
|
||||
// [Stackdriver Monitoring](https://cloud.google.com/monitoring/docs/),
|
||||
// which can be reached by clicking the "Monitoring" tab in
|
||||
// [Cloud Console](https://console.cloud.google.com/).
|
||||
service AlertPolicyService {
|
||||
option (google.api.default_host) = "monitoring.googleapis.com";
|
||||
option (google.api.oauth_scopes) =
|
||||
"https://www.googleapis.com/auth/cloud-platform,"
|
||||
"https://www.googleapis.com/auth/monitoring,"
|
||||
"https://www.googleapis.com/auth/monitoring.read";
|
||||
|
||||
// Lists the existing alerting policies for the workspace.
|
||||
rpc ListAlertPolicies(ListAlertPoliciesRequest) returns (ListAlertPoliciesResponse) {
|
||||
option (google.api.http) = {
|
||||
get: "/v3/{name=projects/*}/alertPolicies"
|
||||
};
|
||||
option (google.api.method_signature) = "name";
|
||||
}
|
||||
|
||||
// Gets a single alerting policy.
|
||||
rpc GetAlertPolicy(GetAlertPolicyRequest) returns (AlertPolicy) {
|
||||
option (google.api.http) = {
|
||||
get: "/v3/{name=projects/*/alertPolicies/*}"
|
||||
};
|
||||
option (google.api.method_signature) = "name";
|
||||
}
|
||||
|
||||
// Creates a new alerting policy.
|
||||
rpc CreateAlertPolicy(CreateAlertPolicyRequest) returns (AlertPolicy) {
|
||||
option (google.api.http) = {
|
||||
post: "/v3/{name=projects/*}/alertPolicies"
|
||||
body: "alert_policy"
|
||||
};
|
||||
option (google.api.method_signature) = "name,alert_policy";
|
||||
}
|
||||
|
||||
// Deletes an alerting policy.
|
||||
rpc DeleteAlertPolicy(DeleteAlertPolicyRequest) returns (google.protobuf.Empty) {
|
||||
option (google.api.http) = {
|
||||
delete: "/v3/{name=projects/*/alertPolicies/*}"
|
||||
};
|
||||
option (google.api.method_signature) = "name";
|
||||
}
|
||||
|
||||
// Updates an alerting policy. You can either replace the entire policy with
|
||||
// a new one or replace only certain fields in the current alerting policy by
|
||||
// specifying the fields to be updated via `updateMask`. Returns the
|
||||
// updated alerting policy.
|
||||
rpc UpdateAlertPolicy(UpdateAlertPolicyRequest) returns (AlertPolicy) {
|
||||
option (google.api.http) = {
|
||||
patch: "/v3/{alert_policy.name=projects/*/alertPolicies/*}"
|
||||
body: "alert_policy"
|
||||
};
|
||||
option (google.api.method_signature) = "update_mask,alert_policy";
|
||||
}
|
||||
}
|
||||
|
||||
// The protocol for the `CreateAlertPolicy` request.
|
||||
message CreateAlertPolicyRequest {
|
||||
// Required. The [project](https://cloud.google.com/monitoring/api/v3#project_name) in
|
||||
// which to create the alerting policy. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]
|
||||
//
|
||||
// Note that this field names the parent container in which the alerting
|
||||
// policy will be written, not the name of the created policy. |name| must be
|
||||
// a host project of a workspace, otherwise INVALID_ARGUMENT error will
|
||||
// return. The alerting policy that is returned will have a name that contains
|
||||
// a normalized representation of this name as a prefix but adds a suffix of
|
||||
// the form `/alertPolicies/[ALERT_POLICY_ID]`, identifying the policy in the
|
||||
// container.
|
||||
string name = 3 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
child_type: "monitoring.googleapis.com/AlertPolicy"
|
||||
}
|
||||
];
|
||||
|
||||
// Required. The requested alerting policy. You should omit the `name` field in this
|
||||
// policy. The name will be returned in the new policy, including
|
||||
// a new `[ALERT_POLICY_ID]` value.
|
||||
AlertPolicy alert_policy = 2 [(google.api.field_behavior) = REQUIRED];
|
||||
}
|
||||
|
||||
// The protocol for the `GetAlertPolicy` request.
|
||||
message GetAlertPolicyRequest {
|
||||
// Required. The alerting policy to retrieve. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]/alertPolicies/[ALERT_POLICY_ID]
|
||||
string name = 3 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
type: "monitoring.googleapis.com/AlertPolicy"
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
// The protocol for the `ListAlertPolicies` request.
|
||||
message ListAlertPoliciesRequest {
|
||||
// Required. The [project](https://cloud.google.com/monitoring/api/v3#project_name)
|
||||
// whose alert policies are to be listed. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]
|
||||
//
|
||||
// Note that this field names the parent container in which the alerting
|
||||
// policies to be listed are stored. To retrieve a single alerting policy
|
||||
// by name, use the
|
||||
// [GetAlertPolicy][google.monitoring.v3.AlertPolicyService.GetAlertPolicy]
|
||||
// operation, instead.
|
||||
string name = 4 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
child_type: "monitoring.googleapis.com/AlertPolicy"
|
||||
}
|
||||
];
|
||||
|
||||
// If provided, this field specifies the criteria that must be met by
|
||||
// alert policies to be included in the response.
|
||||
//
|
||||
// For more details, see [sorting and
|
||||
// filtering](https://cloud.google.com/monitoring/api/v3/sorting-and-filtering).
|
||||
string filter = 5;
|
||||
|
||||
// A comma-separated list of fields by which to sort the result. Supports
|
||||
// the same set of field references as the `filter` field. Entries can be
|
||||
// prefixed with a minus sign to sort by the field in descending order.
|
||||
//
|
||||
// For more details, see [sorting and
|
||||
// filtering](https://cloud.google.com/monitoring/api/v3/sorting-and-filtering).
|
||||
string order_by = 6;
|
||||
|
||||
// The maximum number of results to return in a single response.
|
||||
int32 page_size = 2;
|
||||
|
||||
// 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 more results from the previous method call.
|
||||
string page_token = 3;
|
||||
}
|
||||
|
||||
// The protocol for the `ListAlertPolicies` response.
|
||||
message ListAlertPoliciesResponse {
|
||||
// The returned alert policies.
|
||||
repeated AlertPolicy alert_policies = 3;
|
||||
|
||||
// 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.
|
||||
string next_page_token = 2;
|
||||
|
||||
// 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
|
||||
int32 total_size = 4;
|
||||
}
|
||||
|
||||
// The protocol for the `UpdateAlertPolicy` request.
|
||||
message UpdateAlertPolicyRequest {
|
||||
// Optional. A list of alerting policy field names. If this field is not
|
||||
// empty, each listed field in the existing alerting policy is set to the
|
||||
// value of the corresponding field in the supplied policy (`alert_policy`),
|
||||
// or to the field's default value if the field is not in the supplied
|
||||
// alerting policy. Fields not listed retain their previous value.
|
||||
//
|
||||
// Examples of valid field masks include `display_name`, `documentation`,
|
||||
// `documentation.content`, `documentation.mime_type`, `user_labels`,
|
||||
// `user_label.nameofkey`, `enabled`, `conditions`, `combiner`, etc.
|
||||
//
|
||||
// If this field is empty, then the supplied alerting policy replaces the
|
||||
// existing policy. It is the same as deleting the existing policy and
|
||||
// adding the supplied policy, except for the following:
|
||||
//
|
||||
// + The new policy will have the same `[ALERT_POLICY_ID]` as the former
|
||||
// policy. This gives you continuity with the former policy in your
|
||||
// notifications and incidents.
|
||||
// + Conditions in the new policy will keep their former `[CONDITION_ID]` if
|
||||
// the supplied condition includes the `name` field with that
|
||||
// `[CONDITION_ID]`. If the supplied condition omits the `name` field,
|
||||
// then a new `[CONDITION_ID]` is created.
|
||||
google.protobuf.FieldMask update_mask = 2;
|
||||
|
||||
// Required. The updated alerting policy or the updated values for the
|
||||
// fields listed in `update_mask`.
|
||||
// If `update_mask` is not empty, any fields in this policy that are
|
||||
// not in `update_mask` are ignored.
|
||||
AlertPolicy alert_policy = 3 [(google.api.field_behavior) = REQUIRED];
|
||||
}
|
||||
|
||||
// The protocol for the `DeleteAlertPolicy` request.
|
||||
message DeleteAlertPolicyRequest {
|
||||
// Required. The alerting policy to delete. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]/alertPolicies/[ALERT_POLICY_ID]
|
||||
//
|
||||
// For more information, see [AlertPolicy][google.monitoring.v3.AlertPolicy].
|
||||
string name = 3 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
type: "monitoring.googleapis.com/AlertPolicy"
|
||||
}
|
||||
];
|
||||
}
|
||||
+488
@@ -0,0 +1,488 @@
|
||||
// Copyright 2021 Google LLC
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// 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.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.monitoring.v3;
|
||||
|
||||
import "google/api/distribution.proto";
|
||||
import "google/protobuf/duration.proto";
|
||||
import "google/protobuf/timestamp.proto";
|
||||
|
||||
option csharp_namespace = "Google.Cloud.Monitoring.V3";
|
||||
option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "CommonProto";
|
||||
option java_package = "com.google.monitoring.v3";
|
||||
option php_namespace = "Google\\Cloud\\Monitoring\\V3";
|
||||
option ruby_package = "Google::Cloud::Monitoring::V3";
|
||||
|
||||
// A single strongly-typed value.
|
||||
message TypedValue {
|
||||
// The typed value field.
|
||||
oneof value {
|
||||
// A Boolean value: `true` or `false`.
|
||||
bool bool_value = 1;
|
||||
|
||||
// A 64-bit integer. Its range is approximately ±9.2x10<sup>18</sup>.
|
||||
int64 int64_value = 2;
|
||||
|
||||
// A 64-bit double-precision floating-point number. Its magnitude
|
||||
// is approximately ±10<sup>±300</sup> and it has 16
|
||||
// significant digits of precision.
|
||||
double double_value = 3;
|
||||
|
||||
// A variable-length string value.
|
||||
string string_value = 4;
|
||||
|
||||
// A distribution value.
|
||||
google.api.Distribution distribution_value = 5;
|
||||
}
|
||||
}
|
||||
|
||||
// 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`](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors#MetricKind) of the metric value. The end time must not be earlier than the start time. When writing data points, the start time must not be more than 25 hours in the past and the end time must not be more than five minutes in the future.
|
||||
//
|
||||
// * For `GAUGE` metrics, 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. The end time of a new interval must be at least a
|
||||
// millisecond after the end time of the previous interval.
|
||||
//
|
||||
// * For `DELTA` metrics, the start time and end time must specify a
|
||||
// non-zero interval, with subsequent points specifying contiguous and
|
||||
// non-overlapping intervals. For `DELTA` metrics, the start time of
|
||||
// the next interval must be at least a millisecond after the end time
|
||||
// of the previous interval.
|
||||
//
|
||||
// * For `CUMULATIVE` metrics, the start time and end time must specify a
|
||||
// a non-zero interval, with subsequent points specifying the same
|
||||
// start time and increasing end times, until an event resets the
|
||||
// cumulative value to zero and sets a new start time for the following
|
||||
// points. The new start time must be at least a millisecond after the
|
||||
// end time of the previous interval.
|
||||
//
|
||||
// * The start time of a new interval must be at least a millisecond after the
|
||||
// end time of the previous interval because intervals are closed. If the
|
||||
// start time of a new interval is the same as the end time of the previous
|
||||
// interval, then data written at the new start time could overwrite data
|
||||
// written at the previous end time.
|
||||
message TimeInterval {
|
||||
// Required. The end of the time interval.
|
||||
google.protobuf.Timestamp end_time = 2;
|
||||
|
||||
// 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.
|
||||
google.protobuf.Timestamp start_time = 1;
|
||||
}
|
||||
|
||||
// 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).
|
||||
message Aggregation {
|
||||
// The `Aligner` specifies the operation that will be applied to the data
|
||||
// points in each alignment period in a time series. Except for
|
||||
// `ALIGN_NONE`, which specifies that no operation be applied, each alignment
|
||||
// operation replaces the set of data values in each alignment period with
|
||||
// a single value: the result of applying the operation to the data values.
|
||||
// An aligned time series has a single data value at the end of each
|
||||
// `alignment_period`.
|
||||
//
|
||||
// An alignment operation can change the data type of the values, too. For
|
||||
// example, if you apply a counting operation to boolean values, the data
|
||||
// `value_type` in the original time series is `BOOLEAN`, but the `value_type`
|
||||
// in the aligned result is `INT64`.
|
||||
enum Aligner {
|
||||
// No alignment. Raw data is returned. Not valid if cross-series reduction
|
||||
// is requested. The `value_type` of the result is the same as the
|
||||
// `value_type` of the input.
|
||||
ALIGN_NONE = 0;
|
||||
|
||||
// Align and convert to
|
||||
// [DELTA][google.api.MetricDescriptor.MetricKind.DELTA].
|
||||
// The output is `delta = y1 - y0`.
|
||||
//
|
||||
// This alignment is valid for
|
||||
// [CUMULATIVE][google.api.MetricDescriptor.MetricKind.CUMULATIVE] and
|
||||
// `DELTA` metrics. If the selected alignment period results in periods
|
||||
// with no data, then the aligned value for such a period is created by
|
||||
// interpolation. The `value_type` of the aligned result is the same as
|
||||
// the `value_type` of the input.
|
||||
ALIGN_DELTA = 1;
|
||||
|
||||
// Align and convert to a rate. The result is computed as
|
||||
// `rate = (y1 - y0)/(t1 - t0)`, or "delta over time".
|
||||
// Think of this aligner as providing the slope of the line that passes
|
||||
// through the value at the start and at the end of the `alignment_period`.
|
||||
//
|
||||
// This aligner is valid for `CUMULATIVE`
|
||||
// and `DELTA` metrics with numeric values. If the selected alignment
|
||||
// period results in periods with no data, then the aligned value for
|
||||
// such a period is created by interpolation. The output is a `GAUGE`
|
||||
// metric with `value_type` `DOUBLE`.
|
||||
//
|
||||
// If, by "rate", you mean "percentage change", see the
|
||||
// `ALIGN_PERCENT_CHANGE` aligner instead.
|
||||
ALIGN_RATE = 2;
|
||||
|
||||
// Align by interpolating between adjacent points around the alignment
|
||||
// period boundary. This aligner is valid for `GAUGE` metrics with
|
||||
// numeric values. The `value_type` of the aligned result is the same as the
|
||||
// `value_type` of the input.
|
||||
ALIGN_INTERPOLATE = 3;
|
||||
|
||||
// Align by moving the most recent data point before the end of the
|
||||
// alignment period to the boundary at the end of the alignment
|
||||
// period. This aligner is valid for `GAUGE` metrics. The `value_type` of
|
||||
// the aligned result is the same as the `value_type` of the input.
|
||||
ALIGN_NEXT_OLDER = 4;
|
||||
|
||||
// Align the time series by returning the minimum value in each alignment
|
||||
// period. This aligner is valid for `GAUGE` and `DELTA` metrics with
|
||||
// numeric values. The `value_type` of the aligned result is the same as
|
||||
// the `value_type` of the input.
|
||||
ALIGN_MIN = 10;
|
||||
|
||||
// Align the time series by returning the maximum value in each alignment
|
||||
// period. This aligner is valid for `GAUGE` and `DELTA` metrics with
|
||||
// numeric values. The `value_type` of the aligned result is the same as
|
||||
// the `value_type` of the input.
|
||||
ALIGN_MAX = 11;
|
||||
|
||||
// Align the time series by returning the mean value in each alignment
|
||||
// period. This aligner is valid for `GAUGE` and `DELTA` metrics with
|
||||
// numeric values. The `value_type` of the aligned result is `DOUBLE`.
|
||||
ALIGN_MEAN = 12;
|
||||
|
||||
// Align the time series by returning the number of values in each alignment
|
||||
// period. This aligner is valid for `GAUGE` and `DELTA` metrics with
|
||||
// numeric or Boolean values. The `value_type` of the aligned result is
|
||||
// `INT64`.
|
||||
ALIGN_COUNT = 13;
|
||||
|
||||
// Align the time series by returning the sum of the values in each
|
||||
// alignment period. This aligner is valid for `GAUGE` and `DELTA`
|
||||
// metrics with numeric and distribution values. The `value_type` of the
|
||||
// aligned result is the same as the `value_type` of the input.
|
||||
ALIGN_SUM = 14;
|
||||
|
||||
// Align the time series by returning the standard deviation of the values
|
||||
// in each alignment period. This aligner is valid for `GAUGE` and
|
||||
// `DELTA` metrics with numeric values. The `value_type` of the output is
|
||||
// `DOUBLE`.
|
||||
ALIGN_STDDEV = 15;
|
||||
|
||||
// Align the time series by returning the number of `True` values in
|
||||
// each alignment period. This aligner is valid for `GAUGE` metrics with
|
||||
// Boolean values. The `value_type` of the output is `INT64`.
|
||||
ALIGN_COUNT_TRUE = 16;
|
||||
|
||||
// Align the time series by returning the number of `False` values in
|
||||
// each alignment period. This aligner is valid for `GAUGE` metrics with
|
||||
// Boolean values. The `value_type` of the output is `INT64`.
|
||||
ALIGN_COUNT_FALSE = 24;
|
||||
|
||||
// Align the time series by returning the ratio of the number of `True`
|
||||
// values to the total number of values in each alignment period. This
|
||||
// aligner is valid for `GAUGE` metrics with Boolean values. The output
|
||||
// value is in the range [0.0, 1.0] and has `value_type` `DOUBLE`.
|
||||
ALIGN_FRACTION_TRUE = 17;
|
||||
|
||||
// Align the time series by using [percentile
|
||||
// aggregation](https://en.wikipedia.org/wiki/Percentile). The resulting
|
||||
// data point in each alignment period is the 99th percentile of all data
|
||||
// points in the period. This aligner is valid for `GAUGE` and `DELTA`
|
||||
// metrics with distribution values. The output is a `GAUGE` metric with
|
||||
// `value_type` `DOUBLE`.
|
||||
ALIGN_PERCENTILE_99 = 18;
|
||||
|
||||
// Align the time series by using [percentile
|
||||
// aggregation](https://en.wikipedia.org/wiki/Percentile). The resulting
|
||||
// data point in each alignment period is the 95th percentile of all data
|
||||
// points in the period. This aligner is valid for `GAUGE` and `DELTA`
|
||||
// metrics with distribution values. The output is a `GAUGE` metric with
|
||||
// `value_type` `DOUBLE`.
|
||||
ALIGN_PERCENTILE_95 = 19;
|
||||
|
||||
// Align the time series by using [percentile
|
||||
// aggregation](https://en.wikipedia.org/wiki/Percentile). The resulting
|
||||
// data point in each alignment period is the 50th percentile of all data
|
||||
// points in the period. This aligner is valid for `GAUGE` and `DELTA`
|
||||
// metrics with distribution values. The output is a `GAUGE` metric with
|
||||
// `value_type` `DOUBLE`.
|
||||
ALIGN_PERCENTILE_50 = 20;
|
||||
|
||||
// Align the time series by using [percentile
|
||||
// aggregation](https://en.wikipedia.org/wiki/Percentile). The resulting
|
||||
// data point in each alignment period is the 5th percentile of all data
|
||||
// points in the period. This aligner is valid for `GAUGE` and `DELTA`
|
||||
// metrics with distribution values. The output is a `GAUGE` metric with
|
||||
// `value_type` `DOUBLE`.
|
||||
ALIGN_PERCENTILE_05 = 21;
|
||||
|
||||
// Align and convert to a percentage change. This aligner is valid for
|
||||
// `GAUGE` and `DELTA` metrics with numeric values. This alignment returns
|
||||
// `((current - previous)/previous) * 100`, where the value of `previous` is
|
||||
// determined based on the `alignment_period`.
|
||||
//
|
||||
// If the values of `current` and `previous` are both 0, then the returned
|
||||
// value is 0. If only `previous` is 0, the returned value is infinity.
|
||||
//
|
||||
// A 10-minute moving mean is computed at each point of the alignment period
|
||||
// prior to the above calculation to smooth the metric and prevent false
|
||||
// positives from very short-lived spikes. The moving mean is only
|
||||
// applicable for data whose values are `>= 0`. Any values `< 0` are
|
||||
// treated as a missing datapoint, and are ignored. While `DELTA`
|
||||
// metrics are accepted by this alignment, special care should be taken that
|
||||
// the values for the metric will always be positive. The output is a
|
||||
// `GAUGE` metric with `value_type` `DOUBLE`.
|
||||
ALIGN_PERCENT_CHANGE = 23;
|
||||
}
|
||||
|
||||
// A Reducer operation describes how to aggregate data points from multiple
|
||||
// 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.
|
||||
enum Reducer {
|
||||
// No cross-time series reduction. The output of the `Aligner` is
|
||||
// returned.
|
||||
REDUCE_NONE = 0;
|
||||
|
||||
// Reduce by computing the mean value across time series for each
|
||||
// alignment period. This reducer is valid for
|
||||
// [DELTA][google.api.MetricDescriptor.MetricKind.DELTA] and
|
||||
// [GAUGE][google.api.MetricDescriptor.MetricKind.GAUGE] metrics with
|
||||
// numeric or distribution values. The `value_type` of the output is
|
||||
// [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE].
|
||||
REDUCE_MEAN = 1;
|
||||
|
||||
// Reduce by computing the minimum value across time series for each
|
||||
// alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics
|
||||
// with numeric values. The `value_type` of the output is the same as the
|
||||
// `value_type` of the input.
|
||||
REDUCE_MIN = 2;
|
||||
|
||||
// Reduce by computing the maximum value across time series for each
|
||||
// alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics
|
||||
// with numeric values. The `value_type` of the output is the same as the
|
||||
// `value_type` of the input.
|
||||
REDUCE_MAX = 3;
|
||||
|
||||
// Reduce by computing the sum across time series for each
|
||||
// alignment period. This reducer is valid for `DELTA` and `GAUGE` metrics
|
||||
// with numeric and distribution values. The `value_type` of the output is
|
||||
// the same as the `value_type` of the input.
|
||||
REDUCE_SUM = 4;
|
||||
|
||||
// Reduce by computing the standard deviation across time series
|
||||
// for each alignment period. This reducer is valid for `DELTA` and
|
||||
// `GAUGE` metrics with numeric or distribution values. The `value_type`
|
||||
// of the output is `DOUBLE`.
|
||||
REDUCE_STDDEV = 5;
|
||||
|
||||
// Reduce by computing the number of data points across time series
|
||||
// for each alignment period. This reducer is valid for `DELTA` and
|
||||
// `GAUGE` metrics of numeric, Boolean, distribution, and string
|
||||
// `value_type`. The `value_type` of the output is `INT64`.
|
||||
REDUCE_COUNT = 6;
|
||||
|
||||
// Reduce by computing the number of `True`-valued data points across time
|
||||
// series for each alignment period. This reducer is valid for `DELTA` and
|
||||
// `GAUGE` metrics of Boolean `value_type`. The `value_type` of the output
|
||||
// is `INT64`.
|
||||
REDUCE_COUNT_TRUE = 7;
|
||||
|
||||
// Reduce by computing the number of `False`-valued data points across time
|
||||
// series for each alignment period. This reducer is valid for `DELTA` and
|
||||
// `GAUGE` metrics of Boolean `value_type`. The `value_type` of the output
|
||||
// is `INT64`.
|
||||
REDUCE_COUNT_FALSE = 15;
|
||||
|
||||
// Reduce by computing the ratio of the number of `True`-valued data points
|
||||
// to the total number of data points for each alignment period. This
|
||||
// reducer is valid for `DELTA` and `GAUGE` metrics of Boolean `value_type`.
|
||||
// The output value is in the range [0.0, 1.0] and has `value_type`
|
||||
// `DOUBLE`.
|
||||
REDUCE_FRACTION_TRUE = 8;
|
||||
|
||||
// Reduce by computing the [99th
|
||||
// percentile](https://en.wikipedia.org/wiki/Percentile) of data points
|
||||
// across time series for each alignment period. This reducer is valid for
|
||||
// `GAUGE` and `DELTA` metrics of numeric and distribution type. The value
|
||||
// of the output is `DOUBLE`.
|
||||
REDUCE_PERCENTILE_99 = 9;
|
||||
|
||||
// Reduce by computing the [95th
|
||||
// percentile](https://en.wikipedia.org/wiki/Percentile) of data points
|
||||
// across time series for each alignment period. This reducer is valid for
|
||||
// `GAUGE` and `DELTA` metrics of numeric and distribution type. The value
|
||||
// of the output is `DOUBLE`.
|
||||
REDUCE_PERCENTILE_95 = 10;
|
||||
|
||||
// Reduce by computing the [50th
|
||||
// percentile](https://en.wikipedia.org/wiki/Percentile) of data points
|
||||
// across time series for each alignment period. This reducer is valid for
|
||||
// `GAUGE` and `DELTA` metrics of numeric and distribution type. The value
|
||||
// of the output is `DOUBLE`.
|
||||
REDUCE_PERCENTILE_50 = 11;
|
||||
|
||||
// Reduce by computing the [5th
|
||||
// percentile](https://en.wikipedia.org/wiki/Percentile) of data points
|
||||
// across time series for each alignment period. This reducer is valid for
|
||||
// `GAUGE` and `DELTA` metrics of numeric and distribution type. The value
|
||||
// of the output is `DOUBLE`.
|
||||
REDUCE_PERCENTILE_05 = 12;
|
||||
}
|
||||
|
||||
// The `alignment_period` specifies a time interval, in seconds, that is used
|
||||
// to divide the data in all the
|
||||
// [time series][google.monitoring.v3.TimeSeries] 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.
|
||||
//
|
||||
// The maximum value of the `alignment_period` is 104 weeks (2 years) for
|
||||
// charts, and 90,000 seconds (25 hours) for alerting policies.
|
||||
google.protobuf.Duration alignment_period = 1;
|
||||
|
||||
// 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.
|
||||
Aligner per_series_aligner = 2;
|
||||
|
||||
// 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.
|
||||
Reducer cross_series_reducer = 4;
|
||||
|
||||
// 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.
|
||||
repeated string group_by_fields = 5;
|
||||
}
|
||||
|
||||
// Specifies an ordering relationship on two arguments, called `left` and
|
||||
// `right`.
|
||||
enum ComparisonType {
|
||||
// No ordering relationship is specified.
|
||||
COMPARISON_UNSPECIFIED = 0;
|
||||
|
||||
// True if the left argument is greater than the right argument.
|
||||
COMPARISON_GT = 1;
|
||||
|
||||
// True if the left argument is greater than or equal to the right argument.
|
||||
COMPARISON_GE = 2;
|
||||
|
||||
// True if the left argument is less than the right argument.
|
||||
COMPARISON_LT = 3;
|
||||
|
||||
// True if the left argument is less than or equal to the right argument.
|
||||
COMPARISON_LE = 4;
|
||||
|
||||
// True if the left argument is equal to the right argument.
|
||||
COMPARISON_EQ = 5;
|
||||
|
||||
// True if the left argument is not equal to the right argument.
|
||||
COMPARISON_NE = 6;
|
||||
}
|
||||
|
||||
// The tier of service for a Workspace. Please see the
|
||||
// [service tiers
|
||||
// documentation](https://cloud.google.com/monitoring/workspaces/tiers) for more
|
||||
// details.
|
||||
enum ServiceTier {
|
||||
option deprecated = true;
|
||||
|
||||
// An invalid sentinel value, used to indicate that a tier has not
|
||||
// been provided explicitly.
|
||||
SERVICE_TIER_UNSPECIFIED = 0;
|
||||
|
||||
// The Stackdriver Basic tier, a free tier of service that provides basic
|
||||
// features, a moderate allotment of logs, and access to built-in metrics.
|
||||
// A number of features are not available in this tier. For more details,
|
||||
// see [the service tiers
|
||||
// documentation](https://cloud.google.com/monitoring/workspaces/tiers).
|
||||
SERVICE_TIER_BASIC = 1;
|
||||
|
||||
// The Stackdriver Premium tier, a higher, more expensive tier of service
|
||||
// that provides access to all Stackdriver features, lets you use Stackdriver
|
||||
// with AWS accounts, and has a larger allotments for logs and metrics. For
|
||||
// more details, see [the service tiers
|
||||
// documentation](https://cloud.google.com/monitoring/workspaces/tiers).
|
||||
SERVICE_TIER_PREMIUM = 2;
|
||||
}
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
// Copyright 2021 Google LLC
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// 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.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.monitoring.v3;
|
||||
|
||||
option csharp_namespace = "Google.Cloud.Monitoring.V3";
|
||||
option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "DroppedLabelsProto";
|
||||
option java_package = "com.google.monitoring.v3";
|
||||
option php_namespace = "Google\\Cloud\\Monitoring\\V3";
|
||||
option ruby_package = "Google::Cloud::Monitoring::V3";
|
||||
|
||||
// A set of (label, value) pairs that were removed from a Distribution
|
||||
// time series during aggregation and then added as an attachment to a
|
||||
// Distribution.Exemplar.
|
||||
//
|
||||
// The full label set for the exemplars is constructed by using the dropped
|
||||
// pairs in combination with the label values that remain on the aggregated
|
||||
// Distribution time series. The constructed full label set can be used to
|
||||
// identify the specific entity, such as the instance or job, which might be
|
||||
// contributing to a long-tail. However, with dropped labels, the storage
|
||||
// requirements are reduced because only the aggregated distribution values for
|
||||
// a large group of time series are stored.
|
||||
//
|
||||
// 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.
|
||||
message DroppedLabels {
|
||||
// Map from label to its value, for all labels dropped in any aggregation.
|
||||
map<string, string> label = 1;
|
||||
}
|
||||
+90
@@ -0,0 +1,90 @@
|
||||
// Copyright 2021 Google LLC
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// 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.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.monitoring.v3;
|
||||
|
||||
import "google/api/resource.proto";
|
||||
|
||||
option csharp_namespace = "Google.Cloud.Monitoring.V3";
|
||||
option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "GroupProto";
|
||||
option java_package = "com.google.monitoring.v3";
|
||||
option php_namespace = "Google\\Cloud\\Monitoring\\V3";
|
||||
option ruby_package = "Google::Cloud::Monitoring::V3";
|
||||
|
||||
// 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.
|
||||
message Group {
|
||||
option (google.api.resource) = {
|
||||
type: "monitoring.googleapis.com/Group"
|
||||
pattern: "projects/{project}/groups/{group}"
|
||||
pattern: "organizations/{organization}/groups/{group}"
|
||||
pattern: "folders/{folder}/groups/{group}"
|
||||
pattern: "*"
|
||||
};
|
||||
|
||||
// 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.
|
||||
string name = 1;
|
||||
|
||||
// A user-assigned name for this group, used only for display purposes.
|
||||
string display_name = 2;
|
||||
|
||||
// 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, `""`.
|
||||
string parent_name = 3;
|
||||
|
||||
// The filter used to determine which monitored resources belong to this
|
||||
// group.
|
||||
string filter = 5;
|
||||
|
||||
// If true, the members of this group are considered to be a cluster.
|
||||
// The system can perform additional analysis on groups that are clusters.
|
||||
bool is_cluster = 6;
|
||||
}
|
||||
+290
@@ -0,0 +1,290 @@
|
||||
// Copyright 2021 Google LLC
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// 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.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.monitoring.v3;
|
||||
|
||||
import "google/api/annotations.proto";
|
||||
import "google/api/client.proto";
|
||||
import "google/api/field_behavior.proto";
|
||||
import "google/api/monitored_resource.proto";
|
||||
import "google/api/resource.proto";
|
||||
import "google/monitoring/v3/common.proto";
|
||||
import "google/monitoring/v3/group.proto";
|
||||
import "google/protobuf/empty.proto";
|
||||
|
||||
option csharp_namespace = "Google.Cloud.Monitoring.V3";
|
||||
option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "GroupServiceProto";
|
||||
option java_package = "com.google.monitoring.v3";
|
||||
option php_namespace = "Google\\Cloud\\Monitoring\\V3";
|
||||
option ruby_package = "Google::Cloud::Monitoring::V3";
|
||||
|
||||
// The Group API lets you inspect and manage your
|
||||
// [groups](#google.monitoring.v3.Group).
|
||||
//
|
||||
// A group is a named filter that is used to identify
|
||||
// a collection of monitored resources. Groups are typically used to
|
||||
// mirror the physical and/or logical topology of the environment.
|
||||
// Because group membership is computed dynamically, monitored
|
||||
// resources that are started in the future are automatically placed
|
||||
// in matching groups. By using a group to name monitored resources in,
|
||||
// for example, an alert policy, the target of that alert policy is
|
||||
// updated automatically as monitored resources are added and removed
|
||||
// from the infrastructure.
|
||||
service GroupService {
|
||||
option (google.api.default_host) = "monitoring.googleapis.com";
|
||||
option (google.api.oauth_scopes) =
|
||||
"https://www.googleapis.com/auth/cloud-platform,"
|
||||
"https://www.googleapis.com/auth/monitoring,"
|
||||
"https://www.googleapis.com/auth/monitoring.read";
|
||||
|
||||
// Lists the existing groups.
|
||||
rpc ListGroups(ListGroupsRequest) returns (ListGroupsResponse) {
|
||||
option (google.api.http) = {
|
||||
get: "/v3/{name=projects/*}/groups"
|
||||
};
|
||||
option (google.api.method_signature) = "name";
|
||||
}
|
||||
|
||||
// Gets a single group.
|
||||
rpc GetGroup(GetGroupRequest) returns (Group) {
|
||||
option (google.api.http) = {
|
||||
get: "/v3/{name=projects/*/groups/*}"
|
||||
};
|
||||
option (google.api.method_signature) = "name";
|
||||
}
|
||||
|
||||
// Creates a new group.
|
||||
rpc CreateGroup(CreateGroupRequest) returns (Group) {
|
||||
option (google.api.http) = {
|
||||
post: "/v3/{name=projects/*}/groups"
|
||||
body: "group"
|
||||
};
|
||||
option (google.api.method_signature) = "name,group";
|
||||
}
|
||||
|
||||
// Updates an existing group.
|
||||
// You can change any group attributes except `name`.
|
||||
rpc UpdateGroup(UpdateGroupRequest) returns (Group) {
|
||||
option (google.api.http) = {
|
||||
put: "/v3/{group.name=projects/*/groups/*}"
|
||||
body: "group"
|
||||
};
|
||||
option (google.api.method_signature) = "group";
|
||||
}
|
||||
|
||||
// Deletes an existing group.
|
||||
rpc DeleteGroup(DeleteGroupRequest) returns (google.protobuf.Empty) {
|
||||
option (google.api.http) = {
|
||||
delete: "/v3/{name=projects/*/groups/*}"
|
||||
};
|
||||
option (google.api.method_signature) = "name";
|
||||
}
|
||||
|
||||
// Lists the monitored resources that are members of a group.
|
||||
rpc ListGroupMembers(ListGroupMembersRequest) returns (ListGroupMembersResponse) {
|
||||
option (google.api.http) = {
|
||||
get: "/v3/{name=projects/*/groups/*}/members"
|
||||
};
|
||||
option (google.api.method_signature) = "name";
|
||||
}
|
||||
}
|
||||
|
||||
// The `ListGroup` request.
|
||||
message ListGroupsRequest {
|
||||
// Required. The [project](https://cloud.google.com/monitoring/api/v3#project_name)
|
||||
// whose groups are to be listed. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]
|
||||
string name = 7 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
child_type: "monitoring.googleapis.com/Group"
|
||||
}
|
||||
];
|
||||
|
||||
// An optional filter consisting of a single group name. The filters limit
|
||||
// the groups returned based on their parent-child relationship with the
|
||||
// specified group. If no filter is specified, all groups are returned.
|
||||
oneof filter {
|
||||
// A group name. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID]
|
||||
//
|
||||
// Returns groups whose `parent_name` field contains the group
|
||||
// name. If no groups have this parent, the results are empty.
|
||||
string children_of_group = 2 [(google.api.resource_reference) = {
|
||||
type: "monitoring.googleapis.com/Group"
|
||||
}];
|
||||
|
||||
// A group name. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID]
|
||||
//
|
||||
// Returns groups that are ancestors of the specified group.
|
||||
// The groups are returned in order, starting with the immediate parent and
|
||||
// ending with the most distant ancestor. If the specified group has no
|
||||
// immediate parent, the results are empty.
|
||||
string ancestors_of_group = 3 [(google.api.resource_reference) = {
|
||||
type: "monitoring.googleapis.com/Group"
|
||||
}];
|
||||
|
||||
// A group name. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID]
|
||||
//
|
||||
// Returns the descendants of the specified group. This is a superset of
|
||||
// the results returned by the `children_of_group` filter, and includes
|
||||
// children-of-children, and so forth.
|
||||
string descendants_of_group = 4 [(google.api.resource_reference) = {
|
||||
type: "monitoring.googleapis.com/Group"
|
||||
}];
|
||||
}
|
||||
|
||||
// A positive number that is the maximum number of results to return.
|
||||
int32 page_size = 5;
|
||||
|
||||
// If this field is not empty then it must contain the `next_page_token` value
|
||||
// returned by a previous call to this method. Using this field causes the
|
||||
// method to return additional results from the previous method call.
|
||||
string page_token = 6;
|
||||
}
|
||||
|
||||
// The `ListGroups` response.
|
||||
message ListGroupsResponse {
|
||||
// The groups that match the specified filters.
|
||||
repeated Group group = 1;
|
||||
|
||||
// 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.
|
||||
string next_page_token = 2;
|
||||
}
|
||||
|
||||
// The `GetGroup` request.
|
||||
message GetGroupRequest {
|
||||
// Required. The group to retrieve. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID]
|
||||
string name = 3 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
type: "monitoring.googleapis.com/Group"
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
// The `CreateGroup` request.
|
||||
message CreateGroupRequest {
|
||||
// Required. The [project](https://cloud.google.com/monitoring/api/v3#project_name) in
|
||||
// which to create the group. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]
|
||||
string name = 4 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
child_type: "monitoring.googleapis.com/Group"
|
||||
}
|
||||
];
|
||||
|
||||
// Required. A group definition. It is an error to define the `name` field because
|
||||
// the system assigns the name.
|
||||
Group group = 2 [(google.api.field_behavior) = REQUIRED];
|
||||
|
||||
// If true, validate this request but do not create the group.
|
||||
bool validate_only = 3;
|
||||
}
|
||||
|
||||
// The `UpdateGroup` request.
|
||||
message UpdateGroupRequest {
|
||||
// Required. The new definition of the group. All fields of the existing group,
|
||||
// excepting `name`, are replaced with the corresponding fields of this group.
|
||||
Group group = 2 [(google.api.field_behavior) = REQUIRED];
|
||||
|
||||
// If true, validate this request but do not update the existing group.
|
||||
bool validate_only = 3;
|
||||
}
|
||||
|
||||
// The `DeleteGroup` request. The default behavior is to be able to delete a
|
||||
// single group without any descendants.
|
||||
message DeleteGroupRequest {
|
||||
// Required. The group to delete. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID]
|
||||
string name = 3 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
type: "monitoring.googleapis.com/Group"
|
||||
}
|
||||
];
|
||||
|
||||
// If this field is true, then the request means to delete a group with all
|
||||
// its descendants. Otherwise, the request means to delete a group only when
|
||||
// it has no descendants. The default value is false.
|
||||
bool recursive = 4;
|
||||
}
|
||||
|
||||
// The `ListGroupMembers` request.
|
||||
message ListGroupMembersRequest {
|
||||
// Required. The group whose members are listed. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID]
|
||||
string name = 7 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
type: "monitoring.googleapis.com/Group"
|
||||
}
|
||||
];
|
||||
|
||||
// A positive number that is the maximum number of results to return.
|
||||
int32 page_size = 3;
|
||||
|
||||
// If this field is not empty then it must contain the `next_page_token` value
|
||||
// returned by a previous call to this method. Using this field causes the
|
||||
// method to return additional results from the previous method call.
|
||||
string page_token = 4;
|
||||
|
||||
// An optional [list
|
||||
// filter](https://cloud.google.com/monitoring/api/learn_more#filtering)
|
||||
// describing the members to be returned. The filter may reference the type,
|
||||
// labels, and metadata of monitored resources that comprise the group. For
|
||||
// example, to return only resources representing Compute Engine VM instances,
|
||||
// use this filter:
|
||||
//
|
||||
// `resource.type = "gce_instance"`
|
||||
string filter = 5;
|
||||
|
||||
// An optional time interval for which results should be returned. Only
|
||||
// members that were part of the group during the specified interval are
|
||||
// included in the response. If no interval is provided then the group
|
||||
// membership over the last minute is returned.
|
||||
TimeInterval interval = 6;
|
||||
}
|
||||
|
||||
// The `ListGroupMembers` response.
|
||||
message ListGroupMembersResponse {
|
||||
// A set of monitored resources in the group.
|
||||
repeated google.api.MonitoredResource members = 1;
|
||||
|
||||
// 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.
|
||||
string next_page_token = 2;
|
||||
|
||||
// The total number of elements matching this request.
|
||||
int32 total_size = 3;
|
||||
}
|
||||
+241
@@ -0,0 +1,241 @@
|
||||
// Copyright 2021 Google LLC
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// 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.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.monitoring.v3;
|
||||
|
||||
import "google/api/distribution.proto";
|
||||
import "google/api/label.proto";
|
||||
import "google/api/metric.proto";
|
||||
import "google/api/monitored_resource.proto";
|
||||
import "google/monitoring/v3/common.proto";
|
||||
import "google/protobuf/duration.proto";
|
||||
|
||||
option csharp_namespace = "Google.Cloud.Monitoring.V3";
|
||||
option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "MetricProto";
|
||||
option java_package = "com.google.monitoring.v3";
|
||||
option php_namespace = "Google\\Cloud\\Monitoring\\V3";
|
||||
option ruby_package = "Google::Cloud::Monitoring::V3";
|
||||
|
||||
// A single data point in a time series.
|
||||
message Point {
|
||||
// The time interval to which the data point applies. For `GAUGE` metrics,
|
||||
// the start time is optional, but if it is supplied, it must equal the
|
||||
// end time. For `DELTA` metrics, the start
|
||||
// and end time should specify a non-zero interval, with subsequent points
|
||||
// specifying contiguous and non-overlapping intervals. For `CUMULATIVE`
|
||||
// metrics, the start and end time should specify a non-zero interval, with
|
||||
// subsequent points specifying the same start time and increasing end times,
|
||||
// until an event resets the cumulative value to zero and sets a new start
|
||||
// time for the following points.
|
||||
TimeInterval interval = 1;
|
||||
|
||||
// The value of the data point.
|
||||
TypedValue value = 2;
|
||||
}
|
||||
|
||||
// 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.
|
||||
message TimeSeries {
|
||||
// The associated metric. A fully-specified metric used to identify the time
|
||||
// series.
|
||||
google.api.Metric metric = 1;
|
||||
|
||||
// The associated monitored resource. Custom metrics can use only certain
|
||||
// monitored resource types in their time series data. For more information,
|
||||
// see [Monitored resources for custom
|
||||
// metrics](https://cloud.google.com/monitoring/custom-metrics/creating-metrics#custom-metric-resources).
|
||||
google.api.MonitoredResource resource = 2;
|
||||
|
||||
// Output only. The associated monitored resource metadata. When reading a
|
||||
// time series, this field will include metadata labels that are explicitly
|
||||
// named in the reduction. When creating a time series, this field is ignored.
|
||||
google.api.MonitoredResourceMetadata metadata = 7;
|
||||
|
||||
// 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`.
|
||||
google.api.MetricDescriptor.MetricKind metric_kind = 3;
|
||||
|
||||
// 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.
|
||||
google.api.MetricDescriptor.ValueType value_type = 4;
|
||||
|
||||
// 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`.
|
||||
repeated Point points = 5;
|
||||
|
||||
// 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.
|
||||
string unit = 8;
|
||||
}
|
||||
|
||||
// A descriptor for the labels and points in a time series.
|
||||
message TimeSeriesDescriptor {
|
||||
// A descriptor for the value columns in a data point.
|
||||
message ValueDescriptor {
|
||||
// The value key.
|
||||
string key = 1;
|
||||
|
||||
// The value type.
|
||||
google.api.MetricDescriptor.ValueType value_type = 2;
|
||||
|
||||
// The value stream kind.
|
||||
google.api.MetricDescriptor.MetricKind metric_kind = 3;
|
||||
|
||||
// The unit in which `time_series` point values are reported. `unit`
|
||||
// follows the UCUM format for units as seen in
|
||||
// https://unitsofmeasure.org/ucum.html.
|
||||
// `unit` is only valid if `value_type` is INTEGER, DOUBLE, DISTRIBUTION.
|
||||
string unit = 4;
|
||||
}
|
||||
|
||||
// Descriptors for the labels.
|
||||
repeated google.api.LabelDescriptor label_descriptors = 1;
|
||||
|
||||
// Descriptors for the point data value columns.
|
||||
repeated ValueDescriptor point_descriptors = 5;
|
||||
}
|
||||
|
||||
// Represents the values of a time series associated with a
|
||||
// TimeSeriesDescriptor.
|
||||
message TimeSeriesData {
|
||||
// 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.
|
||||
message PointData {
|
||||
// The values that make up the point.
|
||||
repeated TypedValue values = 1;
|
||||
|
||||
// The time interval associated with the point.
|
||||
TimeInterval time_interval = 2;
|
||||
}
|
||||
|
||||
// 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`.
|
||||
repeated LabelValue label_values = 1;
|
||||
|
||||
// The points in the time series.
|
||||
repeated PointData point_data = 2;
|
||||
}
|
||||
|
||||
// A label value.
|
||||
message LabelValue {
|
||||
// The label value can be a bool, int64, or string.
|
||||
oneof value {
|
||||
// A bool label value.
|
||||
bool bool_value = 1;
|
||||
|
||||
// An int64 label value.
|
||||
int64 int64_value = 2;
|
||||
|
||||
// A string label value.
|
||||
string string_value = 3;
|
||||
}
|
||||
}
|
||||
|
||||
// An error associated with a query in the time series query language format.
|
||||
message QueryError {
|
||||
// The location of the time series query language text that this error applies
|
||||
// to.
|
||||
TextLocator locator = 1;
|
||||
|
||||
// The error message.
|
||||
string message = 2;
|
||||
}
|
||||
|
||||
// A locator for text. Indicates a particular part of the text of a request or
|
||||
// of an object referenced in the request.
|
||||
//
|
||||
// For example, suppose the request field `text` contains:
|
||||
//
|
||||
// text: "The quick brown fox jumps over the lazy dog."
|
||||
//
|
||||
// Then the locator:
|
||||
//
|
||||
// source: "text"
|
||||
// start_position {
|
||||
// line: 1
|
||||
// column: 17
|
||||
// }
|
||||
// end_position {
|
||||
// line: 1
|
||||
// column: 19
|
||||
// }
|
||||
//
|
||||
// refers to the part of the text: "fox".
|
||||
message TextLocator {
|
||||
// The position of a byte within the text.
|
||||
message Position {
|
||||
// The line, starting with 1, where the byte is positioned.
|
||||
int32 line = 1;
|
||||
|
||||
// The column within the line, starting with 1, where the byte is
|
||||
// positioned. This is a byte index even though the text is UTF-8.
|
||||
int32 column = 2;
|
||||
}
|
||||
|
||||
// The source of the text. The source may be a field in the request, in which
|
||||
// case its format is the format of the
|
||||
// google.rpc.BadRequest.FieldViolation.field field in
|
||||
// https://cloud.google.com/apis/design/errors#error_details. It may also be
|
||||
// be a source other than the request field (e.g. a macro definition
|
||||
// referenced in the text of the query), in which case this is the name of
|
||||
// the source (e.g. the macro name).
|
||||
string source = 1;
|
||||
|
||||
// The position of the first byte within the text.
|
||||
Position start_position = 2;
|
||||
|
||||
// The position of the last byte within the text.
|
||||
Position end_position = 3;
|
||||
|
||||
// If `source`, `start_position`, and `end_position` describe a call on
|
||||
// some object (e.g. a macro in the time series query language text) and a
|
||||
// location is to be designated in that object's text, `nested_locator`
|
||||
// identifies the location within that object.
|
||||
TextLocator nested_locator = 4;
|
||||
|
||||
// When `nested_locator` is set, this field gives the reason for the nesting.
|
||||
// Usually, the reason is a macro invocation. In that case, the macro name
|
||||
// (including the leading '@') signals the location of the macro call
|
||||
// in the text and a macro argument name (including the leading '$') signals
|
||||
// the location of the macro argument inside the macro body that got
|
||||
// substituted away.
|
||||
string nesting_reason = 5;
|
||||
}
|
||||
+524
@@ -0,0 +1,524 @@
|
||||
// Copyright 2021 Google LLC
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// 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.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.monitoring.v3;
|
||||
|
||||
import "google/api/annotations.proto";
|
||||
import "google/api/client.proto";
|
||||
import "google/api/field_behavior.proto";
|
||||
import "google/api/metric.proto";
|
||||
import "google/api/monitored_resource.proto";
|
||||
import "google/api/resource.proto";
|
||||
import "google/monitoring/v3/alert.proto";
|
||||
import "google/monitoring/v3/common.proto";
|
||||
import "google/monitoring/v3/metric.proto";
|
||||
import "google/protobuf/duration.proto";
|
||||
import "google/protobuf/empty.proto";
|
||||
import "google/rpc/status.proto";
|
||||
|
||||
option csharp_namespace = "Google.Cloud.Monitoring.V3";
|
||||
option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "MetricServiceProto";
|
||||
option java_package = "com.google.monitoring.v3";
|
||||
option php_namespace = "Google\\Cloud\\Monitoring\\V3";
|
||||
option ruby_package = "Google::Cloud::Monitoring::V3";
|
||||
option (google.api.resource_definition) = {
|
||||
type: "monitoring.googleapis.com/MetricDescriptor"
|
||||
pattern: "projects/{project}/metricDescriptors/{metric_descriptor=**}"
|
||||
pattern: "organizations/{organization}/metricDescriptors/{metric_descriptor=**}"
|
||||
pattern: "folders/{folder}/metricDescriptors/{metric_descriptor=**}"
|
||||
pattern: "*"
|
||||
history: ORIGINALLY_SINGLE_PATTERN
|
||||
};
|
||||
option (google.api.resource_definition) = {
|
||||
type: "monitoring.googleapis.com/MonitoredResourceDescriptor"
|
||||
pattern: "projects/{project}/monitoredResourceDescriptors/{monitored_resource_descriptor}"
|
||||
pattern: "organizations/{organization}/monitoredResourceDescriptors/{monitored_resource_descriptor}"
|
||||
pattern: "folders/{folder}/monitoredResourceDescriptors/{monitored_resource_descriptor}"
|
||||
pattern: "*"
|
||||
history: ORIGINALLY_SINGLE_PATTERN
|
||||
};
|
||||
option (google.api.resource_definition) = {
|
||||
type: "monitoring.googleapis.com/Workspace"
|
||||
pattern: "projects/{project}"
|
||||
pattern: "workspaces/{workspace}"
|
||||
};
|
||||
option (google.api.resource_definition) = {
|
||||
type: "monitoring.googleapis.com/TimeSeries"
|
||||
pattern: "projects/{project}/timeSeries/{time_series}"
|
||||
pattern: "organizations/{organization}/timeSeries/{time_series}"
|
||||
pattern: "folders/{folder}/timeSeries/{time_series}"
|
||||
};
|
||||
|
||||
// Manages metric descriptors, monitored resource descriptors, and
|
||||
// time series data.
|
||||
service MetricService {
|
||||
option (google.api.default_host) = "monitoring.googleapis.com";
|
||||
option (google.api.oauth_scopes) =
|
||||
"https://www.googleapis.com/auth/cloud-platform,"
|
||||
"https://www.googleapis.com/auth/monitoring,"
|
||||
"https://www.googleapis.com/auth/monitoring.read,"
|
||||
"https://www.googleapis.com/auth/monitoring.write";
|
||||
|
||||
// Lists monitored resource descriptors that match a filter. This method does not require a Workspace.
|
||||
rpc ListMonitoredResourceDescriptors(ListMonitoredResourceDescriptorsRequest) returns (ListMonitoredResourceDescriptorsResponse) {
|
||||
option (google.api.http) = {
|
||||
get: "/v3/{name=projects/*}/monitoredResourceDescriptors"
|
||||
};
|
||||
option (google.api.method_signature) = "name";
|
||||
}
|
||||
|
||||
// Gets a single monitored resource descriptor. This method does not require a Workspace.
|
||||
rpc GetMonitoredResourceDescriptor(GetMonitoredResourceDescriptorRequest) returns (google.api.MonitoredResourceDescriptor) {
|
||||
option (google.api.http) = {
|
||||
get: "/v3/{name=projects/*/monitoredResourceDescriptors/**}"
|
||||
};
|
||||
option (google.api.method_signature) = "name";
|
||||
}
|
||||
|
||||
// Lists metric descriptors that match a filter. This method does not require a Workspace.
|
||||
rpc ListMetricDescriptors(ListMetricDescriptorsRequest) returns (ListMetricDescriptorsResponse) {
|
||||
option (google.api.http) = {
|
||||
get: "/v3/{name=projects/*}/metricDescriptors"
|
||||
};
|
||||
option (google.api.method_signature) = "name";
|
||||
}
|
||||
|
||||
// Gets a single metric descriptor. This method does not require a Workspace.
|
||||
rpc GetMetricDescriptor(GetMetricDescriptorRequest) returns (google.api.MetricDescriptor) {
|
||||
option (google.api.http) = {
|
||||
get: "/v3/{name=projects/*/metricDescriptors/**}"
|
||||
};
|
||||
option (google.api.method_signature) = "name";
|
||||
}
|
||||
|
||||
// Creates a new metric descriptor.
|
||||
// The creation is executed asynchronously and callers may check the returned
|
||||
// operation to track its progress.
|
||||
// User-created metric descriptors define
|
||||
// [custom metrics](https://cloud.google.com/monitoring/custom-metrics).
|
||||
rpc CreateMetricDescriptor(CreateMetricDescriptorRequest) returns (google.api.MetricDescriptor) {
|
||||
option (google.api.http) = {
|
||||
post: "/v3/{name=projects/*}/metricDescriptors"
|
||||
body: "metric_descriptor"
|
||||
};
|
||||
option (google.api.method_signature) = "name,metric_descriptor";
|
||||
}
|
||||
|
||||
// Deletes a metric descriptor. Only user-created
|
||||
// [custom metrics](https://cloud.google.com/monitoring/custom-metrics) can be
|
||||
// deleted.
|
||||
rpc DeleteMetricDescriptor(DeleteMetricDescriptorRequest) returns (google.protobuf.Empty) {
|
||||
option (google.api.http) = {
|
||||
delete: "/v3/{name=projects/*/metricDescriptors/**}"
|
||||
};
|
||||
option (google.api.method_signature) = "name";
|
||||
}
|
||||
|
||||
// Lists time series that match a filter. This method does not require a Workspace.
|
||||
rpc ListTimeSeries(ListTimeSeriesRequest) returns (ListTimeSeriesResponse) {
|
||||
option (google.api.http) = {
|
||||
get: "/v3/{name=projects/*}/timeSeries"
|
||||
additional_bindings {
|
||||
get: "/v3/{name=organizations/*}/timeSeries"
|
||||
}
|
||||
additional_bindings {
|
||||
get: "/v3/{name=folders/*}/timeSeries"
|
||||
}
|
||||
};
|
||||
option (google.api.method_signature) = "name,filter,interval,view";
|
||||
}
|
||||
|
||||
// Creates or adds data to one or more time series.
|
||||
// The response is empty if all time series in the request were written.
|
||||
// If any time series could not be written, a corresponding failure message is
|
||||
// included in the error response.
|
||||
rpc CreateTimeSeries(CreateTimeSeriesRequest) returns (google.protobuf.Empty) {
|
||||
option (google.api.http) = {
|
||||
post: "/v3/{name=projects/*}/timeSeries"
|
||||
body: "*"
|
||||
};
|
||||
option (google.api.method_signature) = "name,time_series";
|
||||
}
|
||||
|
||||
// Creates or adds data to one or more service time series. A service time
|
||||
// series is a time series for a metric from a Google Cloud service. The
|
||||
// response is empty if all time series in the request were written. If any
|
||||
// time series could not be written, a corresponding failure message is
|
||||
// included in the error response. This endpoint rejects writes to
|
||||
// user-defined metrics.
|
||||
// This method is only for use by Google Cloud services. Use
|
||||
// [projects.timeSeries.create][google.monitoring.v3.MetricService.CreateTimeSeries]
|
||||
// instead.
|
||||
rpc CreateServiceTimeSeries(CreateTimeSeriesRequest) returns (google.protobuf.Empty) {
|
||||
option (google.api.http) = {
|
||||
post: "/v3/{name=projects/*}/timeSeries:createService"
|
||||
body: "*"
|
||||
};
|
||||
option (google.api.method_signature) = "name,time_series";
|
||||
}
|
||||
}
|
||||
|
||||
// The `ListMonitoredResourceDescriptors` request.
|
||||
message ListMonitoredResourceDescriptorsRequest {
|
||||
// Required. The [project](https://cloud.google.com/monitoring/api/v3#project_name) on
|
||||
// which to execute the request. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]
|
||||
string name = 5 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
child_type: "monitoring.googleapis.com/MonitoredResourceDescriptor"
|
||||
}
|
||||
];
|
||||
|
||||
// An optional [filter](https://cloud.google.com/monitoring/api/v3/filters)
|
||||
// describing the descriptors to be returned. The filter can reference the
|
||||
// descriptor's type and labels. For example, the following filter returns
|
||||
// only Google Compute Engine descriptors that have an `id` label:
|
||||
//
|
||||
// resource.type = starts_with("gce_") AND resource.label:id
|
||||
string filter = 2;
|
||||
|
||||
// A positive number that is the maximum number of results to return.
|
||||
int32 page_size = 3;
|
||||
|
||||
// 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.
|
||||
string page_token = 4;
|
||||
}
|
||||
|
||||
// The `ListMonitoredResourceDescriptors` response.
|
||||
message ListMonitoredResourceDescriptorsResponse {
|
||||
// The monitored resource descriptors that are available to this project
|
||||
// and that match `filter`, if present.
|
||||
repeated google.api.MonitoredResourceDescriptor resource_descriptors = 1;
|
||||
|
||||
// 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.
|
||||
string next_page_token = 2;
|
||||
}
|
||||
|
||||
// The `GetMonitoredResourceDescriptor` request.
|
||||
message GetMonitoredResourceDescriptorRequest {
|
||||
// Required. The monitored resource descriptor to get. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]/monitoredResourceDescriptors/[RESOURCE_TYPE]
|
||||
//
|
||||
// The `[RESOURCE_TYPE]` is a predefined type, such as
|
||||
// `cloudsql_database`.
|
||||
string name = 3 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
type: "monitoring.googleapis.com/MonitoredResourceDescriptor"
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
// The `ListMetricDescriptors` request.
|
||||
message ListMetricDescriptorsRequest {
|
||||
// Required. The [project](https://cloud.google.com/monitoring/api/v3#project_name) on
|
||||
// which to execute the request. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]
|
||||
string name = 5 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
child_type: "monitoring.googleapis.com/MetricDescriptor"
|
||||
}
|
||||
];
|
||||
|
||||
// If this field is empty, all custom and
|
||||
// system-defined metric descriptors are returned.
|
||||
// Otherwise, the [filter](https://cloud.google.com/monitoring/api/v3/filters)
|
||||
// specifies which metric descriptors are to be
|
||||
// returned. For example, the following filter matches all
|
||||
// [custom metrics](https://cloud.google.com/monitoring/custom-metrics):
|
||||
//
|
||||
// metric.type = starts_with("custom.googleapis.com/")
|
||||
string filter = 2;
|
||||
|
||||
// A positive number that is the maximum number of results to return.
|
||||
int32 page_size = 3;
|
||||
|
||||
// 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.
|
||||
string page_token = 4;
|
||||
}
|
||||
|
||||
// The `ListMetricDescriptors` response.
|
||||
message ListMetricDescriptorsResponse {
|
||||
// The metric descriptors that are available to the project
|
||||
// and that match the value of `filter`, if present.
|
||||
repeated google.api.MetricDescriptor metric_descriptors = 1;
|
||||
|
||||
// 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.
|
||||
string next_page_token = 2;
|
||||
}
|
||||
|
||||
// The `GetMetricDescriptor` request.
|
||||
message GetMetricDescriptorRequest {
|
||||
// Required. The metric descriptor on which to execute the request. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]/metricDescriptors/[METRIC_ID]
|
||||
//
|
||||
// An example value of `[METRIC_ID]` is
|
||||
// `"compute.googleapis.com/instance/disk/read_bytes_count"`.
|
||||
string name = 3 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
type: "monitoring.googleapis.com/MetricDescriptor"
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
// The `CreateMetricDescriptor` request.
|
||||
message CreateMetricDescriptorRequest {
|
||||
// Required. The [project](https://cloud.google.com/monitoring/api/v3#project_name) on
|
||||
// which to execute the request. The format is:
|
||||
// 4
|
||||
// projects/[PROJECT_ID_OR_NUMBER]
|
||||
string name = 3 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
child_type: "monitoring.googleapis.com/MetricDescriptor"
|
||||
}
|
||||
];
|
||||
|
||||
// Required. The new [custom metric](https://cloud.google.com/monitoring/custom-metrics)
|
||||
// descriptor.
|
||||
google.api.MetricDescriptor metric_descriptor = 2 [(google.api.field_behavior) = REQUIRED];
|
||||
}
|
||||
|
||||
// The `DeleteMetricDescriptor` request.
|
||||
message DeleteMetricDescriptorRequest {
|
||||
// Required. The metric descriptor on which to execute the request. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]/metricDescriptors/[METRIC_ID]
|
||||
//
|
||||
// An example of `[METRIC_ID]` is:
|
||||
// `"custom.googleapis.com/my_test_metric"`.
|
||||
string name = 3 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
type: "monitoring.googleapis.com/MetricDescriptor"
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
// The `ListTimeSeries` request.
|
||||
message ListTimeSeriesRequest {
|
||||
// Controls which fields are returned by `ListTimeSeries`.
|
||||
enum TimeSeriesView {
|
||||
// Returns the identity of the metric(s), the time series,
|
||||
// and the time series data.
|
||||
FULL = 0;
|
||||
|
||||
// Returns the identity of the metric and the time series resource,
|
||||
// but not the time series data.
|
||||
HEADERS = 1;
|
||||
}
|
||||
|
||||
// Required. The [project](https://cloud.google.com/monitoring/api/v3#project_name),
|
||||
// organization or folder on which to execute the request. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]
|
||||
// organizations/[ORGANIZATION_ID]
|
||||
// folders/[FOLDER_ID]
|
||||
string name = 10 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
child_type: "monitoring.googleapis.com/TimeSeries"
|
||||
}
|
||||
];
|
||||
|
||||
// Required. A [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters)
|
||||
// that specifies which time series should be returned. The filter must
|
||||
// specify a single metric type, and can additionally specify metric labels
|
||||
// and other information. For example:
|
||||
//
|
||||
// metric.type = "compute.googleapis.com/instance/cpu/usage_time" AND
|
||||
// metric.labels.instance_name = "my-instance-name"
|
||||
string filter = 2 [(google.api.field_behavior) = REQUIRED];
|
||||
|
||||
// Required. The time interval for which results should be returned. Only time series
|
||||
// that contain data points in the specified interval are included
|
||||
// in the response.
|
||||
TimeInterval interval = 4 [(google.api.field_behavior) = REQUIRED];
|
||||
|
||||
// Specifies the alignment of data points in individual time series as
|
||||
// well as how to combine the retrieved time series across specified labels.
|
||||
//
|
||||
// By default (if no `aggregation` is explicitly specified), the raw time
|
||||
// series data is returned.
|
||||
Aggregation aggregation = 5;
|
||||
|
||||
// Apply a second aggregation after `aggregation` is applied. May only be
|
||||
// specified if `aggregation` is specified.
|
||||
Aggregation secondary_aggregation = 11;
|
||||
|
||||
// Unsupported: must be left blank. The points in each time series are
|
||||
// currently returned in reverse time order (most recent to oldest).
|
||||
string order_by = 6;
|
||||
|
||||
// Required. Specifies which information is returned about the time series.
|
||||
TimeSeriesView view = 7 [(google.api.field_behavior) = REQUIRED];
|
||||
|
||||
// A positive number that is the maximum number of results to return. If
|
||||
// `page_size` is empty or more than 100,000 results, the effective
|
||||
// `page_size` is 100,000 results. If `view` is set to `FULL`, this is the
|
||||
// maximum number of `Points` returned. If `view` is set to `HEADERS`, this is
|
||||
// the maximum number of `TimeSeries` returned.
|
||||
int32 page_size = 8;
|
||||
|
||||
// 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.
|
||||
string page_token = 9;
|
||||
}
|
||||
|
||||
// The `ListTimeSeries` response.
|
||||
message ListTimeSeriesResponse {
|
||||
// One or more time series that match the filter included in the request.
|
||||
repeated TimeSeries time_series = 1;
|
||||
|
||||
// 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.
|
||||
string next_page_token = 2;
|
||||
|
||||
// Query execution errors that may have caused the time series data returned
|
||||
// to be incomplete.
|
||||
repeated google.rpc.Status execution_errors = 3;
|
||||
|
||||
// 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}".
|
||||
string unit = 5;
|
||||
}
|
||||
|
||||
// The `CreateTimeSeries` request.
|
||||
message CreateTimeSeriesRequest {
|
||||
// Required. The [project](https://cloud.google.com/monitoring/api/v3#project_name) on
|
||||
// which to execute the request. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]
|
||||
string name = 3 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
type: "cloudresourcemanager.googleapis.com/Project"
|
||||
}
|
||||
];
|
||||
|
||||
// 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.
|
||||
repeated TimeSeries time_series = 2 [(google.api.field_behavior) = REQUIRED];
|
||||
}
|
||||
|
||||
// DEPRECATED. Used to hold per-time-series error status.
|
||||
message CreateTimeSeriesError {
|
||||
// DEPRECATED. Time series ID that resulted in the `status` error.
|
||||
TimeSeries time_series = 1 [deprecated = true];
|
||||
|
||||
// DEPRECATED. The status of the requested write operation for `time_series`.
|
||||
google.rpc.Status status = 2 [deprecated = true];
|
||||
}
|
||||
|
||||
// Summary of the result of a failed request to write data to a time series.
|
||||
message CreateTimeSeriesSummary {
|
||||
// Detailed information about an error category.
|
||||
message Error {
|
||||
// The status of the requested write operation.
|
||||
google.rpc.Status status = 1;
|
||||
|
||||
// The number of points that couldn't be written because of `status`.
|
||||
int32 point_count = 2;
|
||||
}
|
||||
|
||||
// The number of points in the request.
|
||||
int32 total_point_count = 1;
|
||||
|
||||
// The number of points that were successfully written.
|
||||
int32 success_point_count = 2;
|
||||
|
||||
// The number of points that failed to be written. Order is not guaranteed.
|
||||
repeated Error errors = 3;
|
||||
}
|
||||
|
||||
// The `QueryTimeSeries` request.
|
||||
message QueryTimeSeriesRequest {
|
||||
// Required. The [project](https://cloud.google.com/monitoring/api/v3#project_name) on
|
||||
// which to execute the request. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]
|
||||
string name = 1 [(google.api.field_behavior) = REQUIRED];
|
||||
|
||||
// Required. The query in the [Monitoring Query
|
||||
// Language](https://cloud.google.com/monitoring/mql/reference) format.
|
||||
// The default time zone is in UTC.
|
||||
string query = 7 [(google.api.field_behavior) = REQUIRED];
|
||||
|
||||
// A positive number that is the maximum number of time_series_data to return.
|
||||
int32 page_size = 9;
|
||||
|
||||
// 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.
|
||||
string page_token = 10;
|
||||
}
|
||||
|
||||
// The `QueryTimeSeries` response.
|
||||
message QueryTimeSeriesResponse {
|
||||
// The descriptor for the time series data.
|
||||
TimeSeriesDescriptor time_series_descriptor = 8;
|
||||
|
||||
// The time series data.
|
||||
repeated TimeSeriesData time_series_data = 9;
|
||||
|
||||
// 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.
|
||||
string next_page_token = 10;
|
||||
|
||||
// Query execution errors that may have caused the time series data returned
|
||||
// to be incomplete. The available data will be available in the
|
||||
// response.
|
||||
repeated google.rpc.Status partial_errors = 11;
|
||||
}
|
||||
|
||||
// This is an error detail intended to be used with INVALID_ARGUMENT errors.
|
||||
message QueryErrorList {
|
||||
// Errors in parsing the time series query language text. The number of errors
|
||||
// in the response may be limited.
|
||||
repeated QueryError errors = 1;
|
||||
|
||||
// A summary of all the errors.
|
||||
string error_summary = 2;
|
||||
}
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
// Copyright 2021 Google LLC
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// 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.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.monitoring.v3;
|
||||
|
||||
import "google/protobuf/timestamp.proto";
|
||||
|
||||
option csharp_namespace = "Google.Cloud.Monitoring.V3";
|
||||
option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "MutationRecordProto";
|
||||
option java_package = "com.google.monitoring.v3";
|
||||
option php_namespace = "Google\\Cloud\\Monitoring\\V3";
|
||||
option ruby_package = "Google::Cloud::Monitoring::V3";
|
||||
|
||||
// Describes a change made to a configuration.
|
||||
message MutationRecord {
|
||||
// When the change occurred.
|
||||
google.protobuf.Timestamp mutate_time = 1;
|
||||
|
||||
// The email address of the user making the change.
|
||||
string mutated_by = 2;
|
||||
}
|
||||
+193
@@ -0,0 +1,193 @@
|
||||
// Copyright 2021 Google LLC
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// 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.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.monitoring.v3;
|
||||
|
||||
import "google/api/label.proto";
|
||||
import "google/api/launch_stage.proto";
|
||||
import "google/api/resource.proto";
|
||||
import "google/monitoring/v3/common.proto";
|
||||
import "google/monitoring/v3/mutation_record.proto";
|
||||
import "google/protobuf/wrappers.proto";
|
||||
|
||||
option csharp_namespace = "Google.Cloud.Monitoring.V3";
|
||||
option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "NotificationProto";
|
||||
option java_package = "com.google.monitoring.v3";
|
||||
option php_namespace = "Google\\Cloud\\Monitoring\\V3";
|
||||
option ruby_package = "Google::Cloud::Monitoring::V3";
|
||||
|
||||
// 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.
|
||||
message NotificationChannelDescriptor {
|
||||
option (google.api.resource) = {
|
||||
type: "monitoring.googleapis.com/NotificationChannelDescriptor"
|
||||
pattern: "projects/{project}/notificationChannelDescriptors/{channel_descriptor}"
|
||||
pattern: "organizations/{organization}/notificationChannelDescriptors/{channel_descriptor}"
|
||||
pattern: "folders/{folder}/notificationChannelDescriptors/{channel_descriptor}"
|
||||
pattern: "*"
|
||||
};
|
||||
|
||||
// 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.
|
||||
string name = 6;
|
||||
|
||||
// The type of notification channel, such as "email" and "sms". To view the
|
||||
// full list of channels, see
|
||||
// [Channel
|
||||
// descriptors](https://cloud.google.com/monitoring/alerts/using-channels-api#ncd).
|
||||
// Notification channel types are globally unique.
|
||||
string type = 1;
|
||||
|
||||
// A human-readable name for the notification channel type. This
|
||||
// form of the name is suitable for a user interface.
|
||||
string display_name = 2;
|
||||
|
||||
// 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.
|
||||
string description = 3;
|
||||
|
||||
// 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.
|
||||
repeated google.api.LabelDescriptor labels = 4;
|
||||
|
||||
// The tiers that support this notification channel; the project service tier
|
||||
// must be one of the supported_tiers.
|
||||
repeated ServiceTier supported_tiers = 5 [deprecated = true];
|
||||
|
||||
// The product launch stage for channels of this type.
|
||||
google.api.LaunchStage launch_stage = 7;
|
||||
}
|
||||
|
||||
// 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.
|
||||
message NotificationChannel {
|
||||
option (google.api.resource) = {
|
||||
type: "monitoring.googleapis.com/NotificationChannel"
|
||||
pattern: "projects/{project}/notificationChannels/{notification_channel}"
|
||||
pattern: "organizations/{organization}/notificationChannels/{notification_channel}"
|
||||
pattern: "folders/{folder}/notificationChannels/{notification_channel}"
|
||||
pattern: "*"
|
||||
};
|
||||
|
||||
// Indicates whether the channel has been verified or not. It is illegal
|
||||
// to specify this field in a
|
||||
// [`CreateNotificationChannel`][google.monitoring.v3.NotificationChannelService.CreateNotificationChannel]
|
||||
// or an
|
||||
// [`UpdateNotificationChannel`][google.monitoring.v3.NotificationChannelService.UpdateNotificationChannel]
|
||||
// operation.
|
||||
enum VerificationStatus {
|
||||
// Sentinel value used to indicate that the state is unknown, omitted, or
|
||||
// is not applicable (as in the case of channels that neither support
|
||||
// nor require verification in order to function).
|
||||
VERIFICATION_STATUS_UNSPECIFIED = 0;
|
||||
|
||||
// The channel has yet to be verified and requires verification to function.
|
||||
// Note that this state also applies to the case where the verification
|
||||
// process has been initiated by sending a verification code but where
|
||||
// the verification code has not been submitted to complete the process.
|
||||
UNVERIFIED = 1;
|
||||
|
||||
// It has been proven that notifications can be received on this
|
||||
// notification channel and that someone on the project has access
|
||||
// to messages that are delivered to that channel.
|
||||
VERIFIED = 2;
|
||||
}
|
||||
|
||||
// The type of the notification channel. This field matches the
|
||||
// value of the [NotificationChannelDescriptor.type][google.monitoring.v3.NotificationChannelDescriptor.type] field.
|
||||
string type = 1;
|
||||
|
||||
// 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.
|
||||
string name = 6;
|
||||
|
||||
// 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.
|
||||
string display_name = 3;
|
||||
|
||||
// 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.
|
||||
string description = 4;
|
||||
|
||||
// Configuration fields that define the channel and its behavior. The
|
||||
// permissible and required labels are specified in the
|
||||
// [NotificationChannelDescriptor.labels][google.monitoring.v3.NotificationChannelDescriptor.labels] of the
|
||||
// `NotificationChannelDescriptor` corresponding to the `type` field.
|
||||
map<string, string> labels = 5;
|
||||
|
||||
// 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.
|
||||
map<string, string> user_labels = 8;
|
||||
|
||||
// Indicates whether this channel has been verified or not. On a
|
||||
// [`ListNotificationChannels`][google.monitoring.v3.NotificationChannelService.ListNotificationChannels]
|
||||
// or
|
||||
// [`GetNotificationChannel`][google.monitoring.v3.NotificationChannelService.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`][google.monitoring.v3.NotificationChannelService.UpdateNotificationChannel]
|
||||
// operation. To change the value of this field, you must call
|
||||
// [`VerifyNotificationChannel`][google.monitoring.v3.NotificationChannelService.VerifyNotificationChannel].
|
||||
VerificationStatus verification_status = 9;
|
||||
|
||||
// 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.
|
||||
google.protobuf.BoolValue enabled = 11;
|
||||
|
||||
// Record of the creation of this channel.
|
||||
MutationRecord creation_record = 12;
|
||||
|
||||
// Records of the modification of this channel.
|
||||
repeated MutationRecord mutation_records = 13;
|
||||
}
|
||||
+415
@@ -0,0 +1,415 @@
|
||||
// Copyright 2021 Google LLC
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// 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.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.monitoring.v3;
|
||||
|
||||
import "google/api/annotations.proto";
|
||||
import "google/api/client.proto";
|
||||
import "google/api/field_behavior.proto";
|
||||
import "google/api/resource.proto";
|
||||
import "google/monitoring/v3/notification.proto";
|
||||
import "google/protobuf/empty.proto";
|
||||
import "google/protobuf/field_mask.proto";
|
||||
import "google/protobuf/struct.proto";
|
||||
import "google/protobuf/timestamp.proto";
|
||||
|
||||
option csharp_namespace = "Google.Cloud.Monitoring.V3";
|
||||
option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "NotificationServiceProto";
|
||||
option java_package = "com.google.monitoring.v3";
|
||||
option php_namespace = "Google\\Cloud\\Monitoring\\V3";
|
||||
option ruby_package = "Google::Cloud::Monitoring::V3";
|
||||
|
||||
// The Notification Channel API provides access to configuration that
|
||||
// controls how messages related to incidents are sent.
|
||||
service NotificationChannelService {
|
||||
option (google.api.default_host) = "monitoring.googleapis.com";
|
||||
option (google.api.oauth_scopes) =
|
||||
"https://www.googleapis.com/auth/cloud-platform,"
|
||||
"https://www.googleapis.com/auth/monitoring,"
|
||||
"https://www.googleapis.com/auth/monitoring.read";
|
||||
|
||||
// Lists the descriptors for supported channel types. The use of descriptors
|
||||
// makes it possible for new channel types to be dynamically added.
|
||||
rpc ListNotificationChannelDescriptors(ListNotificationChannelDescriptorsRequest) returns (ListNotificationChannelDescriptorsResponse) {
|
||||
option (google.api.http) = {
|
||||
get: "/v3/{name=projects/*}/notificationChannelDescriptors"
|
||||
};
|
||||
option (google.api.method_signature) = "name";
|
||||
}
|
||||
|
||||
// Gets a single channel descriptor. The descriptor indicates which fields
|
||||
// are expected / permitted for a notification channel of the given type.
|
||||
rpc GetNotificationChannelDescriptor(GetNotificationChannelDescriptorRequest) returns (NotificationChannelDescriptor) {
|
||||
option (google.api.http) = {
|
||||
get: "/v3/{name=projects/*/notificationChannelDescriptors/*}"
|
||||
};
|
||||
option (google.api.method_signature) = "name";
|
||||
}
|
||||
|
||||
// Lists the notification channels that have been created for the project.
|
||||
rpc ListNotificationChannels(ListNotificationChannelsRequest) returns (ListNotificationChannelsResponse) {
|
||||
option (google.api.http) = {
|
||||
get: "/v3/{name=projects/*}/notificationChannels"
|
||||
};
|
||||
option (google.api.method_signature) = "name";
|
||||
}
|
||||
|
||||
// Gets a single notification channel. The channel includes the relevant
|
||||
// configuration details with which the channel was created. However, the
|
||||
// response may truncate or omit passwords, API keys, or other private key
|
||||
// matter and thus the response may not be 100% identical to the information
|
||||
// that was supplied in the call to the create method.
|
||||
rpc GetNotificationChannel(GetNotificationChannelRequest) returns (NotificationChannel) {
|
||||
option (google.api.http) = {
|
||||
get: "/v3/{name=projects/*/notificationChannels/*}"
|
||||
};
|
||||
option (google.api.method_signature) = "name";
|
||||
}
|
||||
|
||||
// Creates a new notification channel, representing a single notification
|
||||
// endpoint such as an email address, SMS number, or PagerDuty service.
|
||||
rpc CreateNotificationChannel(CreateNotificationChannelRequest) returns (NotificationChannel) {
|
||||
option (google.api.http) = {
|
||||
post: "/v3/{name=projects/*}/notificationChannels"
|
||||
body: "notification_channel"
|
||||
};
|
||||
option (google.api.method_signature) = "name,notification_channel";
|
||||
}
|
||||
|
||||
// Updates a notification channel. Fields not specified in the field mask
|
||||
// remain unchanged.
|
||||
rpc UpdateNotificationChannel(UpdateNotificationChannelRequest) returns (NotificationChannel) {
|
||||
option (google.api.http) = {
|
||||
patch: "/v3/{notification_channel.name=projects/*/notificationChannels/*}"
|
||||
body: "notification_channel"
|
||||
};
|
||||
option (google.api.method_signature) = "update_mask,notification_channel";
|
||||
}
|
||||
|
||||
// Deletes a notification channel.
|
||||
rpc DeleteNotificationChannel(DeleteNotificationChannelRequest) returns (google.protobuf.Empty) {
|
||||
option (google.api.http) = {
|
||||
delete: "/v3/{name=projects/*/notificationChannels/*}"
|
||||
};
|
||||
option (google.api.method_signature) = "name,force";
|
||||
}
|
||||
|
||||
// Causes a verification code to be delivered to the channel. The code
|
||||
// can then be supplied in `VerifyNotificationChannel` to verify the channel.
|
||||
rpc SendNotificationChannelVerificationCode(SendNotificationChannelVerificationCodeRequest) returns (google.protobuf.Empty) {
|
||||
option (google.api.http) = {
|
||||
post: "/v3/{name=projects/*/notificationChannels/*}:sendVerificationCode"
|
||||
body: "*"
|
||||
};
|
||||
option (google.api.method_signature) = "name";
|
||||
}
|
||||
|
||||
// Requests a verification code for an already verified channel that can then
|
||||
// be used in a call to VerifyNotificationChannel() on a different channel
|
||||
// with an equivalent identity in the same or in a different project. This
|
||||
// makes it possible to copy a channel between projects without requiring
|
||||
// manual reverification of the channel. If the channel is not in the
|
||||
// verified state, this method will fail (in other words, this may only be
|
||||
// used if the SendNotificationChannelVerificationCode and
|
||||
// VerifyNotificationChannel paths have already been used to put the given
|
||||
// channel into the verified state).
|
||||
//
|
||||
// There is no guarantee that the verification codes returned by this method
|
||||
// will be of a similar structure or form as the ones that are delivered
|
||||
// to the channel via SendNotificationChannelVerificationCode; while
|
||||
// VerifyNotificationChannel() will recognize both the codes delivered via
|
||||
// SendNotificationChannelVerificationCode() and returned from
|
||||
// GetNotificationChannelVerificationCode(), it is typically the case that
|
||||
// the verification codes delivered via
|
||||
// SendNotificationChannelVerificationCode() will be shorter and also
|
||||
// have a shorter expiration (e.g. codes such as "G-123456") whereas
|
||||
// GetVerificationCode() will typically return a much longer, websafe base
|
||||
// 64 encoded string that has a longer expiration time.
|
||||
rpc GetNotificationChannelVerificationCode(GetNotificationChannelVerificationCodeRequest) returns (GetNotificationChannelVerificationCodeResponse) {
|
||||
option (google.api.http) = {
|
||||
post: "/v3/{name=projects/*/notificationChannels/*}:getVerificationCode"
|
||||
body: "*"
|
||||
};
|
||||
option (google.api.method_signature) = "name";
|
||||
}
|
||||
|
||||
// Verifies a `NotificationChannel` by proving receipt of the code
|
||||
// delivered to the channel as a result of calling
|
||||
// `SendNotificationChannelVerificationCode`.
|
||||
rpc VerifyNotificationChannel(VerifyNotificationChannelRequest) returns (NotificationChannel) {
|
||||
option (google.api.http) = {
|
||||
post: "/v3/{name=projects/*/notificationChannels/*}:verify"
|
||||
body: "*"
|
||||
};
|
||||
option (google.api.method_signature) = "name,code";
|
||||
}
|
||||
}
|
||||
|
||||
// The `ListNotificationChannelDescriptors` request.
|
||||
message ListNotificationChannelDescriptorsRequest {
|
||||
// Required. The REST resource name of the parent from which to retrieve
|
||||
// the notification channel descriptors. The expected syntax is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]
|
||||
//
|
||||
// Note that this
|
||||
// [names](https://cloud.google.com/monitoring/api/v3#project_name) the parent
|
||||
// container in which to look for the descriptors; to retrieve a single
|
||||
// descriptor by name, use the
|
||||
// [GetNotificationChannelDescriptor][google.monitoring.v3.NotificationChannelService.GetNotificationChannelDescriptor]
|
||||
// operation, instead.
|
||||
string name = 4 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
child_type: "monitoring.googleapis.com/NotificationChannelDescriptor"
|
||||
}
|
||||
];
|
||||
|
||||
// The maximum number of results to return in a single response. If
|
||||
// not set to a positive number, a reasonable value will be chosen by the
|
||||
// service.
|
||||
int32 page_size = 2;
|
||||
|
||||
// If non-empty, `page_token` must contain a value returned as the
|
||||
// `next_page_token` in a previous response to request the next set
|
||||
// of results.
|
||||
string page_token = 3;
|
||||
}
|
||||
|
||||
// The `ListNotificationChannelDescriptors` response.
|
||||
message ListNotificationChannelDescriptorsResponse {
|
||||
// The monitored resource descriptors supported for the specified
|
||||
// project, optionally filtered.
|
||||
repeated NotificationChannelDescriptor channel_descriptors = 1;
|
||||
|
||||
// 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.
|
||||
string next_page_token = 2;
|
||||
}
|
||||
|
||||
// The `GetNotificationChannelDescriptor` response.
|
||||
message GetNotificationChannelDescriptorRequest {
|
||||
// Required. The channel type for which to execute the request. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]/notificationChannelDescriptors/[CHANNEL_TYPE]
|
||||
string name = 3 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
type: "monitoring.googleapis.com/NotificationChannelDescriptor"
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
// The `CreateNotificationChannel` request.
|
||||
message CreateNotificationChannelRequest {
|
||||
// Required. The [project](https://cloud.google.com/monitoring/api/v3#project_name) on
|
||||
// which to execute the request. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]
|
||||
//
|
||||
// This names the container into which the channel will be
|
||||
// written, this does not name the newly created channel. The resulting
|
||||
// channel's name will have a normalized version of this field as a prefix,
|
||||
// but will add `/notificationChannels/[CHANNEL_ID]` to identify the channel.
|
||||
string name = 3 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
child_type: "monitoring.googleapis.com/NotificationChannel"
|
||||
}
|
||||
];
|
||||
|
||||
// Required. The definition of the `NotificationChannel` to create.
|
||||
NotificationChannel notification_channel = 2 [(google.api.field_behavior) = REQUIRED];
|
||||
}
|
||||
|
||||
// The `ListNotificationChannels` request.
|
||||
message ListNotificationChannelsRequest {
|
||||
// Required. The [project](https://cloud.google.com/monitoring/api/v3#project_name) on
|
||||
// which to execute the request. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]
|
||||
//
|
||||
// This names the container
|
||||
// in which to look for the notification channels; it does not name a
|
||||
// specific channel. To query a specific channel by REST resource name, use
|
||||
// the
|
||||
// [`GetNotificationChannel`][google.monitoring.v3.NotificationChannelService.GetNotificationChannel]
|
||||
// operation.
|
||||
string name = 5 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
child_type: "monitoring.googleapis.com/NotificationChannel"
|
||||
}
|
||||
];
|
||||
|
||||
// If provided, this field specifies the criteria that must be met by
|
||||
// notification channels to be included in the response.
|
||||
//
|
||||
// For more details, see [sorting and
|
||||
// filtering](https://cloud.google.com/monitoring/api/v3/sorting-and-filtering).
|
||||
string filter = 6;
|
||||
|
||||
// A comma-separated list of fields by which to sort the result. Supports
|
||||
// the same set of fields as in `filter`. Entries can be prefixed with
|
||||
// a minus sign to sort in descending rather than ascending order.
|
||||
//
|
||||
// For more details, see [sorting and
|
||||
// filtering](https://cloud.google.com/monitoring/api/v3/sorting-and-filtering).
|
||||
string order_by = 7;
|
||||
|
||||
// The maximum number of results to return in a single response. If
|
||||
// not set to a positive number, a reasonable value will be chosen by the
|
||||
// service.
|
||||
int32 page_size = 3;
|
||||
|
||||
// If non-empty, `page_token` must contain a value returned as the
|
||||
// `next_page_token` in a previous response to request the next set
|
||||
// of results.
|
||||
string page_token = 4;
|
||||
}
|
||||
|
||||
// The `ListNotificationChannels` response.
|
||||
message ListNotificationChannelsResponse {
|
||||
// The notification channels defined for the specified project.
|
||||
repeated NotificationChannel notification_channels = 3;
|
||||
|
||||
// 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.
|
||||
string next_page_token = 2;
|
||||
|
||||
// The total number of notification channels in all pages. This number is only
|
||||
// an estimate, and may change in subsequent pages. https://aip.dev/158
|
||||
int32 total_size = 4;
|
||||
}
|
||||
|
||||
// The `GetNotificationChannel` request.
|
||||
message GetNotificationChannelRequest {
|
||||
// Required. The channel for which to execute the request. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]/notificationChannels/[CHANNEL_ID]
|
||||
string name = 3 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
type: "monitoring.googleapis.com/NotificationChannel"
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
// The `UpdateNotificationChannel` request.
|
||||
message UpdateNotificationChannelRequest {
|
||||
// The fields to update.
|
||||
google.protobuf.FieldMask update_mask = 2;
|
||||
|
||||
// Required. A description of the changes to be applied to the specified
|
||||
// notification channel. The description must provide a definition for
|
||||
// fields to be updated; the names of these fields should also be
|
||||
// included in the `update_mask`.
|
||||
NotificationChannel notification_channel = 3 [(google.api.field_behavior) = REQUIRED];
|
||||
}
|
||||
|
||||
// The `DeleteNotificationChannel` request.
|
||||
message DeleteNotificationChannelRequest {
|
||||
// Required. The channel for which to execute the request. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]/notificationChannels/[CHANNEL_ID]
|
||||
string name = 3 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
type: "monitoring.googleapis.com/NotificationChannel"
|
||||
}
|
||||
];
|
||||
|
||||
// If true, the notification channel will be deleted regardless of its
|
||||
// use in alert policies (the policies will be updated to remove the
|
||||
// channel). If false, channels that are still referenced by an existing
|
||||
// alerting policy will fail to be deleted in a delete operation.
|
||||
bool force = 5;
|
||||
}
|
||||
|
||||
// The `SendNotificationChannelVerificationCode` request.
|
||||
message SendNotificationChannelVerificationCodeRequest {
|
||||
// Required. The notification channel to which to send a verification code.
|
||||
string name = 1 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
type: "monitoring.googleapis.com/NotificationChannel"
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
// The `GetNotificationChannelVerificationCode` request.
|
||||
message GetNotificationChannelVerificationCodeRequest {
|
||||
// Required. The notification channel for which a verification code is to be generated
|
||||
// and retrieved. This must name a channel that is already verified; if
|
||||
// the specified channel is not verified, the request will fail.
|
||||
string name = 1 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
type: "monitoring.googleapis.com/NotificationChannel"
|
||||
}
|
||||
];
|
||||
|
||||
// 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).
|
||||
google.protobuf.Timestamp expire_time = 2;
|
||||
}
|
||||
|
||||
// The `GetNotificationChannelVerificationCode` request.
|
||||
message GetNotificationChannelVerificationCodeResponse {
|
||||
// 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).
|
||||
string code = 1;
|
||||
|
||||
// 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.
|
||||
google.protobuf.Timestamp expire_time = 2;
|
||||
}
|
||||
|
||||
// The `VerifyNotificationChannel` request.
|
||||
message VerifyNotificationChannelRequest {
|
||||
// Required. The notification channel to verify.
|
||||
string name = 1 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
type: "monitoring.googleapis.com/NotificationChannel"
|
||||
}
|
||||
];
|
||||
|
||||
// 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).
|
||||
string code = 2 [(google.api.field_behavior) = REQUIRED];
|
||||
}
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
// Copyright 2021 Google LLC
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// 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.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.monitoring.v3;
|
||||
|
||||
import "google/api/annotations.proto";
|
||||
import "google/api/label.proto";
|
||||
import "google/monitoring/v3/metric.proto";
|
||||
import "google/monitoring/v3/metric_service.proto";
|
||||
import "google/api/client.proto";
|
||||
|
||||
option csharp_namespace = "Google.Cloud.Monitoring.V3";
|
||||
option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "QueryServiceProto";
|
||||
option java_package = "com.google.monitoring.v3";
|
||||
option php_namespace = "Google\\Cloud\\Monitoring\\V3";
|
||||
option ruby_package = "Google::Cloud::Monitoring::V3";
|
||||
|
||||
// The QueryService API is used to manage time series data in Stackdriver
|
||||
// Monitoring. Time series data is a collection of data points that describes
|
||||
// the time-varying values of a metric.
|
||||
service QueryService {
|
||||
option (google.api.default_host) = "monitoring.googleapis.com";
|
||||
option (google.api.oauth_scopes) =
|
||||
"https://www.googleapis.com/auth/cloud-platform,"
|
||||
"https://www.googleapis.com/auth/monitoring,"
|
||||
"https://www.googleapis.com/auth/monitoring.read";
|
||||
|
||||
// Queries time series using Monitoring Query Language. This method does not require a Workspace.
|
||||
rpc QueryTimeSeries(QueryTimeSeriesRequest) returns (QueryTimeSeriesResponse) {
|
||||
option (google.api.http) = {
|
||||
post: "/v3/{name=projects/*}/timeSeries:query"
|
||||
body: "*"
|
||||
};
|
||||
}
|
||||
}
|
||||
+459
@@ -0,0 +1,459 @@
|
||||
// Copyright 2021 Google LLC
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// 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.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.monitoring.v3;
|
||||
|
||||
import "google/api/field_behavior.proto";
|
||||
import "google/api/resource.proto";
|
||||
import "google/protobuf/duration.proto";
|
||||
import "google/protobuf/timestamp.proto";
|
||||
import "google/type/calendar_period.proto";
|
||||
|
||||
option csharp_namespace = "Google.Cloud.Monitoring.V3";
|
||||
option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "ServiceMonitoringProto";
|
||||
option java_package = "com.google.monitoring.v3";
|
||||
option php_namespace = "Google\\Cloud\\Monitoring\\V3";
|
||||
option ruby_package = "Google::Cloud::Monitoring::V3";
|
||||
|
||||
// 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.
|
||||
message Service {
|
||||
option (google.api.resource) = {
|
||||
type: "monitoring.googleapis.com/Service"
|
||||
pattern: "projects/{project}/services/{service}"
|
||||
pattern: "organizations/{organization}/services/{service}"
|
||||
pattern: "folders/{folder}/services/{service}"
|
||||
pattern: "*"
|
||||
};
|
||||
|
||||
// Custom view of service telemetry. Currently a place-holder pending final
|
||||
// design.
|
||||
message Custom {
|
||||
|
||||
}
|
||||
|
||||
// App Engine service. Learn more at https://cloud.google.com/appengine.
|
||||
message AppEngine {
|
||||
// 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
|
||||
string module_id = 1;
|
||||
}
|
||||
|
||||
// Cloud Endpoints service. Learn more at https://cloud.google.com/endpoints.
|
||||
message CloudEndpoints {
|
||||
// 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
|
||||
string service = 1;
|
||||
}
|
||||
|
||||
// Istio service scoped to a single Kubernetes cluster. Learn more at
|
||||
// https://istio.io. Clusters running OSS Istio will have their services
|
||||
// ingested as this type.
|
||||
message ClusterIstio {
|
||||
// The location of the Kubernetes cluster in which this Istio service is
|
||||
// defined. Corresponds to the `location` resource label in `k8s_cluster`
|
||||
// resources.
|
||||
string location = 1;
|
||||
|
||||
// The name of the Kubernetes cluster in which this Istio service is
|
||||
// defined. Corresponds to the `cluster_name` resource label in
|
||||
// `k8s_cluster` resources.
|
||||
string cluster_name = 2;
|
||||
|
||||
// The namespace of the Istio service underlying this service. Corresponds
|
||||
// to the `destination_service_namespace` metric label in Istio metrics.
|
||||
string service_namespace = 3;
|
||||
|
||||
// The name of the Istio service underlying this service. Corresponds to the
|
||||
// `destination_service_name` metric label in Istio metrics.
|
||||
string service_name = 4;
|
||||
}
|
||||
|
||||
// Istio service scoped to an Istio mesh. Anthos clusters running ASM < 1.6.8
|
||||
// will have their services ingested as this type.
|
||||
message MeshIstio {
|
||||
// Identifier for the mesh in which this Istio service is defined.
|
||||
// Corresponds to the `mesh_uid` metric label in Istio metrics.
|
||||
string mesh_uid = 1;
|
||||
|
||||
// The namespace of the Istio service underlying this service. Corresponds
|
||||
// to the `destination_service_namespace` metric label in Istio metrics.
|
||||
string service_namespace = 3;
|
||||
|
||||
// The name of the Istio service underlying this service. Corresponds to the
|
||||
// `destination_service_name` metric label in Istio metrics.
|
||||
string service_name = 4;
|
||||
}
|
||||
|
||||
// Canonical service scoped to an Istio mesh. Anthos clusters running ASM >=
|
||||
// 1.6.8 will have their services ingested as this type.
|
||||
message IstioCanonicalService {
|
||||
// Identifier for the Istio mesh in which this canonical service is defined.
|
||||
// Corresponds to the `mesh_uid` metric label in
|
||||
// [Istio metrics](https://cloud.google.com/monitoring/api/metrics_istio).
|
||||
string mesh_uid = 1;
|
||||
|
||||
// The namespace of the canonical service underlying this service.
|
||||
// Corresponds to the `destination_canonical_service_namespace` metric
|
||||
// label in [Istio
|
||||
// metrics](https://cloud.google.com/monitoring/api/metrics_istio).
|
||||
string canonical_service_namespace = 3;
|
||||
|
||||
// The name of the canonical service underlying this service.
|
||||
// Corresponds to the `destination_canonical_service_name` metric label in
|
||||
// label in [Istio
|
||||
// metrics](https://cloud.google.com/monitoring/api/metrics_istio).
|
||||
string canonical_service = 4;
|
||||
}
|
||||
|
||||
// Configuration for how to query telemetry on a Service.
|
||||
message Telemetry {
|
||||
// The full name of the resource that defines this service. Formatted as
|
||||
// described in https://cloud.google.com/apis/design/resource_names.
|
||||
string resource_name = 1;
|
||||
}
|
||||
|
||||
// Resource name for this Service. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]
|
||||
string name = 1;
|
||||
|
||||
// Name used for UI elements listing this Service.
|
||||
string display_name = 2;
|
||||
|
||||
// REQUIRED. Service-identifying atoms specifying the underlying service.
|
||||
oneof identifier {
|
||||
// Custom service type.
|
||||
Custom custom = 6;
|
||||
|
||||
// Type used for App Engine services.
|
||||
AppEngine app_engine = 7;
|
||||
|
||||
// Type used for Cloud Endpoints services.
|
||||
CloudEndpoints cloud_endpoints = 8;
|
||||
|
||||
// Type used for Istio services that live in a Kubernetes cluster.
|
||||
ClusterIstio cluster_istio = 9;
|
||||
|
||||
// Type used for Istio services scoped to an Istio mesh.
|
||||
MeshIstio mesh_istio = 10;
|
||||
|
||||
// Type used for canonical services scoped to an Istio mesh.
|
||||
// Metrics for Istio are
|
||||
// [documented here](https://istio.io/latest/docs/reference/config/metrics/)
|
||||
IstioCanonicalService istio_canonical_service = 11;
|
||||
}
|
||||
|
||||
// Configuration for how to query telemetry on a Service.
|
||||
Telemetry telemetry = 13;
|
||||
|
||||
// Labels which have been used to annotate the service. Label keys must start
|
||||
// with a letter. Label keys and values may contain lowercase letters,
|
||||
// numbers, underscores, and dashes. Label keys and values have a maximum
|
||||
// length of 63 characters, and must be less than 128 bytes in size. Up to 64
|
||||
// label entries may be stored. For labels which do not have a semantic value,
|
||||
// the empty string may be supplied for the label value.
|
||||
map<string, string> user_labels = 14;
|
||||
}
|
||||
|
||||
// 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."
|
||||
message ServiceLevelObjective {
|
||||
option (google.api.resource) = {
|
||||
type: "monitoring.googleapis.com/ServiceLevelObjective"
|
||||
pattern: "projects/{project}/services/{service}/serviceLevelObjectives/{service_level_objective}"
|
||||
pattern: "organizations/{organization}/services/{service}/serviceLevelObjectives/{service_level_objective}"
|
||||
pattern: "folders/{folder}/services/{service}/serviceLevelObjectives/{service_level_objective}"
|
||||
pattern: "*"
|
||||
history: ORIGINALLY_SINGLE_PATTERN
|
||||
};
|
||||
|
||||
// `ServiceLevelObjective.View` determines what form of
|
||||
// `ServiceLevelObjective` is returned from `GetServiceLevelObjective`,
|
||||
// `ListServiceLevelObjectives`, and `ListServiceLevelObjectiveVersions` RPCs.
|
||||
enum View {
|
||||
// Same as FULL.
|
||||
VIEW_UNSPECIFIED = 0;
|
||||
|
||||
// Return the embedded `ServiceLevelIndicator` in the form in which it was
|
||||
// defined. If it was defined using a `BasicSli`, return that `BasicSli`.
|
||||
FULL = 2;
|
||||
|
||||
// For `ServiceLevelIndicator`s using `BasicSli` articulation, instead
|
||||
// return the `ServiceLevelIndicator` with its mode of computation fully
|
||||
// spelled out as a `RequestBasedSli`. For `ServiceLevelIndicator`s using
|
||||
// `RequestBasedSli` or `WindowsBasedSli`, return the
|
||||
// `ServiceLevelIndicator` as it was provided.
|
||||
EXPLICIT = 1;
|
||||
}
|
||||
|
||||
// Resource name for this `ServiceLevelObjective`. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]/serviceLevelObjectives/[SLO_NAME]
|
||||
string name = 1;
|
||||
|
||||
// Name used for UI elements listing this SLO.
|
||||
string display_name = 11;
|
||||
|
||||
// The definition of good service, used to measure and calculate the quality
|
||||
// of the `Service`'s performance with respect to a single aspect of service
|
||||
// quality.
|
||||
ServiceLevelIndicator service_level_indicator = 3;
|
||||
|
||||
// The fraction of service that must be good in order for this objective to be
|
||||
// met. `0 < goal <= 0.999`.
|
||||
double goal = 4;
|
||||
|
||||
// The time period over which the objective will be evaluated.
|
||||
oneof period {
|
||||
// A rolling time period, semantically "in the past `<rolling_period>`".
|
||||
// Must be an integer multiple of 1 day no larger than 30 days.
|
||||
google.protobuf.Duration rolling_period = 5;
|
||||
|
||||
// A calendar period, semantically "since the start of the current
|
||||
// `<calendar_period>`". At this time, only `DAY`, `WEEK`, `FORTNIGHT`, and
|
||||
// `MONTH` are supported.
|
||||
google.type.CalendarPeriod calendar_period = 6;
|
||||
}
|
||||
|
||||
// Labels which have been used to annotate the service-level objective. Label
|
||||
// keys must start with a letter. Label keys and values may contain lowercase
|
||||
// letters, numbers, underscores, and dashes. Label keys and values have a
|
||||
// maximum length of 63 characters, and must be less than 128 bytes in size.
|
||||
// Up to 64 label entries may be stored. For labels which do not have a
|
||||
// semantic value, the empty string may be supplied for the label value.
|
||||
map<string, string> user_labels = 12;
|
||||
}
|
||||
|
||||
// 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.
|
||||
message ServiceLevelIndicator {
|
||||
// Service level indicators can be grouped by whether the "unit" of service
|
||||
// being measured is based on counts of good requests or on counts of good
|
||||
// time windows
|
||||
oneof type {
|
||||
// Basic SLI on a well-known service type.
|
||||
BasicSli basic_sli = 4;
|
||||
|
||||
// Request-based SLIs
|
||||
RequestBasedSli request_based = 1;
|
||||
|
||||
// Windows-based SLIs
|
||||
WindowsBasedSli windows_based = 2;
|
||||
}
|
||||
}
|
||||
|
||||
// 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.
|
||||
message BasicSli {
|
||||
// Future parameters for the availability SLI.
|
||||
message AvailabilityCriteria {
|
||||
|
||||
}
|
||||
|
||||
// Parameters for a latency threshold SLI.
|
||||
message LatencyCriteria {
|
||||
// Good service is defined to be the count of requests made to this service
|
||||
// that return in no more than `threshold`.
|
||||
google.protobuf.Duration threshold = 3;
|
||||
}
|
||||
|
||||
// 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.
|
||||
repeated string method = 7;
|
||||
|
||||
// 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.
|
||||
repeated string location = 8;
|
||||
|
||||
// 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.
|
||||
repeated string version = 9;
|
||||
|
||||
// This SLI can be evaluated on the basis of availability or latency.
|
||||
oneof sli_criteria {
|
||||
// Good service is defined to be the count of requests made to this service
|
||||
// that return successfully.
|
||||
AvailabilityCriteria availability = 2;
|
||||
|
||||
// Good service is defined to be the count of requests made to this service
|
||||
// that are fast enough with respect to `latency.threshold`.
|
||||
LatencyCriteria latency = 3;
|
||||
}
|
||||
}
|
||||
|
||||
// Range of numerical values within `min` and `max`.
|
||||
message Range {
|
||||
// Range minimum.
|
||||
double min = 1;
|
||||
|
||||
// Range maximum.
|
||||
double max = 2;
|
||||
}
|
||||
|
||||
// Service Level Indicators for which atomic units of service are counted
|
||||
// directly.
|
||||
message RequestBasedSli {
|
||||
// The means to compute a ratio of `good_service` to `total_service`.
|
||||
oneof method {
|
||||
// `good_total_ratio` is used when the ratio of `good_service` to
|
||||
// `total_service` is computed from two `TimeSeries`.
|
||||
TimeSeriesRatio good_total_ratio = 1;
|
||||
|
||||
// `distribution_cut` is used when `good_service` is a count of values
|
||||
// aggregated in a `Distribution` that fall into a good range. The
|
||||
// `total_service` is the total count of all values aggregated in the
|
||||
// `Distribution`.
|
||||
DistributionCut distribution_cut = 3;
|
||||
}
|
||||
}
|
||||
|
||||
// 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.
|
||||
message TimeSeriesRatio {
|
||||
// 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`.
|
||||
string good_service_filter = 4;
|
||||
|
||||
// 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`.
|
||||
string bad_service_filter = 5;
|
||||
|
||||
// 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`.
|
||||
string total_service_filter = 6;
|
||||
}
|
||||
|
||||
// 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 estimated count of values in the
|
||||
// `Distribution` that fall within the specified `min` and `max`.
|
||||
message DistributionCut {
|
||||
// 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`.
|
||||
string distribution_filter = 4;
|
||||
|
||||
// Range of values considered "good." For a one-sided range, set one bound to
|
||||
// an infinite value.
|
||||
Range range = 5;
|
||||
}
|
||||
|
||||
// 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`.
|
||||
message WindowsBasedSli {
|
||||
// A `PerformanceThreshold` is used when each window is good when that window
|
||||
// has a sufficiently high `performance`.
|
||||
message PerformanceThreshold {
|
||||
// The means, either a request-based SLI or a basic SLI, by which to compute
|
||||
// performance over a window.
|
||||
oneof type {
|
||||
// `RequestBasedSli` to evaluate to judge window quality.
|
||||
RequestBasedSli performance = 1;
|
||||
|
||||
// `BasicSli` to evaluate to judge window quality.
|
||||
BasicSli basic_sli_performance = 3;
|
||||
}
|
||||
|
||||
// If window `performance >= threshold`, the window is counted as good.
|
||||
double threshold = 2;
|
||||
}
|
||||
|
||||
// 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`.
|
||||
message MetricRange {
|
||||
// A [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters)
|
||||
// specifying the `TimeSeries` to use for evaluating window quality.
|
||||
string time_series = 1;
|
||||
|
||||
// Range of values considered "good." For a one-sided range, set one bound
|
||||
// to an infinite value.
|
||||
Range range = 4;
|
||||
}
|
||||
|
||||
// The criterion to use for evaluating window goodness.
|
||||
oneof window_criterion {
|
||||
// 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.
|
||||
string good_bad_metric_filter = 5;
|
||||
|
||||
// A window is good if its `performance` is high enough.
|
||||
PerformanceThreshold good_total_ratio_threshold = 2;
|
||||
|
||||
// A window is good if the metric's value is in a good range, averaged
|
||||
// across returned streams.
|
||||
MetricRange metric_mean_in_range = 6;
|
||||
|
||||
// A window is good if the metric's value is in a good range, summed across
|
||||
// returned streams.
|
||||
MetricRange metric_sum_in_range = 7;
|
||||
}
|
||||
|
||||
// Duration over which window quality is evaluated. Must be an integer
|
||||
// fraction of a day and at least `60s`.
|
||||
google.protobuf.Duration window_period = 4;
|
||||
}
|
||||
+352
@@ -0,0 +1,352 @@
|
||||
// Copyright 2021 Google LLC
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// 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.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.monitoring.v3;
|
||||
|
||||
import "google/api/annotations.proto";
|
||||
import "google/api/client.proto";
|
||||
import "google/api/field_behavior.proto";
|
||||
import "google/api/resource.proto";
|
||||
import "google/monitoring/v3/service.proto";
|
||||
import "google/protobuf/empty.proto";
|
||||
import "google/protobuf/field_mask.proto";
|
||||
|
||||
option csharp_namespace = "Google.Cloud.Monitoring.V3";
|
||||
option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "ServiceMonitoringServiceProto";
|
||||
option java_package = "com.google.monitoring.v3";
|
||||
option php_namespace = "Google\\Cloud\\Monitoring\\V3";
|
||||
option ruby_package = "Google::Cloud::Monitoring::V3";
|
||||
|
||||
// The Cloud Monitoring Service-Oriented Monitoring API has endpoints for
|
||||
// managing and querying aspects of a workspace's services. These include the
|
||||
// `Service`'s monitored resources, its Service-Level Objectives, and a taxonomy
|
||||
// of categorized Health Metrics.
|
||||
service ServiceMonitoringService {
|
||||
option (google.api.default_host) = "monitoring.googleapis.com";
|
||||
option (google.api.oauth_scopes) =
|
||||
"https://www.googleapis.com/auth/cloud-platform,"
|
||||
"https://www.googleapis.com/auth/monitoring,"
|
||||
"https://www.googleapis.com/auth/monitoring.read";
|
||||
|
||||
// Create a `Service`.
|
||||
rpc CreateService(CreateServiceRequest) returns (Service) {
|
||||
option (google.api.http) = {
|
||||
post: "/v3/{parent=*/*}/services"
|
||||
body: "service"
|
||||
};
|
||||
option (google.api.method_signature) = "parent,service";
|
||||
}
|
||||
|
||||
// Get the named `Service`.
|
||||
rpc GetService(GetServiceRequest) returns (Service) {
|
||||
option (google.api.http) = {
|
||||
get: "/v3/{name=*/*/services/*}"
|
||||
};
|
||||
option (google.api.method_signature) = "name";
|
||||
}
|
||||
|
||||
// List `Service`s for this workspace.
|
||||
rpc ListServices(ListServicesRequest) returns (ListServicesResponse) {
|
||||
option (google.api.http) = {
|
||||
get: "/v3/{parent=*/*}/services"
|
||||
};
|
||||
option (google.api.method_signature) = "parent";
|
||||
}
|
||||
|
||||
// Update this `Service`.
|
||||
rpc UpdateService(UpdateServiceRequest) returns (Service) {
|
||||
option (google.api.http) = {
|
||||
patch: "/v3/{service.name=*/*/services/*}"
|
||||
body: "service"
|
||||
};
|
||||
option (google.api.method_signature) = "service";
|
||||
}
|
||||
|
||||
// Soft delete this `Service`.
|
||||
rpc DeleteService(DeleteServiceRequest) returns (google.protobuf.Empty) {
|
||||
option (google.api.http) = {
|
||||
delete: "/v3/{name=*/*/services/*}"
|
||||
};
|
||||
option (google.api.method_signature) = "name";
|
||||
}
|
||||
|
||||
// Create a `ServiceLevelObjective` for the given `Service`.
|
||||
rpc CreateServiceLevelObjective(CreateServiceLevelObjectiveRequest) returns (ServiceLevelObjective) {
|
||||
option (google.api.http) = {
|
||||
post: "/v3/{parent=*/*/services/*}/serviceLevelObjectives"
|
||||
body: "service_level_objective"
|
||||
};
|
||||
option (google.api.method_signature) = "parent,service_level_objective";
|
||||
}
|
||||
|
||||
// Get a `ServiceLevelObjective` by name.
|
||||
rpc GetServiceLevelObjective(GetServiceLevelObjectiveRequest) returns (ServiceLevelObjective) {
|
||||
option (google.api.http) = {
|
||||
get: "/v3/{name=*/*/services/*/serviceLevelObjectives/*}"
|
||||
};
|
||||
option (google.api.method_signature) = "name";
|
||||
}
|
||||
|
||||
// List the `ServiceLevelObjective`s for the given `Service`.
|
||||
rpc ListServiceLevelObjectives(ListServiceLevelObjectivesRequest) returns (ListServiceLevelObjectivesResponse) {
|
||||
option (google.api.http) = {
|
||||
get: "/v3/{parent=*/*/services/*}/serviceLevelObjectives"
|
||||
};
|
||||
option (google.api.method_signature) = "parent";
|
||||
}
|
||||
|
||||
// Update the given `ServiceLevelObjective`.
|
||||
rpc UpdateServiceLevelObjective(UpdateServiceLevelObjectiveRequest) returns (ServiceLevelObjective) {
|
||||
option (google.api.http) = {
|
||||
patch: "/v3/{service_level_objective.name=*/*/services/*/serviceLevelObjectives/*}"
|
||||
body: "service_level_objective"
|
||||
};
|
||||
option (google.api.method_signature) = "service_level_objective";
|
||||
}
|
||||
|
||||
// Delete the given `ServiceLevelObjective`.
|
||||
rpc DeleteServiceLevelObjective(DeleteServiceLevelObjectiveRequest) returns (google.protobuf.Empty) {
|
||||
option (google.api.http) = {
|
||||
delete: "/v3/{name=*/*/services/*/serviceLevelObjectives/*}"
|
||||
};
|
||||
option (google.api.method_signature) = "name";
|
||||
}
|
||||
}
|
||||
|
||||
// The `CreateService` request.
|
||||
message CreateServiceRequest {
|
||||
// Required. Resource [name](https://cloud.google.com/monitoring/api/v3#project_name) of
|
||||
// the parent workspace. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]
|
||||
string parent = 1 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
child_type: "monitoring.googleapis.com/Service"
|
||||
}
|
||||
];
|
||||
|
||||
// Optional. The Service id to use for this Service. If omitted, an id will be
|
||||
// generated instead. Must match the pattern `[a-z0-9\-]+`
|
||||
string service_id = 3;
|
||||
|
||||
// Required. The `Service` to create.
|
||||
Service service = 2 [(google.api.field_behavior) = REQUIRED];
|
||||
}
|
||||
|
||||
// The `GetService` request.
|
||||
message GetServiceRequest {
|
||||
// Required. Resource name of the `Service`. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]
|
||||
string name = 1 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
type: "monitoring.googleapis.com/Service"
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
// The `ListServices` request.
|
||||
message ListServicesRequest {
|
||||
// Required. Resource name of the parent containing the listed services, either a
|
||||
// [project](https://cloud.google.com/monitoring/api/v3#project_name) or a
|
||||
// Monitoring Workspace. The formats are:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]
|
||||
// workspaces/[HOST_PROJECT_ID_OR_NUMBER]
|
||||
string parent = 1 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
child_type: "monitoring.googleapis.com/Service"
|
||||
}
|
||||
];
|
||||
|
||||
// A filter specifying what `Service`s to return. The filter currently
|
||||
// supports the following fields:
|
||||
//
|
||||
// - `identifier_case`
|
||||
// - `app_engine.module_id`
|
||||
// - `cloud_endpoints.service` (reserved for future use)
|
||||
// - `mesh_istio.mesh_uid`
|
||||
// - `mesh_istio.service_namespace`
|
||||
// - `mesh_istio.service_name`
|
||||
// - `cluster_istio.location` (deprecated)
|
||||
// - `cluster_istio.cluster_name` (deprecated)
|
||||
// - `cluster_istio.service_namespace` (deprecated)
|
||||
// - `cluster_istio.service_name` (deprecated)
|
||||
//
|
||||
// `identifier_case` refers to which option in the identifier oneof is
|
||||
// populated. For example, the filter `identifier_case = "CUSTOM"` would match
|
||||
// all services with a value for the `custom` field. Valid options are
|
||||
// "CUSTOM", "APP_ENGINE", "MESH_ISTIO", plus "CLUSTER_ISTIO" (deprecated)
|
||||
// and "CLOUD_ENDPOINTS" (reserved for future use).
|
||||
string filter = 2;
|
||||
|
||||
// A non-negative number that is the maximum number of results to return.
|
||||
// When 0, use default page size.
|
||||
int32 page_size = 3;
|
||||
|
||||
// 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.
|
||||
string page_token = 4;
|
||||
}
|
||||
|
||||
// The `ListServices` response.
|
||||
message ListServicesResponse {
|
||||
// The `Service`s matching the specified filter.
|
||||
repeated Service services = 1;
|
||||
|
||||
// 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.
|
||||
string next_page_token = 2;
|
||||
}
|
||||
|
||||
// The `UpdateService` request.
|
||||
message UpdateServiceRequest {
|
||||
// Required. The `Service` to draw updates from.
|
||||
// The given `name` specifies the resource to update.
|
||||
Service service = 1 [(google.api.field_behavior) = REQUIRED];
|
||||
|
||||
// A set of field paths defining which fields to use for the update.
|
||||
google.protobuf.FieldMask update_mask = 2;
|
||||
}
|
||||
|
||||
// The `DeleteService` request.
|
||||
message DeleteServiceRequest {
|
||||
// Required. Resource name of the `Service` to delete. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]
|
||||
string name = 1 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
type: "monitoring.googleapis.com/Service"
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
// The `CreateServiceLevelObjective` request.
|
||||
message CreateServiceLevelObjectiveRequest {
|
||||
// Required. Resource name of the parent `Service`. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]
|
||||
string parent = 1 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
type: "monitoring.googleapis.com/Service"
|
||||
}
|
||||
];
|
||||
|
||||
// Optional. The ServiceLevelObjective id to use for this
|
||||
// ServiceLevelObjective. If omitted, an id will be generated instead. Must
|
||||
// match the pattern `[a-z0-9\-]+`
|
||||
string service_level_objective_id = 3;
|
||||
|
||||
// Required. The `ServiceLevelObjective` to create.
|
||||
// The provided `name` will be respected if no `ServiceLevelObjective` exists
|
||||
// with this name.
|
||||
ServiceLevelObjective service_level_objective = 2 [(google.api.field_behavior) = REQUIRED];
|
||||
}
|
||||
|
||||
// The `GetServiceLevelObjective` request.
|
||||
message GetServiceLevelObjectiveRequest {
|
||||
// Required. Resource name of the `ServiceLevelObjective` to get. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]/serviceLevelObjectives/[SLO_NAME]
|
||||
string name = 1 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
type: "monitoring.googleapis.com/ServiceLevelObjective"
|
||||
}
|
||||
];
|
||||
|
||||
// View of the `ServiceLevelObjective` to return. If `DEFAULT`, return the
|
||||
// `ServiceLevelObjective` as originally defined. If `EXPLICIT` and the
|
||||
// `ServiceLevelObjective` is defined in terms of a `BasicSli`, replace the
|
||||
// `BasicSli` with a `RequestBasedSli` spelling out how the SLI is computed.
|
||||
ServiceLevelObjective.View view = 2;
|
||||
}
|
||||
|
||||
// The `ListServiceLevelObjectives` request.
|
||||
message ListServiceLevelObjectivesRequest {
|
||||
// Required. Resource name of the parent containing the listed SLOs, either a
|
||||
// project or a Monitoring Workspace. The formats are:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]
|
||||
// workspaces/[HOST_PROJECT_ID_OR_NUMBER]/services/-
|
||||
string parent = 1 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
type: "monitoring.googleapis.com/Service"
|
||||
}
|
||||
];
|
||||
|
||||
// A filter specifying what `ServiceLevelObjective`s to return.
|
||||
string filter = 2;
|
||||
|
||||
// A non-negative number that is the maximum number of results to return.
|
||||
// When 0, use default page size.
|
||||
int32 page_size = 3;
|
||||
|
||||
// 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.
|
||||
string page_token = 4;
|
||||
|
||||
// View of the `ServiceLevelObjective`s to return. If `DEFAULT`, return each
|
||||
// `ServiceLevelObjective` as originally defined. If `EXPLICIT` and the
|
||||
// `ServiceLevelObjective` is defined in terms of a `BasicSli`, replace the
|
||||
// `BasicSli` with a `RequestBasedSli` spelling out how the SLI is computed.
|
||||
ServiceLevelObjective.View view = 5;
|
||||
}
|
||||
|
||||
// The `ListServiceLevelObjectives` response.
|
||||
message ListServiceLevelObjectivesResponse {
|
||||
// The `ServiceLevelObjective`s matching the specified filter.
|
||||
repeated ServiceLevelObjective service_level_objectives = 1;
|
||||
|
||||
// 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.
|
||||
string next_page_token = 2;
|
||||
}
|
||||
|
||||
// The `UpdateServiceLevelObjective` request.
|
||||
message UpdateServiceLevelObjectiveRequest {
|
||||
// Required. The `ServiceLevelObjective` to draw updates from.
|
||||
// The given `name` specifies the resource to update.
|
||||
ServiceLevelObjective service_level_objective = 1 [(google.api.field_behavior) = REQUIRED];
|
||||
|
||||
// A set of field paths defining which fields to use for the update.
|
||||
google.protobuf.FieldMask update_mask = 2;
|
||||
}
|
||||
|
||||
// The `DeleteServiceLevelObjective` request.
|
||||
message DeleteServiceLevelObjectiveRequest {
|
||||
// Required. Resource name of the `ServiceLevelObjective` to delete. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]/serviceLevelObjectives/[SLO_NAME]
|
||||
string name = 1 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
type: "monitoring.googleapis.com/ServiceLevelObjective"
|
||||
}
|
||||
];
|
||||
}
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
// Copyright 2021 Google LLC
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// 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.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.monitoring.v3;
|
||||
|
||||
option csharp_namespace = "Google.Cloud.Monitoring.V3";
|
||||
option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "SpanContextProto";
|
||||
option java_package = "com.google.monitoring.v3";
|
||||
option php_namespace = "Google\\Cloud\\Monitoring\\V3";
|
||||
option ruby_package = "Google::Cloud::Monitoring::V3";
|
||||
|
||||
// The context of a span. This is attached to an
|
||||
// [Exemplar][google.api.Distribution.Exemplar]
|
||||
// in [Distribution][google.api.Distribution] values during aggregation.
|
||||
//
|
||||
// It contains the name of a span with format:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]/traces/[TRACE_ID]/spans/[SPAN_ID]
|
||||
message SpanContext {
|
||||
// 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.
|
||||
string span_name = 1;
|
||||
}
|
||||
+403
@@ -0,0 +1,403 @@
|
||||
// Copyright 2021 Google LLC
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// 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.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.monitoring.v3;
|
||||
|
||||
import "google/api/monitored_resource.proto";
|
||||
import "google/api/resource.proto";
|
||||
import "google/protobuf/duration.proto";
|
||||
|
||||
option csharp_namespace = "Google.Cloud.Monitoring.V3";
|
||||
option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "UptimeProto";
|
||||
option java_package = "com.google.monitoring.v3";
|
||||
option php_namespace = "Google\\Cloud\\Monitoring\\V3";
|
||||
option ruby_package = "Google::Cloud::Monitoring::V3";
|
||||
|
||||
// The regions from which an Uptime check can be run.
|
||||
enum UptimeCheckRegion {
|
||||
// Default value if no region is specified. Will result in Uptime checks
|
||||
// running from all regions.
|
||||
REGION_UNSPECIFIED = 0;
|
||||
|
||||
// Allows checks to run from locations within the United States of America.
|
||||
USA = 1;
|
||||
|
||||
// Allows checks to run from locations within the continent of Europe.
|
||||
EUROPE = 2;
|
||||
|
||||
// Allows checks to run from locations within the continent of South
|
||||
// America.
|
||||
SOUTH_AMERICA = 3;
|
||||
|
||||
// Allows checks to run from locations within the Asia Pacific area (ex:
|
||||
// Singapore).
|
||||
ASIA_PACIFIC = 4;
|
||||
}
|
||||
|
||||
// An internal checker allows Uptime checks to run on private/internal GCP
|
||||
// resources.
|
||||
message InternalChecker {
|
||||
option deprecated = true;
|
||||
|
||||
// Operational states for an internal checker.
|
||||
enum State {
|
||||
// An internal checker should never be in the unspecified state.
|
||||
UNSPECIFIED = 0;
|
||||
|
||||
// The checker is being created, provisioned, and configured. A checker in
|
||||
// this state can be returned by `ListInternalCheckers` or
|
||||
// `GetInternalChecker`, as well as by examining the [long running
|
||||
// Operation](https://cloud.google.com/apis/design/design_patterns#long_running_operations)
|
||||
// that created it.
|
||||
CREATING = 1;
|
||||
|
||||
// The checker is running and available for use. A checker in this state
|
||||
// can be returned by `ListInternalCheckers` or `GetInternalChecker` as
|
||||
// well as by examining the [long running
|
||||
// Operation](https://cloud.google.com/apis/design/design_patterns#long_running_operations)
|
||||
// that created it.
|
||||
// If a checker is being torn down, it is neither visible nor usable, so
|
||||
// there is no "deleting" or "down" state.
|
||||
RUNNING = 2;
|
||||
}
|
||||
|
||||
// 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.
|
||||
string name = 1;
|
||||
|
||||
// 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.
|
||||
string display_name = 2;
|
||||
|
||||
// The [GCP VPC network](https://cloud.google.com/vpc/docs/vpc) where the
|
||||
// internal resource lives (ex: "default").
|
||||
string network = 3;
|
||||
|
||||
// The GCP zone the Uptime check should egress from. Only respected for
|
||||
// internal Uptime checks, where internal_network is specified.
|
||||
string gcp_zone = 4;
|
||||
|
||||
// The GCP project ID where the internal checker lives. Not necessary
|
||||
// the same as the Workspace project.
|
||||
string peer_project_id = 6;
|
||||
|
||||
// The current operational state of the internal checker.
|
||||
State state = 7;
|
||||
}
|
||||
|
||||
// This message configures which resources and services to monitor for
|
||||
// availability.
|
||||
message UptimeCheckConfig {
|
||||
option (google.api.resource) = {
|
||||
type: "monitoring.googleapis.com/UptimeCheckConfig"
|
||||
pattern: "projects/{project}/uptimeCheckConfigs/{uptime_check_config}"
|
||||
pattern: "organizations/{organization}/uptimeCheckConfigs/{uptime_check_config}"
|
||||
pattern: "folders/{folder}/uptimeCheckConfigs/{uptime_check_config}"
|
||||
pattern: "*"
|
||||
};
|
||||
|
||||
// The resource submessage for group checks. It can be used instead of a
|
||||
// monitored resource, when multiple resources are being monitored.
|
||||
message ResourceGroup {
|
||||
// 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]`.
|
||||
string group_id = 1;
|
||||
|
||||
// The resource type of the group members.
|
||||
GroupResourceType resource_type = 2;
|
||||
}
|
||||
|
||||
// Information involved in an HTTP/HTTPS Uptime check request.
|
||||
message HttpCheck {
|
||||
// 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.
|
||||
message BasicAuthentication {
|
||||
// The username to use when authenticating with the HTTP server.
|
||||
string username = 1;
|
||||
|
||||
// The password to use when authenticating with the HTTP server.
|
||||
string password = 2;
|
||||
}
|
||||
|
||||
// The HTTP request method options.
|
||||
enum RequestMethod {
|
||||
// No request method specified.
|
||||
METHOD_UNSPECIFIED = 0;
|
||||
|
||||
// GET request.
|
||||
GET = 1;
|
||||
|
||||
// POST request.
|
||||
POST = 2;
|
||||
}
|
||||
|
||||
// Header options corresponding to the content type of a HTTP request body.
|
||||
enum ContentType {
|
||||
// No content type specified.
|
||||
TYPE_UNSPECIFIED = 0;
|
||||
|
||||
// `body` is in URL-encoded form. Equivalent to setting the `Content-Type`
|
||||
// to `application/x-www-form-urlencoded` in the HTTP request.
|
||||
URL_ENCODED = 1;
|
||||
}
|
||||
|
||||
// The HTTP request method to use for the check. If set to
|
||||
// `METHOD_UNSPECIFIED` then `request_method` defaults to `GET`.
|
||||
RequestMethod request_method = 8;
|
||||
|
||||
// If `true`, use HTTPS instead of HTTP to run the check.
|
||||
bool use_ssl = 1;
|
||||
|
||||
// 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.
|
||||
string path = 2;
|
||||
|
||||
// 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.
|
||||
int32 port = 3;
|
||||
|
||||
// The authentication information. Optional when creating an HTTP check;
|
||||
// defaults to empty.
|
||||
BasicAuthentication auth_info = 4;
|
||||
|
||||
// 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 `******.`
|
||||
bool mask_headers = 5;
|
||||
|
||||
// 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.
|
||||
map<string, string> headers = 6;
|
||||
|
||||
// The content type header to use for the check. The following
|
||||
// configurations result in errors:
|
||||
// 1. Content type is specified in both the `headers` field and the
|
||||
// `content_type` field.
|
||||
// 2. Request method is `GET` and `content_type` is not `TYPE_UNSPECIFIED`
|
||||
// 3. Request method is `POST` and `content_type` is `TYPE_UNSPECIFIED`.
|
||||
// 4. Request method is `POST` and a "Content-Type" header is provided via
|
||||
// `headers` field. The `content_type` field should be used instead.
|
||||
ContentType content_type = 9;
|
||||
|
||||
// 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.
|
||||
bool validate_ssl = 7;
|
||||
|
||||
// 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=".
|
||||
bytes body = 10;
|
||||
}
|
||||
|
||||
// Information required for a TCP Uptime check request.
|
||||
message TcpCheck {
|
||||
// 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.
|
||||
int32 port = 1;
|
||||
}
|
||||
|
||||
// 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.
|
||||
message ContentMatcher {
|
||||
// Options to perform content matching.
|
||||
enum ContentMatcherOption {
|
||||
// No content matcher type specified (maintained for backward
|
||||
// compatibility, but deprecated for future use).
|
||||
// Treated as `CONTAINS_STRING`.
|
||||
CONTENT_MATCHER_OPTION_UNSPECIFIED = 0;
|
||||
|
||||
// Selects substring matching. The match succeeds if the output contains
|
||||
// the `content` string. This is the default value for checks without
|
||||
// a `matcher` option, or where the value of `matcher` is
|
||||
// `CONTENT_MATCHER_OPTION_UNSPECIFIED`.
|
||||
CONTAINS_STRING = 1;
|
||||
|
||||
// Selects negation of substring matching. The match succeeds if the
|
||||
// output does _NOT_ contain the `content` string.
|
||||
NOT_CONTAINS_STRING = 2;
|
||||
|
||||
// Selects regular-expression matching. The match succeeds of the output
|
||||
// matches the regular expression specified in the `content` string.
|
||||
// Regex matching is only supported for HTTP/HTTPS checks.
|
||||
MATCHES_REGEX = 3;
|
||||
|
||||
// Selects negation of regular-expression matching. The match succeeds if
|
||||
// the output does _NOT_ match the regular expression specified in the
|
||||
// `content` string. Regex matching is only supported for HTTP/HTTPS
|
||||
// checks.
|
||||
NOT_MATCHES_REGEX = 4;
|
||||
}
|
||||
|
||||
// String or regex content to match. Maximum 1024 bytes. An empty `content`
|
||||
// string indicates no content matching is to be performed.
|
||||
string content = 1;
|
||||
|
||||
// The type of content matcher that will be applied to the server output,
|
||||
// compared to the `content` string when the check is run.
|
||||
ContentMatcherOption matcher = 2;
|
||||
}
|
||||
|
||||
// A unique resource name for this Uptime check configuration. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]/uptimeCheckConfigs/[UPTIME_CHECK_ID]
|
||||
//
|
||||
// `[PROJECT_ID_OR_NUMBER]` is the Workspace host project associated with the
|
||||
// Uptime check.
|
||||
//
|
||||
// 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.
|
||||
string name = 1;
|
||||
|
||||
// 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.
|
||||
string display_name = 2;
|
||||
|
||||
// The resource the check is checking. Required.
|
||||
oneof resource {
|
||||
// The [monitored
|
||||
// resource](https://cloud.google.com/monitoring/api/resources) associated
|
||||
// with the configuration.
|
||||
// The following monitored resource types are valid for this field:
|
||||
// `uptime_url`,
|
||||
// `gce_instance`,
|
||||
// `gae_app`,
|
||||
// `aws_ec2_instance`,
|
||||
// `aws_elb_load_balancer`
|
||||
// `k8s_service`
|
||||
google.api.MonitoredResource monitored_resource = 3;
|
||||
|
||||
// The group resource associated with the configuration.
|
||||
ResourceGroup resource_group = 4;
|
||||
}
|
||||
|
||||
// The type of Uptime check request.
|
||||
oneof check_request_type {
|
||||
// Contains information needed to make an HTTP or HTTPS check.
|
||||
HttpCheck http_check = 5;
|
||||
|
||||
// Contains information needed to make a TCP check.
|
||||
TcpCheck tcp_check = 6;
|
||||
}
|
||||
|
||||
// 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`.
|
||||
google.protobuf.Duration period = 7;
|
||||
|
||||
// The maximum amount of time to wait for the request to complete (must be
|
||||
// between 1 and 60 seconds). Required.
|
||||
google.protobuf.Duration timeout = 8;
|
||||
|
||||
// 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.
|
||||
repeated ContentMatcher content_matchers = 9;
|
||||
|
||||
// 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.
|
||||
repeated UptimeCheckRegion selected_regions = 10;
|
||||
|
||||
// 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`.
|
||||
bool is_internal = 15 [deprecated = true];
|
||||
|
||||
// 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`.
|
||||
repeated InternalChecker internal_checkers = 14 [deprecated = true];
|
||||
}
|
||||
|
||||
// Contains the region, location, and list of IP
|
||||
// addresses where checkers in the location run from.
|
||||
message UptimeCheckIp {
|
||||
// A broad region category in which the IP address is located.
|
||||
UptimeCheckRegion region = 1;
|
||||
|
||||
// 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.
|
||||
string location = 2;
|
||||
|
||||
// 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.
|
||||
string ip_address = 3;
|
||||
}
|
||||
|
||||
// The supported resource types that can be used as values of
|
||||
// `group_resource.resource_type`.
|
||||
// `INSTANCE` includes `gce_instance` and `aws_ec2_instance` resource types.
|
||||
// The resource types `gae_app` and `uptime_url` are not valid here because
|
||||
// group checks on App Engine modules and URLs are not allowed.
|
||||
enum GroupResourceType {
|
||||
// Default value (not valid).
|
||||
RESOURCE_TYPE_UNSPECIFIED = 0;
|
||||
|
||||
// A group of instances from Google Cloud Platform (GCP) or
|
||||
// Amazon Web Services (AWS).
|
||||
INSTANCE = 1;
|
||||
|
||||
// A group of Amazon ELB load balancers.
|
||||
AWS_ELB_LOAD_BALANCER = 2;
|
||||
}
|
||||
+244
@@ -0,0 +1,244 @@
|
||||
// Copyright 2021 Google LLC
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// 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.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.monitoring.v3;
|
||||
|
||||
import "google/api/annotations.proto";
|
||||
import "google/api/client.proto";
|
||||
import "google/api/field_behavior.proto";
|
||||
import "google/api/resource.proto";
|
||||
import "google/longrunning/operations.proto";
|
||||
import "google/monitoring/v3/uptime.proto";
|
||||
import "google/protobuf/duration.proto";
|
||||
import "google/protobuf/empty.proto";
|
||||
import "google/protobuf/field_mask.proto";
|
||||
|
||||
option csharp_namespace = "Google.Cloud.Monitoring.V3";
|
||||
option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "UptimeServiceProto";
|
||||
option java_package = "com.google.monitoring.v3";
|
||||
option php_namespace = "Google\\Cloud\\Monitoring\\V3";
|
||||
option ruby_package = "Google::Cloud::Monitoring::V3";
|
||||
|
||||
// The UptimeCheckService API is used to manage (list, create, delete, edit)
|
||||
// Uptime check configurations in the Stackdriver Monitoring product. An Uptime
|
||||
// check is a piece of configuration that determines which resources and
|
||||
// services to monitor for availability. These configurations can also be
|
||||
// configured interactively by navigating to the [Cloud Console]
|
||||
// (http://console.cloud.google.com), selecting the appropriate project,
|
||||
// clicking on "Monitoring" on the left-hand side to navigate to Stackdriver,
|
||||
// and then clicking on "Uptime".
|
||||
service UptimeCheckService {
|
||||
option (google.api.default_host) = "monitoring.googleapis.com";
|
||||
option (google.api.oauth_scopes) =
|
||||
"https://www.googleapis.com/auth/cloud-platform,"
|
||||
"https://www.googleapis.com/auth/monitoring,"
|
||||
"https://www.googleapis.com/auth/monitoring.read";
|
||||
|
||||
// Lists the existing valid Uptime check configurations for the project
|
||||
// (leaving out any invalid configurations).
|
||||
rpc ListUptimeCheckConfigs(ListUptimeCheckConfigsRequest) returns (ListUptimeCheckConfigsResponse) {
|
||||
option (google.api.http) = {
|
||||
get: "/v3/{parent=projects/*}/uptimeCheckConfigs"
|
||||
};
|
||||
option (google.api.method_signature) = "parent";
|
||||
}
|
||||
|
||||
// Gets a single Uptime check configuration.
|
||||
rpc GetUptimeCheckConfig(GetUptimeCheckConfigRequest) returns (UptimeCheckConfig) {
|
||||
option (google.api.http) = {
|
||||
get: "/v3/{name=projects/*/uptimeCheckConfigs/*}"
|
||||
};
|
||||
option (google.api.method_signature) = "name";
|
||||
}
|
||||
|
||||
// Creates a new Uptime check configuration.
|
||||
rpc CreateUptimeCheckConfig(CreateUptimeCheckConfigRequest) returns (UptimeCheckConfig) {
|
||||
option (google.api.http) = {
|
||||
post: "/v3/{parent=projects/*}/uptimeCheckConfigs"
|
||||
body: "uptime_check_config"
|
||||
};
|
||||
option (google.api.method_signature) = "parent,uptime_check_config";
|
||||
}
|
||||
|
||||
// Updates an Uptime check configuration. You can either replace the entire
|
||||
// configuration with a new one or replace only certain fields in the current
|
||||
// configuration by specifying the fields to be updated via `updateMask`.
|
||||
// Returns the updated configuration.
|
||||
rpc UpdateUptimeCheckConfig(UpdateUptimeCheckConfigRequest) returns (UptimeCheckConfig) {
|
||||
option (google.api.http) = {
|
||||
patch: "/v3/{uptime_check_config.name=projects/*/uptimeCheckConfigs/*}"
|
||||
body: "uptime_check_config"
|
||||
};
|
||||
option (google.api.method_signature) = "uptime_check_config";
|
||||
}
|
||||
|
||||
// Deletes an Uptime check configuration. Note that this method will fail
|
||||
// if the Uptime check configuration is referenced by an alert policy or
|
||||
// other dependent configs that would be rendered invalid by the deletion.
|
||||
rpc DeleteUptimeCheckConfig(DeleteUptimeCheckConfigRequest) returns (google.protobuf.Empty) {
|
||||
option (google.api.http) = {
|
||||
delete: "/v3/{name=projects/*/uptimeCheckConfigs/*}"
|
||||
};
|
||||
option (google.api.method_signature) = "name";
|
||||
}
|
||||
|
||||
// Returns the list of IP addresses that checkers run from
|
||||
rpc ListUptimeCheckIps(ListUptimeCheckIpsRequest) returns (ListUptimeCheckIpsResponse) {
|
||||
option (google.api.http) = {
|
||||
get: "/v3/uptimeCheckIps"
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// The protocol for the `ListUptimeCheckConfigs` request.
|
||||
message ListUptimeCheckConfigsRequest {
|
||||
// Required. The [project](https://cloud.google.com/monitoring/api/v3#project_name)
|
||||
// whose Uptime check configurations are listed. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]
|
||||
string parent = 1 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
child_type: "monitoring.googleapis.com/UptimeCheckConfig"
|
||||
}
|
||||
];
|
||||
|
||||
// The maximum number of results to return in a single response. The server
|
||||
// may further constrain the maximum number of results returned in a single
|
||||
// page. If the page_size is <=0, the server will decide the number of results
|
||||
// to be returned.
|
||||
int32 page_size = 3;
|
||||
|
||||
// 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 more results from the previous method call.
|
||||
string page_token = 4;
|
||||
}
|
||||
|
||||
// The protocol for the `ListUptimeCheckConfigs` response.
|
||||
message ListUptimeCheckConfigsResponse {
|
||||
// The returned Uptime check configurations.
|
||||
repeated UptimeCheckConfig uptime_check_configs = 1;
|
||||
|
||||
// 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).
|
||||
string next_page_token = 2;
|
||||
|
||||
// The total number of Uptime check configurations for the project,
|
||||
// irrespective of any pagination.
|
||||
int32 total_size = 3;
|
||||
}
|
||||
|
||||
// The protocol for the `GetUptimeCheckConfig` request.
|
||||
message GetUptimeCheckConfigRequest {
|
||||
// Required. The Uptime check configuration to retrieve. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]/uptimeCheckConfigs/[UPTIME_CHECK_ID]
|
||||
string name = 1 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
type: "monitoring.googleapis.com/UptimeCheckConfig"
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
// The protocol for the `CreateUptimeCheckConfig` request.
|
||||
message CreateUptimeCheckConfigRequest {
|
||||
// Required. The [project](https://cloud.google.com/monitoring/api/v3#project_name) in
|
||||
// which to create the Uptime check. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]
|
||||
string parent = 1 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
child_type: "monitoring.googleapis.com/UptimeCheckConfig"
|
||||
}
|
||||
];
|
||||
|
||||
// Required. The new Uptime check configuration.
|
||||
UptimeCheckConfig uptime_check_config = 2 [(google.api.field_behavior) = REQUIRED];
|
||||
}
|
||||
|
||||
// The protocol for the `UpdateUptimeCheckConfig` request.
|
||||
message UpdateUptimeCheckConfigRequest {
|
||||
// Optional. If present, only the listed fields in the current Uptime check
|
||||
// configuration are updated with values from the new configuration. If this
|
||||
// field is empty, then the current configuration is completely replaced with
|
||||
// the new configuration.
|
||||
google.protobuf.FieldMask update_mask = 2;
|
||||
|
||||
// Required. If an `updateMask` has been specified, this field gives
|
||||
// the values for the set of fields mentioned in the `updateMask`. If an
|
||||
// `updateMask` has not been given, this Uptime check configuration replaces
|
||||
// the current configuration. If a field is mentioned in `updateMask` but
|
||||
// the corresonding field is omitted in this partial Uptime check
|
||||
// configuration, it has the effect of deleting/clearing the field from the
|
||||
// configuration on the server.
|
||||
//
|
||||
// The following fields can be updated: `display_name`,
|
||||
// `http_check`, `tcp_check`, `timeout`, `content_matchers`, and
|
||||
// `selected_regions`.
|
||||
UptimeCheckConfig uptime_check_config = 3 [(google.api.field_behavior) = REQUIRED];
|
||||
}
|
||||
|
||||
// The protocol for the `DeleteUptimeCheckConfig` request.
|
||||
message DeleteUptimeCheckConfigRequest {
|
||||
// Required. The Uptime check configuration to delete. The format is:
|
||||
//
|
||||
// projects/[PROJECT_ID_OR_NUMBER]/uptimeCheckConfigs/[UPTIME_CHECK_ID]
|
||||
string name = 1 [
|
||||
(google.api.field_behavior) = REQUIRED,
|
||||
(google.api.resource_reference) = {
|
||||
type: "monitoring.googleapis.com/UptimeCheckConfig"
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
// The protocol for the `ListUptimeCheckIps` request.
|
||||
message ListUptimeCheckIpsRequest {
|
||||
// The maximum number of results to return in a single response. The server
|
||||
// may further constrain the maximum number of results returned in a single
|
||||
// page. If the page_size is <=0, the server will decide the number of results
|
||||
// to be returned.
|
||||
// NOTE: this field is not yet implemented
|
||||
int32 page_size = 2;
|
||||
|
||||
// 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 more results from the previous method call.
|
||||
// NOTE: this field is not yet implemented
|
||||
string page_token = 3;
|
||||
}
|
||||
|
||||
// The protocol for the `ListUptimeCheckIps` response.
|
||||
message ListUptimeCheckIpsResponse {
|
||||
// The returned list of IP addresses (including region and location) that the
|
||||
// checkers run from.
|
||||
repeated UptimeCheckIp uptime_check_ips = 1;
|
||||
|
||||
// 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
|
||||
string next_page_token = 2;
|
||||
}
|
||||
Reference in New Issue
Block a user