Add protos for monitoring API.

pull/45/head
Ethan Bao 9 years ago
parent 41f2bf6894
commit 529cc649da
  1. 90
      google/monitoring/v3/agent.proto
  2. 60
      google/monitoring/v3/agent_service.proto
  3. 317
      google/monitoring/v3/common.proto
  4. 74
      google/monitoring/v3/group.proto
  5. 210
      google/monitoring/v3/group_service.proto
  6. 65
      google/monitoring/v3/metric.proto
  7. 284
      google/monitoring/v3/metric_service.proto

@ -0,0 +1,90 @@
// Copyright 2016 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.monitoring.v3;
import "google/api/annotations.proto";
import "google/monitoring/v3/common.proto";
import "google/protobuf/timestamp.proto";
option java_multiple_files = true;
option java_outer_classname = "AgentProto";
option java_package = "com.google.monitoring.v3";
// A single data point from a `collectd`-based plugin.
message CollectdValue {
// The type of measurement for the data source.
enum DataSourceType {
// An unspecified data source type.
// This corresponds to [google.api.MetricDescriptor.MetricKind.METRIC_KIND_UNSPECIFIED].
UNSPECIFIED_DATA_SOURCE_TYPE = 0;
// An instantaneous measurement of a varying quantity.
// This corresponds to [google.api.MetricDescriptor.MetricKind.GAUGE].
GAUGE = 1;
// A cumulative value over time.
// This corresponds to [google.api.MetricDescriptor.MetricKind.CUMULATIVE].
COUNTER = 2;
// A rate of change of the measurement.
DERIVE = 3;
// An amount of change since the last measurement interval.
// This corresponds to [google.api.MetricDescriptor.MetricKind.DELTA].
ABSOLUTE = 4;
}
// The data source for the `collectd` value. For example there are
// two data sources for network measurements: `"rx"` and `"tx"`.
string data_source_name = 1;
// The type of measurement.
DataSourceType data_source_type = 2;
// The measurement value.
TypedValue value = 3;
}
// A collection of data points sent from a `collectd`-based plugin.
// See the `collectd` documentation for more information.
message CollectdPayload {
// The measured values during this time interval.
// Each value must have a different `dataSourceName`.
repeated CollectdValue values = 1;
// The start time of the interval.
google.protobuf.Timestamp start_time = 2;
// The end time of the interval.
google.protobuf.Timestamp end_time = 3;
// The name of the plugin. Example: `"disk"`.
string plugin = 4;
// The instance name of the plugin Example: `"hdcl"`.
string plugin_instance = 5;
// The measurement type. Example: `"memory"`.
string type = 6;
// The measurement type instance. Example: `"used"`.
string type_instance = 7;
// The measurement metadata. Example: `"process_id" -> 12345`
map<string, TypedValue> metadata = 8;
}

@ -0,0 +1,60 @@
// Copyright 2016 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.monitoring.v3;
import "google/api/annotations.proto";
import "google/api/monitored_resource.proto";
import "google/monitoring/v3/agent.proto";
import "google/protobuf/empty.proto";
option java_multiple_files = true;
option java_outer_classname = "AgentServiceProto";
option java_package = "com.google.monitoring.v3";
// The AgentTranslation API allows `collectd`-based agents to
// write time series data to Cloud Monitoring.
// See [google.monitoring.v3.MetricService.CreateTimeSeries] instead.
service AgentTranslationService {
// **Stackdriver Monitoring Agent only:** Creates a new time series.
//
// <aside class="caution">This method is only for use by the Google Monitoring Agent.
// Use [projects.timeSeries.create][google.monitoring.v3.MetricService.CreateTimeSeries]
// instead.</aside>
rpc CreateCollectdTimeSeries(CreateCollectdTimeSeriesRequest) returns (google.protobuf.Empty) {
option (google.api.http) = { post: "/v3/{name=projects/*}/collectdTimeSeries", body: "*" };
}
}
// The `CreateCollectdTimeSeries` request.
message CreateCollectdTimeSeriesRequest {
// The project in which to create the time series. The format is
// `"projects/PROJECT_ID_OR_NUMBER"`.
string name = 5;
// The monitored resource associated with the time series.
google.api.MonitoredResource resource = 2;
// The version of `collectd` that collected the data. Example: `"5.3.0-192.el6"`.
string collectd_version = 3;
// The `collectd` payloads representing the time series data.
// You must not include more than a single point for each
// time series, so no two payloads can have the same values
// for all of the fields `plugin`, `plugin_instance`, `type`, and `type_instance`.
repeated CollectdPayload collectd_payloads = 4;
}

