Add Monitoring Dashboards API protocol buffers to Google Cloud Monitoring API.

PiperOrigin-RevId: 284982647
This commit is contained in:
Google APIs 2019-12-11 07:39:09 -08:00 committed by Copybara-Service
parent e47fdd2665
commit ee3f02926d
15 changed files with 1483 additions and 24 deletions

View File

@ -0,0 +1,398 @@
// Copyright 2019 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.dashboard.v1;
import "google/api/distribution.proto";
import "google/protobuf/duration.proto";
option go_package = "google.golang.org/genproto/googleapis/monitoring/dashboard/v1;dashboard";
option java_multiple_files = true;
option java_outer_classname = "CommonProto";
option java_package = "com.google.monitoring.dashboard.v1";
// Describes how to combine multiple time series to provide different views of
// the data. Aggregation consists of an alignment step on individual time
// series (`alignment_period` and `per_series_aligner`) followed by an optional
// reduction step of the data across the aligned time series
// (`cross_series_reducer` and `group_by_fields`). For more details, see
// [Aggregation](/monitoring/api/learn_more#aggregation).
message Aggregation {
// The Aligner describes how to bring the data points in a single
// time series into temporal alignment.
enum Aligner {
// No alignment. Raw data is returned. Not valid if cross-time
// series reduction is requested. The value type of the result is
// the same as the value type of the input.
ALIGN_NONE = 0;
// Align and convert to delta metric type. This alignment is valid
// for cumulative metrics and delta metrics. Aligning an existing
// delta metric to a delta metric requires that the alignment
// period be increased. The value type of the result is the same
// as the value type of the input.
//
// One can think of this aligner as a rate but without time units; that
// is, the output is conceptually (second_point - first_point).
ALIGN_DELTA = 1;
// Align and convert to a rate. This alignment is valid for
// cumulative metrics and delta metrics with numeric values. The output is a
// gauge metric with value type
// [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE].
//
// One can think of this aligner as conceptually providing the slope of
// the line that passes through the value at the start and end of the
// window. In other words, this is conceptually ((y1 - y0)/(t1 - t0)),
// and the output unit is one that has a "/time" dimension.
//
// If, by rate, you are looking for percentage change, see the
// `ALIGN_PERCENT_CHANGE` aligner option.
ALIGN_RATE = 2;
// Align by interpolating between adjacent points around the
// period boundary. This alignment is valid for gauge
// metrics with numeric values. The value type of the result is the same
// as the value type of the input.
ALIGN_INTERPOLATE = 3;
// Align by shifting the oldest data point before the period
// boundary to the boundary. This alignment is valid for gauge
// metrics. The value type of the result is the same as the
// value type of the input.
ALIGN_NEXT_OLDER = 4;
// Align time series via aggregation. The resulting data point in
// the alignment period is the minimum of all data points in the
// period. This alignment is valid for gauge and delta metrics with numeric
// values. The value type of the result is the same as the value
// type of the input.
ALIGN_MIN = 10;
// Align time series via aggregation. The resulting data point in
// the alignment period is the maximum of all data points in the
// period. This alignment is valid for gauge and delta metrics with numeric
// values. The value type of the result is the same as the value
// type of the input.
ALIGN_MAX = 11;
// Align time series via aggregation. The resulting data point in
// the alignment period is the average or arithmetic mean of all
// data points in the period. This alignment is valid for gauge and delta
// metrics with numeric values. The value type of the output is
// [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE].
ALIGN_MEAN = 12;
// Align time series via aggregation. The resulting data point in
// the alignment period is the count of all data points in the
// period. This alignment is valid for gauge and delta metrics with numeric
// or Boolean values. The value type of the output is
// [INT64][google.api.MetricDescriptor.ValueType.INT64].
ALIGN_COUNT = 13;
// Align time series via aggregation. The resulting data point in
// the alignment period is the sum of all data points in the
// period. This alignment is valid for gauge and delta metrics with numeric
// and distribution values. The value type of the output is the
// same as the value type of the input.
ALIGN_SUM = 14;
// Align time series via aggregation. The resulting data point in
// the alignment period is the standard deviation of all data
// points in the period. This alignment is valid for gauge and delta metrics
// with numeric values. The value type of the output is
// [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE].
ALIGN_STDDEV = 15;
// Align time series via aggregation. The resulting data point in
// the alignment period is the count of True-valued data points in the
// period. This alignment is valid for gauge metrics with
// Boolean values. The value type of the output is
// [INT64][google.api.MetricDescriptor.ValueType.INT64].
ALIGN_COUNT_TRUE = 16;
// Align time series via aggregation. The resulting data point in
// the alignment period is the count of False-valued data points in the
// period. This alignment is valid for gauge metrics with
// Boolean values. The value type of the output is
// [INT64][google.api.MetricDescriptor.ValueType.INT64].
ALIGN_COUNT_FALSE = 24;
// Align time series via aggregation. The resulting data point in
// the alignment period is the fraction of True-valued data points in the
// period. This alignment is valid for gauge metrics with Boolean values.
// The output value is in the range [0, 1] and has value type
// [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE].
ALIGN_FRACTION_TRUE = 17;
// Align time series via aggregation. The resulting data point in
// the alignment period is the 99th percentile of all data
// points in the period. This alignment is valid for gauge and delta metrics
// with distribution values. The output is a gauge metric with value type
// [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE].
ALIGN_PERCENTILE_99 = 18;
// Align time series via aggregation. The resulting data point in
// the alignment period is the 95th percentile of all data
// points in the period. This alignment is valid for gauge and delta metrics
// with distribution values. The output is a gauge metric with value type
// [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE].
ALIGN_PERCENTILE_95 = 19;
// Align time series via aggregation. The resulting data point in
// the alignment period is the 50th percentile of all data
// points in the period. This alignment is valid for gauge and delta metrics
// with distribution values. The output is a gauge metric with value type
// [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE].
ALIGN_PERCENTILE_50 = 20;
// Align time series via aggregation. The resulting data point in
// the alignment period is the 5th percentile of all data
// points in the period. This alignment is valid for gauge and delta metrics
// with distribution values. The output is a gauge metric with value type
// [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE].
ALIGN_PERCENTILE_05 = 21;
// Align and convert to a percentage change. This alignment is valid for
// gauge and delta metrics with numeric values. This alignment conceptually
// computes the equivalent of "((current - previous)/previous)*100"
// where previous value is determined based on the alignmentPeriod.
// In the event that previous is 0 the calculated value is infinity with the
// exception that if both (current - previous) and previous are 0 the
// calculated value is 0.
// A 10 minute moving mean is computed at each point of the time window
// prior to the above calculation to smooth the metric and prevent false
// positives from very short lived spikes.
// Only applicable for data that is >= 0. Any values < 0 are treated as
// no data. While delta metrics are accepted by this alignment special care
// should be taken that the values for the metric will always be positive.
// The output is a gauge metric with value type
// [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE].
ALIGN_PERCENT_CHANGE = 23;
}
// A Reducer describes how to aggregate data points from multiple
// time series into a single time series.
enum Reducer {
// No cross-time series reduction. The output of the aligner is
// returned.
REDUCE_NONE = 0;
// Reduce by computing the mean across time series for each
// alignment period. This reducer is valid for delta and
// gauge metrics with numeric or distribution values. The value type of the
// output is [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE].
REDUCE_MEAN = 1;
// Reduce by computing the minimum across time series for each
// alignment period. This reducer is valid for delta and
// gauge metrics with numeric values. The value type of the output
// is the same as the value type of the input.
REDUCE_MIN = 2;
// Reduce by computing the maximum across time series for each
// alignment period. This reducer is valid for delta and
// gauge metrics with numeric values. The value type of the output
// is the same as the value type of the input.
REDUCE_MAX = 3;
// Reduce by computing the sum across time series for each
// alignment period. This reducer is valid for delta and
// gauge metrics with numeric and distribution values. The value type of
// the output is the same as the value type of the input.
REDUCE_SUM = 4;
// Reduce by computing the standard deviation across time series
// for each alignment period. This reducer is valid for delta
// and gauge metrics with numeric or distribution values. The value type of
// the output is [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE].
REDUCE_STDDEV = 5;
// Reduce by computing the count of data points across time series
// for each alignment period. This reducer is valid for delta
// and gauge metrics of numeric, Boolean, distribution, and string value
// type. The value type of the output is
// [INT64][google.api.MetricDescriptor.ValueType.INT64].
REDUCE_COUNT = 6;
// Reduce by computing the count of True-valued data points across time
// series for each alignment period. This reducer is valid for delta
// and gauge metrics of Boolean value type. The value type of
// the output is [INT64][google.api.MetricDescriptor.ValueType.INT64].
REDUCE_COUNT_TRUE = 7;
// Reduce by computing the count of False-valued data points across time
// series for each alignment period. This reducer is valid for delta
// and gauge metrics of Boolean value type. The value type of
// the output is [INT64][google.api.MetricDescriptor.ValueType.INT64].
REDUCE_COUNT_FALSE = 15;
// Reduce by computing the fraction of True-valued data points across time
// series for each alignment period. This reducer is valid for delta
// and gauge metrics of Boolean value type. The output value is in the
// range [0, 1] and has value type
// [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE].
REDUCE_FRACTION_TRUE = 8;
// Reduce by computing 99th percentile of data points across time series
// for each alignment period. This reducer is valid for gauge and delta
// metrics of numeric and distribution type. The value of the output is
// [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE]
REDUCE_PERCENTILE_99 = 9;
// Reduce by computing 95th percentile of data points across time series
// for each alignment period. This reducer is valid for gauge and delta
// metrics of numeric and distribution type. The value of the output is
// [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE]
REDUCE_PERCENTILE_95 = 10;
// Reduce by computing 50th percentile of data points across time series
// for each alignment period. This reducer is valid for gauge and delta
// metrics of numeric and distribution type. The value of the output is
// [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE]
REDUCE_PERCENTILE_50 = 11;
// Reduce by computing 5th percentile of data points across time series
// for each alignment period. This reducer is valid for gauge and delta
// metrics of numeric and distribution type. The value of the output is
// [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE]
REDUCE_PERCENTILE_05 = 12;
}
// The alignment period for per-[time series][TimeSeries]
// alignment. If present, `alignmentPeriod` must be at least 60
// seconds. After per-time series alignment, each time series will
// contain data points only on the period boundaries. If
// `perSeriesAligner` is not specified or equals `ALIGN_NONE`, then
// this field is ignored. If `perSeriesAligner` is specified and
// does not equal `ALIGN_NONE`, then this field must be defined;
// otherwise an error is returned.
google.protobuf.Duration alignment_period = 1;
// The approach to be used to align individual time series. Not all
// alignment functions may be applied to all time series, depending
// on the metric type and value type of the original time
// series. Alignment may change the metric type or the value type of
// the time series.
//
// Time series data must be aligned in order to perform cross-time
// series reduction. If `crossSeriesReducer` is specified, then
// `perSeriesAligner` must be specified and not equal `ALIGN_NONE`
// and `alignmentPeriod` must be specified; otherwise, an error is
// returned.
Aligner per_series_aligner = 2;
// The approach to be used to combine time series. Not all reducer
// functions may be applied to all time series, depending on the
// metric type and the value type of the original time
// series. Reduction may change the metric type of value type of the
// time series.
//
// Time series data must be aligned in order to perform cross-time
// series reduction. If `crossSeriesReducer` is specified, then
// `perSeriesAligner` must be specified and not equal `ALIGN_NONE`
// and `alignmentPeriod` must be specified; otherwise, an error is
// returned.
Reducer cross_series_reducer = 4;
// The set of fields to preserve when `crossSeriesReducer` is
// specified. The `groupByFields` determine how the time series are
// partitioned into subsets prior to applying the aggregation
// function. Each subset contains time series that have the same
// value for each of the grouping fields. Each individual time
// series is a member of exactly one subset. The
// `crossSeriesReducer` is applied to each subset of time series.
// It is not possible to reduce across different resource types, so
// this field implicitly contains `resource.type`. Fields not
// specified in `groupByFields` are aggregated away. If
// `groupByFields` is not specified and all the time series have
// the same resource type, then the time series are aggregated into
// a single output time series. If `crossSeriesReducer` is not
// defined, this field is ignored.
repeated string group_by_fields = 5;
}
// Describes a ranking-based time series filter. Each input time series is
// ranked with an aligner. The filter lets through up to `num_time_series` time
// series, selecting them based on the relative ranking.
message PickTimeSeriesFilter {
// The value reducers that can be applied to a PickTimeSeriesFilter.
enum Method {
// Not allowed in well-formed requests.
METHOD_UNSPECIFIED = 0;
// Select the mean of all values.
METHOD_MEAN = 1;
// Select the maximum value.
METHOD_MAX = 2;
// Select the minimum value.
METHOD_MIN = 3;
// Compute the sum of all values.
METHOD_SUM = 4;
// Select the most recent value.
METHOD_LATEST = 5;
}
// Describes the ranking directions.
enum Direction {
// Not allowed in well-formed requests.
DIRECTION_UNSPECIFIED = 0;
// Pass the highest ranking inputs.
TOP = 1;
// Pass the lowest ranking inputs.
BOTTOM = 2;
}
// `rankingMethod` is applied to each time series independently to produce the
// value which will be used to compare the time series to other time series.
Method ranking_method = 1;
// How many time series to return.
int32 num_time_series = 2;
// How to use the ranking to select time series that pass through the filter.
Direction direction = 3;
}
// A filter that ranks streams based on their statistical relation to other
// streams in a request.
message StatisticalTimeSeriesFilter {
// The filter methods that can be applied to a stream.
enum Method {
// Not allowed in well-formed requests.
METHOD_UNSPECIFIED = 0;
// Compute the outlier score of each stream.
METHOD_CLUSTER_OUTLIER = 1;
}
// `rankingMethod` is applied to a set of time series, and then the produced
// value for each individual time series is used to compare a given time
// series to others.
// These are methods that cannot be applied stream-by-stream, but rather
// require the full context of a request to evaluate time series.
Method ranking_method = 1;
// How many time series to output.
int32 num_time_series = 2;
}

