Built motion from commit 6a09e18b.|2.6.11
[motion2.git] / legacy-libs / google-proto-files / google / logging / v2 / logging_metrics.proto
diff --git a/legacy-libs/google-proto-files/google/logging/v2/logging_metrics.proto b/legacy-libs/google-proto-files/google/logging/v2/logging_metrics.proto
new file mode 100644 (file)
index 0000000..dd3fa87
--- /dev/null
@@ -0,0 +1,264 @@
+// Copyright 2018 Google LLC.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     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.logging.v2;
+
+import "google/api/annotations.proto";
+import "google/api/distribution.proto";
+import "google/api/metric.proto";
+import "google/protobuf/empty.proto";
+import "google/protobuf/field_mask.proto";
+import "google/protobuf/timestamp.proto";
+
+option cc_enable_arenas = true;
+option csharp_namespace = "Google.Cloud.Logging.V2";
+option go_package = "google.golang.org/genproto/googleapis/logging/v2;logging";
+option java_multiple_files = true;
+option java_outer_classname = "LoggingMetricsProto";
+option java_package = "com.google.logging.v2";
+option php_namespace = "Google\\Cloud\\Logging\\V2";
+
+// Service for configuring logs-based metrics.
+service MetricsServiceV2 {
+  // Lists logs-based metrics.
+  rpc ListLogMetrics(ListLogMetricsRequest) returns (ListLogMetricsResponse) {
+    option (google.api.http) = {
+      get: "/v2/{parent=projects/*}/metrics"
+    };
+  }
+
+  // Gets a logs-based metric.
+  rpc GetLogMetric(GetLogMetricRequest) returns (LogMetric) {
+    option (google.api.http) = {
+      get: "/v2/{metric_name=projects/*/metrics/*}"
+    };
+  }
+
+  // Creates a logs-based metric.
+  rpc CreateLogMetric(CreateLogMetricRequest) returns (LogMetric) {
+    option (google.api.http) = {
+      post: "/v2/{parent=projects/*}/metrics"
+      body: "metric"
+    };
+  }
+
+  // Creates or updates a logs-based metric.
+  rpc UpdateLogMetric(UpdateLogMetricRequest) returns (LogMetric) {
+    option (google.api.http) = {
+      put: "/v2/{metric_name=projects/*/metrics/*}"
+      body: "metric"
+    };
+  }
+
+  // Deletes a logs-based metric.
+  rpc DeleteLogMetric(DeleteLogMetricRequest) returns (google.protobuf.Empty) {
+    option (google.api.http) = {
+      delete: "/v2/{metric_name=projects/*/metrics/*}"
+    };
+  }
+}
+
+// Describes a logs-based metric.  The value of the metric is the
+// number of log entries that match a logs filter in a given time interval.
+//
+// Logs-based metric can also be used to extract values from logs and create a
+// a distribution of the values. The distribution records the statistics of the
+// extracted values along with an optional histogram of the values as specified
+// by the bucket options.
+message LogMetric {
+  // Logging API version.
+  enum ApiVersion {
+    // Logging API v2.
+    V2 = 0;
+
+    // Logging API v1.
+    V1 = 1;
+  }
+
+  // Required. The client-assigned metric identifier.
+  // Examples: `"error_count"`, `"nginx/requests"`.
+  //
+  // Metric identifiers are limited to 100 characters and can include
+  // only the following characters: `A-Z`, `a-z`, `0-9`, and the
+  // special characters `_-.,+!*',()%/`.  The forward-slash character
+  // (`/`) denotes a hierarchy of name pieces, and it cannot be the
+  // first character of the name.
+  //
+  // The metric identifier in this field must not be
+  // [URL-encoded](https://en.wikipedia.org/wiki/Percent-encoding).
+  // However, when the metric identifier appears as the `[METRIC_ID]`
+  // part of a `metric_name` API parameter, then the metric identifier
+  // must be URL-encoded. Example:
+  // `"projects/my-project/metrics/nginx%2Frequests"`.
+  string name = 1;
+
+  // Optional. A description of this metric, which is used in documentation.
+  string description = 2;
+
+  // Required. An [advanced logs filter](/logging/docs/view/advanced_filters)
+  // which is used to match log entries.
+  // Example:
+  //
+  //     "resource.type=gae_app AND severity>=ERROR"
+  //
+  // The maximum length of the filter is 20000 characters.
+  string filter = 3;
+
+  // Optional. The metric descriptor associated with the logs-based metric.
+  // If unspecified, it uses a default metric descriptor with a DELTA metric
+  // kind, INT64 value type, with no labels and a unit of "1". Such a metric
+  // counts the number of log entries matching the `filter` expression.
+  //
+  // The `name`, `type`, and `description` fields in the `metric_descriptor`
+  // are output only, and is constructed using the `name` and `description`
+  // field in the LogMetric.
+  //
+  // To create a logs-based metric that records a distribution of log values, a
+  // DELTA metric kind with a DISTRIBUTION value type must be used along with
+  // a `value_extractor` expression in the LogMetric.
+  //
+  // Each label in the metric descriptor must have a matching label
+  // name as the key and an extractor expression as the value in the
+  // `label_extractors` map.
+  //
+  // The `metric_kind` and `value_type` fields in the `metric_descriptor` cannot
+  // be updated once initially configured. New labels can be added in the
+  // `metric_descriptor`, but existing labels cannot be modified except for
+  // their description.
+  google.api.MetricDescriptor metric_descriptor = 5;
+
+  // Optional. A `value_extractor` is required when using a distribution
+  // logs-based metric to extract the values to record from a log entry.
+  // Two functions are supported for value extraction: `EXTRACT(field)` or
+  // `REGEXP_EXTRACT(field, regex)`. The argument are:
+  //   1. field: The name of the log entry field from which the value is to be
+  //      extracted.
+  //   2. regex: A regular expression using the Google RE2 syntax
+  //      (https://github.com/google/re2/wiki/Syntax) with a single capture
+  //      group to extract data from the specified log entry field. The value
+  //      of the field is converted to a string before applying the regex.
+  //      It is an error to specify a regex that does not include exactly one
+  //      capture group.
+  //
+  // The result of the extraction must be convertible to a double type, as the
+  // distribution always records double values. If either the extraction or
+  // the conversion to double fails, then those values are not recorded in the
+  // distribution.
+  //
+  // Example: `REGEXP_EXTRACT(jsonPayload.request, ".*quantity=(\d+).*")`
+  string value_extractor = 6;
+
+  // Optional. A map from a label key string to an extractor expression which is
+  // used to extract data from a log entry field and assign as the label value.
+  // Each label key specified in the LabelDescriptor must have an associated
+  // extractor expression in this map. The syntax of the extractor expression
+  // is the same as for the `value_extractor` field.
+  //
+  // The extracted value is converted to the type defined in the label
+  // descriptor. If the either the extraction or the type conversion fails,
+  // the label will have a default value. The default value for a string
+  // label is an empty string, for an integer label its 0, and for a boolean
+  // label its `false`.
+  //
+  // Note that there are upper bounds on the maximum number of labels and the
+  // number of active time series that are allowed in a project.
+  map<string, string> label_extractors = 7;
+
+  // Optional. The `bucket_options` are required when the logs-based metric is
+  // using a DISTRIBUTION value type and it describes the bucket boundaries
+  // used to create a histogram of the extracted values.
+  google.api.Distribution.BucketOptions bucket_options = 8;
+
+  // Deprecated. The API version that created or updated this metric.
+  // The v2 format is used by default and cannot be changed.
+  ApiVersion version = 4 [deprecated = true];
+}
+
+// The parameters to ListLogMetrics.
+message ListLogMetricsRequest {
+  // Required. The name of the project containing the metrics:
+  //
+  //     "projects/[PROJECT_ID]"
+  string parent = 1;
+
+  // Optional. If present, then retrieve the next batch of results from the
+  // preceding call to this method.  `pageToken` must be the value of
+  // `nextPageToken` from the previous response.  The values of other method
+  // parameters should be identical to those in the previous call.
+  string page_token = 2;
+
+  // Optional. The maximum number of results to return from this request.
+  // Non-positive values are ignored.  The presence of `nextPageToken` in the
+  // response indicates that more results might be available.
+  int32 page_size = 3;
+}
+
+// Result returned from ListLogMetrics.
+message ListLogMetricsResponse {
+  // A list of logs-based metrics.
+  repeated LogMetric metrics = 1;
+
+  // If there might be more results than appear in this response, then
+  // `nextPageToken` is included.  To get the next set of results, call this
+  // method again using the value of `nextPageToken` as `pageToken`.
+  string next_page_token = 2;
+}
+
+// The parameters to GetLogMetric.
+message GetLogMetricRequest {
+  // The resource name of the desired metric:
+  //
+  //     "projects/[PROJECT_ID]/metrics/[METRIC_ID]"
+  string metric_name = 1;
+}
+
+// The parameters to CreateLogMetric.
+message CreateLogMetricRequest {
+  // The resource name of the project in which to create the metric:
+  //
+  //     "projects/[PROJECT_ID]"
+  //
+  // The new metric must be provided in the request.
+  string parent = 1;
+
+  // The new logs-based metric, which must not have an identifier that
+  // already exists.
+  LogMetric metric = 2;
+}
+
+// The parameters to UpdateLogMetric.
+message UpdateLogMetricRequest {
+  // The resource name of the metric to update:
+  //
+  //     "projects/[PROJECT_ID]/metrics/[METRIC_ID]"
+  //
+  // The updated metric must be provided in the request and it's
+  // `name` field must be the same as `[METRIC_ID]` If the metric
+  // does not exist in `[PROJECT_ID]`, then a new metric is created.
+  string metric_name = 1;
+
+  // The updated metric.
+  LogMetric metric = 2;
+}
+
+// The parameters to DeleteLogMetric.
+message DeleteLogMetricRequest {
+  // The resource name of the metric to delete:
+  //
+  //     "projects/[PROJECT_ID]/metrics/[METRIC_ID]"
+  string metric_name = 1;
+}