@ -0,0 +1,317 @@
// Copyright 2016 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.monitoring.v3;
import "google/api/distribution.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/timestamp.proto";
option java_multiple_files = true;
option java_outer_classname = "CommonProto";
option java_package = "com.google.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 &plusmn;9.2x10<sup>18</sup>.
int64 int64_value = 2;
// A 64-bit double-precision floating-point number. Its magnitude
// is approximately &plusmn;10<sup>&plusmn;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 time interval extending from after `startTime` through `endTime`. If
// `startTime` is omitted, the interval is the single point in time, `endTime`.
message TimeInterval {
// Required. The end of the interval. The interval includes this
// time.
google.protobuf.Timestamp end_time = 2;
// If this value is omitted, the interval is a point in time,
// `endTime`. If `startTime` is present, it must be earlier than
// (less than) `endTime`. The interval begins after
// `startTime`&mdash;it does not include `startTime`.
google.protobuf.Timestamp start_time = 1;
}
// Describes how to combine, or aggregate, multiple time series to
// provide different views of the data.
// See [Aggregation](/monitoring/api/learn_more#aggregation) for more details.
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.
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].
ALIGN_RATE = 2;
// Align by interpolating between adjacent points around the
// period boundary. 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_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 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;
}
// 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 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][google.monitoring.v3.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.
// Fields not specified in `groupByFields` are aggregated away.
// If `groupByFields` is not specified, 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;
}

@ -0,0 +1,74 @@
// Copyright 2016 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.monitoring.v3;
option java_multiple_files = true;
option java_outer_classname = "GroupProto";
option java_package = "com.google.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 {
// 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.
// @OutputOnly
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, `parentName` 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;
}

@ -0,0 +1,210 @@
// Copyright 2016 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.monitoring.v3;
import "google/api/annotations.proto";
import "google/api/monitored_resource.proto";
import "google/monitoring/v3/common.proto";
import "google/monitoring/v3/group.proto";
import "google/protobuf/empty.proto";
option java_multiple_files = true;
option java_outer_classname = "GroupServiceProto";
option java_package = "com.google.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 {
// Lists the existing groups. The project ID in the URL path must refer
// to a Stackdriver account.
rpc ListGroups(ListGroupsRequest) returns (ListGroupsResponse) {
option (google.api.http) = { get: "/v3/{name=projects/*}/groups" };
}
// Gets a single group. The project ID in the URL path must refer to a
// Stackdriver account.
rpc GetGroup(GetGroupRequest) returns (Group) {
option (google.api.http) = { get: "/v3/{name=projects/*/groups/*}" };
}
// Creates a new group. The project ID in the URL path must refer to a
// Stackdriver account.
rpc CreateGroup(CreateGroupRequest) returns (Group) {
option (google.api.http) = { post: "/v3/{name=projects/*}/groups", body: "group" };
}
// Updates an existing group.
// You can change any group attributes except `name`.
// The project ID in the URL path must refer to a Stackdriver account.
rpc UpdateGroup(UpdateGroupRequest) returns (Group) {
option (google.api.http) = { put: "/v3/{group.name=projects/*/groups/*}", body: "group" };
}
// Deletes an existing group. The project ID in the URL path must refer to a
// Stackdriver account.
rpc DeleteGroup(DeleteGroupRequest) returns (google.protobuf.Empty) {
option (google.api.http) = { delete: "/v3/{name=projects/*/groups/*}" };
}
// Lists the monitored resources that are members of a group. The project ID
// in the URL path must refer to a Stackdriver account.
rpc ListGroupMembers(ListGroupMembersRequest) returns (ListGroupMembersResponse) {
option (google.api.http) = { get: "/v3/{name=projects/*/groups/*}/members" };
}
}
// The `ListGroup` request.
message ListGroupsRequest {
// The project whose groups are to be listed. The format is
// `"projects/{project_id_or_number}"`.
string name = 7;
// 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: `"projects/{project_id_or_number}/groups/{group_id}"`.
// Returns groups whose `parentName` field contains the group
// name. If no groups have this parent, the results are empty.
string children_of_group = 2;
// A group name: `"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;
// A group name: `"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 `childrenOfGroup` filter, and includes
// children-of-children, and so forth.
string descendants_of_group = 4;
}
// 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 `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 = 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 `pageToken` in the next call to this method.
string next_page_token = 2;
}
// The `GetGroup` request.
message GetGroupRequest {
// The group to retrieve. The format is
// `"projects/{project_id_or_number}/groups/{group_id}"`.
string name = 3;
}
// The `CreateGroup` request.
message CreateGroupRequest {
// The project in which to create the group. The format is
// `"projects/{project_id_or_number}"`.
string name = 4;
// A group definition. It is an error to define the `name` field because
// the system assigns the name.
Group group = 2;
// If true, validate this request but do not create the group.
bool validate_only = 3;
}
// The `UpdateGroup` request.
message UpdateGroupRequest {
// 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;
// If true, validate this request but do not update the existing group.
bool validate_only = 3;
}
// The `DeleteGroup` request. You can only delete a group if it has no children.
message DeleteGroupRequest {
// The group to delete. The format is
// `"projects/{project_id_or_number}/groups/{group_id}"`.
string name = 3;
}
// The `ListGroupMembers` request.
message ListGroupMembersRequest {
// The group whose members are listed. The format is
// `"projects/{project_id_or_number}/groups/{group_id}"`.
string name = 7;
// 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;
// An optional [list filter](/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
// `pageToken` in the next call to this method.
string next_page_token = 2;
// The total number of elements matching this request.
int32 total_size = 3;
}