View File

@ -0,0 +1,59 @@
// Copyright 2019 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.dashboard.v1;
import "google/monitoring/dashboard/v1/layouts.proto";
option go_package = "google.golang.org/genproto/googleapis/monitoring/dashboard/v1;dashboard";
option java_multiple_files = true;
option java_outer_classname = "DashboardsProto";
option java_package = "com.google.monitoring.dashboard.v1";
// A Google Stackdriver dashboard. Dashboards define the content and layout
// of pages in the Stackdriver web application.
message Dashboard {
// The resource name of the dashboard.
string name = 1;
// The mutable, human-readable name.
string display_name = 2;
// `etag` is used for optimistic concurrency control as a way to help
// prevent simultaneous updates of a policy from overwriting each other.
// An `etag` is returned in the response to `GetDashboard`, and
// users are expected to put that etag in the request to `UpdateDashboard` to
// ensure that their change will be applied to the same version of the
// Dashboard configuration. The field should not be passed during
// dashboard creation.
string etag = 4;
// A dashboard's root container element that defines the layout style.
oneof layout {
// Content is arranged with a basic layout that re-flows a simple list of
// informational elements like widgets or tiles.
GridLayout grid_layout = 5;
// The content is divided into equally spaced rows and the widgets are
// arranged horizontally.
RowLayout row_layout = 8;
// The content is divided into equally spaced columns and the widgets are
// arranged vertically.
ColumnLayout column_layout = 9;
}
}

View File

@ -0,0 +1,157 @@
// Copyright 2019 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.dashboard.v1;
import "google/api/annotations.proto";
import "google/monitoring/dashboard/v1/dashboard.proto";
import "google/protobuf/empty.proto";
import "google/protobuf/field_mask.proto";
import "google/api/client.proto";
option go_package = "google.golang.org/genproto/googleapis/monitoring/dashboard/v1;dashboard";
option java_multiple_files = true;
option java_outer_classname = "DashboardsServiceProto";
option java_package = "com.google.monitoring.dashboard.v1";
// Manages Stackdriver dashboards. A dashboard is an arrangement of data display
// widgets in a specific layout.
service DashboardsService {
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";
// Creates a new custom dashboard.
//
// This method requires the `monitoring.dashboards.create` permission
// on the specified project. For more information, see
// [Google Cloud IAM](https://cloud.google.com/iam).
rpc CreateDashboard(CreateDashboardRequest) returns (Dashboard) {
option (google.api.http) = {
post: "/v1/{parent=projects/*}/dashboards"
body: "dashboard"
};
}
// Lists the existing dashboards.
//
// This method requires the `monitoring.dashboards.list` permission
// on the specified project. For more information, see
// [Google Cloud IAM](https://cloud.google.com/iam).
rpc ListDashboards(ListDashboardsRequest) returns (ListDashboardsResponse) {
option (google.api.http) = {
get: "/v1/{parent=projects/*}/dashboards"
};
}
// Fetches a specific dashboard.
//
// This method requires the `monitoring.dashboards.get` permission
// on the specified dashboard. For more information, see
// [Google Cloud IAM](https://cloud.google.com/iam).
rpc GetDashboard(GetDashboardRequest) returns (Dashboard) {
option (google.api.http) = {
get: "/v1/{name=projects/*/dashboards/*}"
};
}
// Deletes an existing custom dashboard.
//
// This method requires the `monitoring.dashboards.delete` permission
// on the specified dashboard. For more information, see
// [Google Cloud IAM](https://cloud.google.com/iam).
rpc DeleteDashboard(DeleteDashboardRequest) returns (google.protobuf.Empty) {
option (google.api.http) = {
delete: "/v1/{name=projects/*/dashboards/*}"
};
}
// Replaces an existing custom dashboard with a new definition.
//
// This method requires the `monitoring.dashboards.update` permission
// on the specified dashboard. For more information, see
// [Google Cloud IAM](https://cloud.google.com/iam).
rpc UpdateDashboard(UpdateDashboardRequest) returns (Dashboard) {
option (google.api.http) = {
patch: "/v1/{dashboard.name=projects/*/dashboards/*}"
body: "dashboard"
};
}
}
// The `CreateDashboard` request.
message CreateDashboardRequest {
// The project on which to execute the request. The format is
// `"projects/{project_id_or_number}"`. The {project_id_or_number} must match
// the dashboard resource name.
string parent = 1;
// The initial dashboard specification.
Dashboard dashboard = 2;
}
// The `ListDashboards` request.
message ListDashboardsRequest {
// The scope of the dashboards to list. A project scope must be
// specified in the form of `"projects/{project_id_or_number}"`.
string parent = 1;
// A positive number that is the maximum number of results to return.
// If unspecified, a default of 1000 is used.
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 additional results from the previous method call.
string page_token = 3;
}
// The `ListDashboards` request.
message ListDashboardsResponse {
// The list of requested dashboards.
repeated Dashboard dashboards = 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 `pageToken` in the next call to this method.
string next_page_token = 2;
}
// The `GetDashboard` request.
message GetDashboardRequest {
// The resource name of the Dashboard. The format is one of
// `"dashboards/{dashboard_id}"` (for system dashboards) or
// `"projects/{project_id_or_number}/dashboards/{dashboard_id}"`
// (for custom dashboards).
string name = 1;
}
// The `DeleteDashboard` request.
message DeleteDashboardRequest {
// The resource name of the Dashboard. The format is
// `"projects/{project_id_or_number}/dashboards/{dashboard_id}"`.
string name = 1;
}
// The `UpdateDashboard` request.
message UpdateDashboardRequest {
// The dashboard that will replace the existing dashboard.
Dashboard dashboard = 1;
}