@ -0,0 +1,65 @@
// Copyright 2016 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.monitoring.v3;
import "google/api/metric.proto";
import "google/api/monitored_resource.proto";
import "google/monitoring/v3/common.proto";
option java_multiple_files = true;
option java_outer_classname = "MetricProto";
option java_package = "com.google.monitoring.v3";
// A single data point in a time series.
message Point {
// The time interval to which the value applies.
TimeInterval interval = 1;
// The value of the data point.
TypedValue value = 2;
}
// A collection of data points that describes the time-varying nature
// of a metric. A time series is identified by a combination of a
// fully-specified monitored resource and a fully-specified metric.
message TimeSeries {
// The fully-specified metric used to identify the time series.
google.api.Metric metric = 1;
// The fully-specified monitored resource used to identify the time series.
google.api.MonitoredResource resource = 2;
// The metric kind of the time series. This can be different than the metric
// kind specified in [google.api.MetricDescriptor] because of alignment and
// reduction operations on the data. This field is ignored when writing data;
// the value specified in the descriptor is used instead.
// @OutputOnly
google.api.MetricDescriptor.MetricKind metric_kind = 3;
// The value type of the time series. This can be different than the value
// type specified in [google.api.MetricDescriptor] because of alignment and
// reduction operations on the data. This field is ignored when writing data;
// the value specified in the descriptor is used instead.
// @OutputOnly
google.api.MetricDescriptor.ValueType value_type = 4;
// The data points of this time series. When used as output, points will be
// sorted by decreasing time order. When used as input, points could be
// written in any orders.
repeated Point points = 5;
}