View File

@ -0,0 +1,25 @@
// Copyright 2019 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.dashboard.v1;
import "google/monitoring/dashboard/v1/common.proto";
option go_package = "google.golang.org/genproto/googleapis/monitoring/dashboard/v1;dashboard";
option java_multiple_files = true;
option java_outer_classname = "DrilldownsProto";
option java_package = "com.google.monitoring.dashboard.v1";

View File

@ -0,0 +1,74 @@
// Copyright 2019 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.dashboard.v1;
import "google/monitoring/dashboard/v1/widget.proto";
option go_package = "google.golang.org/genproto/googleapis/monitoring/dashboard/v1;dashboard";
option java_multiple_files = true;
option java_outer_classname = "LayoutsProto";
option java_package = "com.google.monitoring.dashboard.v1";
// A basic layout divides the available space into vertical columns of equal
// width and arranges a list of widgets using a row-first strategy.
message GridLayout {
// The number of columns into which the view's width is divided. If omitted
// or set to zero, a system default will be used while rendering.
int64 columns = 1;
// The informational elements that are arranged into the columns row-first.
repeated Widget widgets = 2;
}
// A simplified layout that divides the available space into rows
// and arranges a set of widgets horizontally in each row.
message RowLayout {
// Defines the layout properties and content for a row.
message Row {
// The relative weight of this row. The row weight is used to adjust the
// height of rows on the screen (relative to peers). Greater the weight,
// greater the height of the row on the screen. If omitted, a value
// of 1 is used while rendering.
int64 weight = 1;
// The display widgets arranged horizontally in this row.
repeated Widget widgets = 2;
}
// The rows of content to display.
repeated Row rows = 1;
}
// A simplified layout that divides the available space into vertical columns
// and arranges a set of widgets vertically in each column.
message ColumnLayout {
// Defines the layout properties and content for a column.
message Column {
// The relative weight of this column. The column weight is used to adjust
// the width of columns on the screen (relative to peers).
// Greater the weight, greater the width of the column on the screen.
// If omitted, a value of 1 is used while rendering.
int64 weight = 1;
// The display widgets arranged vertically in this column.
repeated Widget widgets = 2;
}
// The columns of content to display.
repeated Column columns = 1;
}

View File

@ -0,0 +1,165 @@
// Copyright 2019 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.dashboard.v1;
import "google/api/field_behavior.proto";
import "google/monitoring/dashboard/v1/common.proto";
option go_package = "google.golang.org/genproto/googleapis/monitoring/dashboard/v1;dashboard";
option java_multiple_files = true;
option java_outer_classname = "MetricsProto";
option java_package = "com.google.monitoring.dashboard.v1";
// TimeSeriesQuery collects the set of supported methods for querying time
// series data from the Stackdriver metrics API.
message TimeSeriesQuery {
// Parameters needed to obtain data for the chart.
oneof source {
// Filter parameters to fetch time series.
TimeSeriesFilter time_series_filter = 1;
// Parameters to fetch a ratio between two time series filters.
TimeSeriesFilterRatio time_series_filter_ratio = 2;
}
// The unit of data contained in fetched time series. If non-empty, this
// unit will override any unit that accompanies fetched data. The format is
// the same as the
// [`unit`](/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors)
// field in `MetricDescriptor`.
string unit_override = 5;
}
// A filter that defines a subset of time series data that is displayed in a
// widget. Time series data is fetched using the
// [`ListTimeSeries`](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list)
// method.
message TimeSeriesFilter {
// Required. The [monitoring filter](/monitoring/api/v3/filters) that identifies the
// metric types, resources, and projects to query.
string filter = 1 [(google.api.field_behavior) = REQUIRED];
// By default, the raw time series data is returned.
// Use this field to combine multiple time series for different views of the
// data.
Aggregation aggregation = 2;
// Selects an optional time series filter.
oneof output_filter {
// Ranking based time series filter.
PickTimeSeriesFilter pick_time_series_filter = 4;
// Statistics based time series filter.
StatisticalTimeSeriesFilter statistical_time_series_filter = 5;
}
}
// A pair of time series filters that define a ratio computation. The output
// time series is the pair-wise division of each aligned element from the
// numerator and denominator time series.
message TimeSeriesFilterRatio {
// Describes a query to build the numerator or denominator of a
// TimeSeriesFilterRatio.
message RatioPart {
// Required. The [monitoring filter](/monitoring/api/v3/filters) that identifies the
// metric types, resources, and projects to query.
string filter = 1 [(google.api.field_behavior) = REQUIRED];
// By default, the raw time series data is returned.
// Use this field to combine multiple time series for different views of the
// data.
Aggregation aggregation = 2;
}
// The numerator of the ratio.
RatioPart numerator = 1;
// The denominator of the ratio.
RatioPart denominator = 2;
// Apply a second aggregation after the ratio is computed.
Aggregation secondary_aggregation = 3;
// Selects an optional filter that is applied to the time series after
// computing the ratio.
oneof output_filter {
// Ranking based time series filter.
PickTimeSeriesFilter pick_time_series_filter = 4;
// Statistics based time series filter.
StatisticalTimeSeriesFilter statistical_time_series_filter = 5;
}
}
// Defines a threshold for categorizing time series values.
message Threshold {
// The color suggests an interpretation to the viewer when actual values cross
// the threshold. Comments on each color provide UX guidance on how users can
// be expected to interpret a given state color.
enum Color {
// Color is unspecified. Not allowed in well-formed requests.
COLOR_UNSPECIFIED = 0;
// Crossing the threshold is "concerning" behavior.
YELLOW = 4;
// Crossing the threshold is "emergency" behavior.
RED = 6;
}
// Whether the threshold is considered crossed by an actual value above or
// below its threshold value.
enum Direction {
// Not allowed in well-formed requests.
DIRECTION_UNSPECIFIED = 0;
// The threshold will be considered crossed if the actual value is above
// the threshold value.
ABOVE = 1;
// The threshold will be considered crossed if the actual value is below
// the threshold value.
BELOW = 2;
}
// A label for the threshold.
string label = 1;
// The value of the threshold. The value should be defined in the native scale
// of the metric.
double value = 2;
// The state color for this threshold. Color is not allowed in a XyChart.
Color color = 3;
// The direction for the current threshold. Direction is not allowed in a
// XyChart.
Direction direction = 4;
}
// Defines the possible types of spark chart supported by the `Scorecard`.
enum SparkChartType {
// Not allowed in well-formed requests.
SPARK_CHART_TYPE_UNSPECIFIED = 0;
// The sparkline will be rendered as a small line chart.
SPARK_LINE = 1;
// The sparkbar will be rendered as a small bar chart.
SPARK_BAR = 2;
}

View File