@ -0,0 +1,284 @@
// Copyright 2016 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.monitoring.v3;
import "google/api/annotations.proto";
import "google/api/metric.proto";
import "google/api/monitored_resource.proto";
import "google/monitoring/v3/common.proto";
import "google/monitoring/v3/metric.proto";
import "google/protobuf/empty.proto";
import "google/rpc/status.proto";
option java_multiple_files = true;
option java_outer_classname = "MetricServiceProto";
option java_package = "com.google.monitoring.v3";
// Manages metric descriptors, monitored resource descriptors, and
// time series data.
service MetricService {
// Lists monitored resource descriptors that match a filter.
rpc ListMonitoredResourceDescriptors(ListMonitoredResourceDescriptorsRequest) returns (ListMonitoredResourceDescriptorsResponse) {
option (google.api.http) = { get: "/v3/{name=projects/*}/monitoredResourceDescriptors" };
}
// Gets a single monitored resource descriptor.
rpc GetMonitoredResourceDescriptor(GetMonitoredResourceDescriptorRequest) returns (google.api.MonitoredResourceDescriptor) {
option (google.api.http) = { get: "/v3/{name=projects/*/monitoredResourceDescriptors/*}" };
}
// Lists metric descriptors that match a filter.
rpc ListMetricDescriptors(ListMetricDescriptorsRequest) returns (ListMetricDescriptorsResponse) {
option (google.api.http) = { get: "/v3/{name=projects/*}/metricDescriptors" };
}
// Gets a single metric descriptor.
rpc GetMetricDescriptor(GetMetricDescriptorRequest) returns (google.api.MetricDescriptor) {
option (google.api.http) = { get: "/v3/{name=projects/*/metricDescriptors/**}" };
}
// Creates a new metric descriptor.
// User-created metric descriptors define
// [custom metrics](/monitoring/custom-metrics).
rpc CreateMetricDescriptor(CreateMetricDescriptorRequest) returns (google.api.MetricDescriptor) {
option (google.api.http) = { post: "/v3/{name=projects/*}/metricDescriptors", body: "metric_descriptor" };
}
// Deletes a metric descriptor. Only user-created
// [custom metrics](/monitoring/custom-metrics) can be deleted.
rpc DeleteMetricDescriptor(DeleteMetricDescriptorRequest) returns (google.protobuf.Empty) {
option (google.api.http) = { delete: "/v3/{name=projects/*/metricDescriptors/**}" };
}
// Lists time series that match a filter.
rpc ListTimeSeries(ListTimeSeriesRequest) returns (ListTimeSeriesResponse) {
option (google.api.http) = { get: "/v3/{name=projects/*}/timeSeries" };
}
// 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: "*" };
}
}
// The `ListMonitoredResourceDescriptors` request.
message ListMonitoredResourceDescriptorsRequest {
// The project on which to execute the request. The format is
// `"projects/{project_id_or_number}"`.
string name = 5;
// An optional [filter](/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 `ListMonitoredResourcDescriptors` 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 `pageToken` in the next call to this method.
string next_page_token = 2;
}
// The `GetMonitoredResourceDescriptor` request.
message GetMonitoredResourceDescriptorRequest {
// 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;
}
// The `ListMetricDescriptors` request.
message ListMetricDescriptorsRequest {
// The project on which to execute the request. The format is
// `"projects/{project_id_or_number}"`.
string name = 5;
// If this field is empty, all custom and
// system-defined metric descriptors are returned.
// Otherwise, the [filter](/monitoring/api/v3/filters)
// specifies which metric descriptors are to be
// returned. For example, the following filter matches all
// [custom metrics](/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 `pageToken` in the next call to this method.
string next_page_token = 2;
}
// The `GetMetricDescriptor` request.
message GetMetricDescriptorRequest {
// 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;
}
// The `CreateMetricDescriptor` request.
message CreateMetricDescriptorRequest {
// The project on which to execute the request. The format is
// `"projects/{project_id_or_number}"`.
string name = 3;
// The new [custom metric](/monitoring/custom-metrics)
// descriptor.
google.api.MetricDescriptor metric_descriptor = 2;
}
// The `DeleteMetricDescriptor` request.
message DeleteMetricDescriptorRequest {
// 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;
}
// 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;
}
// The project on which to execute the request. The format is
// "projects/{project_id_or_number}".
string name = 10;
// A [monitoring filter](/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.label.instance_name = "my-instance-name"
string filter = 2;
// 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;
// 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 = 5;
// Specifies the order in which the points of the time series should
// be returned. By default, results are not ordered. Currently,
// this field must be left blank.
string order_by = 6;
// Specifies which information is returned about the time series.
TimeSeriesView view = 7;
// A positive number that is the maximum number of results to return.
// When `view` field sets to `FULL`, it limits the number of `Points` server
// will return; if `view` field is `HEADERS`, it limits the number of
// `TimeSeries` server will return.
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 `pageToken` in the next call to this method.
string next_page_token = 2;
}
// The `CreateTimeSeries` request.
message CreateTimeSeriesRequest {
// The project on which to execute the request. The format is
// `"projects/{project_id_or_number}"`.
string name = 3;
// 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.
repeated TimeSeries time_series = 2;
}
// Describes the result of a failed request to write data to a time series.
message CreateTimeSeriesError {
// The time series, including the `Metric`, `MonitoredResource`,
// and `Point`s (including timestamp and value) that resulted
// in the error. This field provides all of the context that
// would be needed to retry the operation.
TimeSeries time_series = 1;
// The status of the requested write operation.
google.rpc.Status status = 2;
}
Loading…
Cancel
Save