@ -0,0 +1,207 @@
type: google.api.Service
config_version: 3
name: monitoring.googleapis.com
title: Stackdriver Monitoring API
apis:
- name: google.monitoring.dashboard.v1.DashboardsService
- name: google.monitoring.v3.AlertPolicyService
- name: google.monitoring.v3.GroupService
- name: google.monitoring.v3.MetricService
- name: google.monitoring.v3.NotificationChannelService
- name: google.monitoring.v3.ServiceMonitoringService
- name: google.monitoring.v3.UptimeCheckService
types:
- name: google.monitoring.v3.DroppedLabels
- name: google.monitoring.v3.SpanContext
documentation:
summary: |-
Manages your Stackdriver Monitoring data and configurations. Most projects
must be associated with a Stackdriver account, with a few exceptions as
noted on the individual method pages. The table entries below are
presented in alphabetical order, not in order of common use. For
explanations of the concepts found in the table entries, read the
[Stackdriver Monitoring documentation](/monitoring/docs).
backend:
rules:
- selector: 'google.monitoring.v3.AlertPolicyService.*'
deadline: 30.0
- selector: 'google.monitoring.v3.GroupService.*'
deadline: 30.0
- selector: 'google.monitoring.v3.MetricService.*'
deadline: 30.0
- selector: google.monitoring.v3.MetricService.CreateTimeSeries
deadline: 12.0
- selector: 'google.monitoring.v3.NotificationChannelService.*'
deadline: 30.0
authentication:
rules:
- selector: 'google.monitoring.dashboard.v1.DashboardsService.*'
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform,
https://www.googleapis.com/auth/monitoring,
https://www.googleapis.com/auth/monitoring.write
- selector: google.monitoring.dashboard.v1.DashboardsService.GetDashboard
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform,
https://www.googleapis.com/auth/monitoring,
https://www.googleapis.com/auth/monitoring.read
- selector: google.monitoring.dashboard.v1.DashboardsService.ListDashboards
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform,
https://www.googleapis.com/auth/monitoring,
https://www.googleapis.com/auth/monitoring.read
- selector: 'google.monitoring.v3.AlertPolicyService.*'
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform,
https://www.googleapis.com/auth/monitoring
- selector: google.monitoring.v3.AlertPolicyService.GetAlertPolicy
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform,
https://www.googleapis.com/auth/monitoring,
https://www.googleapis.com/auth/monitoring.read
- selector: google.monitoring.v3.AlertPolicyService.ListAlertPolicies
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform,
https://www.googleapis.com/auth/monitoring,
https://www.googleapis.com/auth/monitoring.read
- selector: 'google.monitoring.v3.GroupService.*'
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform,
https://www.googleapis.com/auth/monitoring,
https://www.googleapis.com/auth/monitoring.read
- selector: google.monitoring.v3.GroupService.CreateGroup
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform,
https://www.googleapis.com/auth/monitoring
- selector: google.monitoring.v3.GroupService.DeleteGroup
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform,
https://www.googleapis.com/auth/monitoring
- selector: google.monitoring.v3.GroupService.UpdateGroup
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform,
https://www.googleapis.com/auth/monitoring
- selector: 'google.monitoring.v3.MetricService.*'
oauth:
canonical_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
- selector: google.monitoring.v3.MetricService.CreateMetricDescriptor
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform,
https://www.googleapis.com/auth/monitoring,
https://www.googleapis.com/auth/monitoring.write
- selector: google.monitoring.v3.MetricService.CreateTimeSeries
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform,
https://www.googleapis.com/auth/monitoring,
https://www.googleapis.com/auth/monitoring.write
- selector: google.monitoring.v3.MetricService.DeleteMetricDescriptor
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform,
https://www.googleapis.com/auth/monitoring
- selector: google.monitoring.v3.MetricService.ListTimeSeries
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform,
https://www.googleapis.com/auth/monitoring,
https://www.googleapis.com/auth/monitoring.read
- selector: 'google.monitoring.v3.NotificationChannelService.*'
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform,
https://www.googleapis.com/auth/monitoring
- selector: google.monitoring.v3.NotificationChannelService.GetNotificationChannel
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform,
https://www.googleapis.com/auth/monitoring,
https://www.googleapis.com/auth/monitoring.read
- selector: google.monitoring.v3.NotificationChannelService.GetNotificationChannelDescriptor
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform,
https://www.googleapis.com/auth/monitoring,
https://www.googleapis.com/auth/monitoring.read
- selector: google.monitoring.v3.NotificationChannelService.ListNotificationChannelDescriptors
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform,
https://www.googleapis.com/auth/monitoring,
https://www.googleapis.com/auth/monitoring.read
- selector: google.monitoring.v3.NotificationChannelService.ListNotificationChannels
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform,
https://www.googleapis.com/auth/monitoring,
https://www.googleapis.com/auth/monitoring.read
- selector: 'google.monitoring.v3.ServiceMonitoringService.*'
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform,
https://www.googleapis.com/auth/monitoring
- selector: google.monitoring.v3.ServiceMonitoringService.GetService
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform,
https://www.googleapis.com/auth/monitoring,
https://www.googleapis.com/auth/monitoring.read
- selector: google.monitoring.v3.ServiceMonitoringService.GetServiceLevelObjective
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform,
https://www.googleapis.com/auth/monitoring,
https://www.googleapis.com/auth/monitoring.read
- selector: google.monitoring.v3.ServiceMonitoringService.ListServiceLevelObjectives
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform,
https://www.googleapis.com/auth/monitoring,
https://www.googleapis.com/auth/monitoring.read
- selector: google.monitoring.v3.ServiceMonitoringService.ListServices
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform,
https://www.googleapis.com/auth/monitoring,
https://www.googleapis.com/auth/monitoring.read
- selector: 'google.monitoring.v3.UptimeCheckService.*'
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform,
https://www.googleapis.com/auth/monitoring,
https://www.googleapis.com/auth/monitoring.read
- selector: google.monitoring.v3.UptimeCheckService.CreateUptimeCheckConfig
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform,
https://www.googleapis.com/auth/monitoring
- selector: google.monitoring.v3.UptimeCheckService.DeleteUptimeCheckConfig
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform,
https://www.googleapis.com/auth/monitoring
- selector: google.monitoring.v3.UptimeCheckService.UpdateUptimeCheckConfig
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform,
https://www.googleapis.com/auth/monitoring

View File

@ -0,0 +1,110 @@
// Copyright 2019 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.dashboard.v1;
import "google/monitoring/dashboard/v1/metrics.proto";
import "google/protobuf/duration.proto";
option go_package = "google.golang.org/genproto/googleapis/monitoring/dashboard/v1;dashboard";
option java_multiple_files = true;
option java_outer_classname = "ScorecardProto";
option java_package = "com.google.monitoring.dashboard.v1";
// A widget showing the latest value of a metric, and how this value relates to
// one or more thresholds.
message Scorecard {
// A gauge chart shows where the current value sits within a pre-defined
// range. The upper and lower bounds should define the possible range of
// values for the scorecard's query (inclusive).
message GaugeView {
// The lower bound for this gauge chart. The value of the chart should
// always be greater than or equal to this.
double lower_bound = 1;
// The upper bound for this gauge chart. The value of the chart should
// always be less than or equal to this.
double upper_bound = 2;
}
// A sparkChart is a small chart suitable for inclusion in a table-cell or
// inline in text. This message contains the configuration for a sparkChart
// to show up on a Scorecard, showing recent trends of the scorecard's
// timeseries.
message SparkChartView {
// The type of sparkchart to show in this chartView.
SparkChartType spark_chart_type = 1;
// The lower bound on data point frequency in the chart implemented by
// specifying the minimum alignment period to use in a time series query.
// For example, if the data is published once every 10 minutes it would not
// make sense to fetch and align data at one minute intervals. This field is
// optional and exists only as a hint.
google.protobuf.Duration min_alignment_period = 2;
}
// Fields for querying time series data from the
// Stackdriver metrics API.
TimeSeriesQuery time_series_query = 1;
// Defines the optional additional chart shown on the scorecard. If
// neither is included - then a default scorecard is shown.
oneof data_view {
// Will cause the scorecard to show a gauge chart.
GaugeView gauge_view = 4;
// Will cause the scorecard to show a spark chart.
SparkChartView spark_chart_view = 5;
}
// The thresholds used to determine the state of the scorecard given the
// time series' current value. For an actual value x, the scorecard is in a
// danger state if x is less than or equal to a danger threshold that triggers
// below, or greater than or equal to a danger threshold that triggers above.
// Similarly, if x is above/below a warning threshold that triggers
// above/below, then the scorecard is in a warning state - unless x also puts
// it in a danger state. (Danger trumps warning.)
//
// As an example, consider a scorecard with the following four thresholds:
// {
// value: 90,
// category: 'DANGER',
// trigger: 'ABOVE',
// },
// {
// value: 70,
// category: 'WARNING',
// trigger: 'ABOVE',
// },
// {
// value: 10,
// category: 'DANGER',
// trigger: 'BELOW',
// },
// {
// value: 20,
// category: 'WARNING',
// trigger: 'BELOW',
// }
//
// Then: values less than or equal to 10 would put the scorecard in a DANGER
// state, values greater than 10 but less than or equal to 20 a WARNING state,
// values strictly between 20 and 70 an OK state, values greater than or equal
// to 70 but less than 90 a WARNING state, and values greater than or equal to
// 90 a DANGER state.
repeated Threshold thresholds = 6;
}

View File

@ -0,0 +1,23 @@
// Copyright 2019 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.dashboard.v1;
option go_package = "google.golang.org/genproto/googleapis/monitoring/dashboard/v1;dashboard";
option java_multiple_files = true;
option java_outer_classname = "ServiceMonitoringProto";
option java_package = "com.google.monitoring.dashboard.v1";

View File

@ -0,0 +1,44 @@
// Copyright 2019 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.dashboard.v1;
option go_package = "google.golang.org/genproto/googleapis/monitoring/dashboard/v1;dashboard";
option java_multiple_files = true;
option java_outer_classname = "TextProto";
option java_package = "com.google.monitoring.dashboard.v1";
// A widget that displays textual content.
message Text {
// The format type of the text content.
enum Format {
// Format is unspecified. Defaults to MARKDOWN.
FORMAT_UNSPECIFIED = 0;
// The text contains Markdown formatting.
MARKDOWN = 1;
// The text contains no special formatting.
RAW = 2;
}
// The text content to be displayed.
string content = 1;
// How the text content is formatted.
Format format = 2;
}

View File

@ -0,0 +1,51 @@
// Copyright 2019 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.dashboard.v1;
import "google/api/field_behavior.proto";
import "google/monitoring/dashboard/v1/scorecard.proto";
import "google/monitoring/dashboard/v1/text.proto";
import "google/monitoring/dashboard/v1/xychart.proto";
import "google/protobuf/empty.proto";
option go_package = "google.golang.org/genproto/googleapis/monitoring/dashboard/v1;dashboard";
option java_multiple_files = true;
option java_outer_classname = "WidgetProto";
option java_package = "com.google.monitoring.dashboard.v1";
// Widget contains a single dashboard component and configuration of how to
// present the component in the dashboard.
message Widget {
// Optional. The title of the widget.
string title = 1 [(google.api.field_behavior) = OPTIONAL];
// Content defines the component used to populate the widget.
oneof content {
// A chart of time series data.
XyChart xy_chart = 2;
// A scorecard summarizing time series data.
Scorecard scorecard = 3;
// A raw string or markdown displaying textual content.
Text text = 4;
// A blank space.
google.protobuf.Empty blank = 5;
}
}

View File

@ -0,0 +1,146 @@
// Copyright 2019 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.dashboard.v1;
import "google/api/field_behavior.proto";
import "google/monitoring/dashboard/v1/metrics.proto";
import "google/protobuf/duration.proto";
option go_package = "google.golang.org/genproto/googleapis/monitoring/dashboard/v1;dashboard";
option java_multiple_files = true;
option java_outer_classname = "XyChartProto";
option java_package = "com.google.monitoring.dashboard.v1";
// A chart that displays data on a 2D (X and Y axes) plane.
message XyChart {
// Groups a time series query definition with charting options.
message DataSet {
// The types of plotting strategies for data sets.
enum PlotType {
// Plot type is unspecified. The view will default to `LINE`.
PLOT_TYPE_UNSPECIFIED = 0;
// The data is plotted as a set of lines (one line per series).
LINE = 1;
// The data is plotted as a set of filled areas (one area per series),
// with the areas stacked vertically (the base of each area is the top of
// its predecessor, and the base of the first area is the X axis). Since
// the areas do not overlap, each is filled with a different opaque color.
STACKED_AREA = 2;
// The data is plotted as a set of rectangular boxes (one box per series),
// with the boxes stacked vertically (the base of each box is the top of
// its predecessor, and the base of the first box is the X axis). Since
// the boxes do not overlap, each is filled with a different opaque color.
STACKED_BAR = 3;
// The data is plotted as a heatmap. The series being plotted must have a
// `DISTRIBUTION` value type. The value of each bucket in the distribution
// is displayed as a color. This type is not currently available in the
// Stackdriver Monitoring application.
HEATMAP = 4;
}
// Fields for querying time series data from the
// Stackdriver metrics API.
TimeSeriesQuery time_series_query = 1;
// How this data should be plotted on the chart.
PlotType plot_type = 2;
// A template string for naming `TimeSeries` in the resulting data set.
// This should be a string with interpolations of the form ${label_name},
// which will resolve to the label's value.
string legend_template = 3;
// Optional. The lower bound on data point frequency for this data set, implemented by
// specifying the minimum alignment period to use in a time series query
// For example, if the data is published once every 10 minutes, the
// `min_alignment_period` should be at least 10 minutes. It would not
// make sense to fetch and align data at one minute intervals.
google.protobuf.Duration min_alignment_period = 4 [(google.api.field_behavior) = OPTIONAL];
}
// A chart axis.
message Axis {
// Types of scales used in axes.
enum Scale {
// Scale is unspecified. The view will default to `LINEAR`.
SCALE_UNSPECIFIED = 0;
// Linear scale.
LINEAR = 1;
// Logarithmic scale (base 10).
LOG10 = 2;
}
// The label of the axis.
string label = 1;
// The axis scale. By default, a linear scale is used.
Scale scale = 2;
}
// The data displayed in this chart.
repeated DataSet data_sets = 1;
// The duration used to display a comparison chart. A comparison chart
// simultaneously shows values from two similar-length time periods
// (e.g., week-over-week metrics).
// The duration must be positive, and it can only be applied to charts with
// data sets of LINE plot type.
google.protobuf.Duration timeshift_duration = 4;
// Threshold lines drawn horizontally across the chart.
repeated Threshold thresholds = 5;
// The properties applied to the X axis.
Axis x_axis = 6;
// The properties applied to the Y axis.
Axis y_axis = 7;
// Display options for the chart.
ChartOptions chart_options = 8;
}
// Options to control visual rendering of a chart.
message ChartOptions {
// Chart mode options.
enum Mode {
// Mode is unspecified. The view will default to `COLOR`.
MODE_UNSPECIFIED = 0;
// The chart distinguishes data series using different color. Line
// colors may get reused when there are many lines in the chart.
COLOR = 1;
// The chart uses the Stackdriver x-ray mode, in which each
// data set is plotted using the same semi-transparent color.
X_RAY = 2;
// The chart displays statistics such as average, median, 95th percentile,
// and more.
STATS = 3;
}
// The chart mode.
Mode mode = 1;
}

View File

@ -302,8 +302,8 @@ message AlertPolicy {
// conditions.
repeated Condition conditions = 12;
// How to combine the results of multiple conditions
// to determine if an incident should be opened.
// How to combine the results of multiple conditions to determine if an
// incident should be opened.
ConditionCombinerType combiner = 6;
// Whether or not the policy is enabled. On write, the default interpretation

View File

@ -151,7 +151,7 @@ message ServiceLevelObjective {
ServiceLevelIndicator service_level_indicator = 3;
// The fraction of service that must be good in order for this objective to be
// met. `0 < goal <= 1`.
// met. `0 < goal <= 0.999`.
double goal = 4;
// The time period over which the objective will be evaluated.

View File

@ -83,27 +83,6 @@ message InternalChecker {
State state = 7;
}
// 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;
}
// This message configures which resources and services to monitor for
// availability.
message UptimeCheckConfig {
@ -304,6 +283,27 @@ message UptimeCheckConfig {
repeated InternalChecker internal_checkers = 14 [deprecated = true];
}
// 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;
}
// Contains the region, location, and list of IP
// addresses where checkers in the location run from.
message UptimeCheckIp {