You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
320 lines
13 KiB
320 lines
13 KiB
// Copyright 2020 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/client.proto"; |
|
import "google/api/distribution.proto"; |
|
import "google/api/field_behavior.proto"; |
|
import "google/api/metric.proto"; |
|
import "google/api/resource.proto"; |
|
import "google/protobuf/duration.proto"; |
|
import "google/protobuf/empty.proto"; |
|
import "google/protobuf/field_mask.proto"; |
|
import "google/protobuf/timestamp.proto"; |
|
import "google/api/annotations.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"; |
|
option ruby_package = "Google::Cloud::Logging::V2"; |
|
|
|
// Service for configuring logs-based metrics. |
|
service MetricsServiceV2 { |
|
option (google.api.default_host) = "logging.googleapis.com"; |
|
option (google.api.oauth_scopes) = |
|
"https://www.googleapis.com/auth/cloud-platform," |
|
"https://www.googleapis.com/auth/cloud-platform.read-only," |
|
"https://www.googleapis.com/auth/logging.admin," |
|
"https://www.googleapis.com/auth/logging.read," |
|
"https://www.googleapis.com/auth/logging.write"; |
|
|
|
// Lists logs-based metrics. |
|
rpc ListLogMetrics(ListLogMetricsRequest) returns (ListLogMetricsResponse) { |
|
option (google.api.http) = { |
|
get: "/v2/{parent=projects/*}/metrics" |
|
}; |
|
option (google.api.method_signature) = "parent"; |
|
} |
|
|
|
// Gets a logs-based metric. |
|
rpc GetLogMetric(GetLogMetricRequest) returns (LogMetric) { |
|
option (google.api.http) = { |
|
get: "/v2/{metric_name=projects/*/metrics/*}" |
|
}; |
|
option (google.api.method_signature) = "metric_name"; |
|
} |
|
|
|
// Creates a logs-based metric. |
|
rpc CreateLogMetric(CreateLogMetricRequest) returns (LogMetric) { |
|
option (google.api.http) = { |
|
post: "/v2/{parent=projects/*}/metrics" |
|
body: "metric" |
|
}; |
|
option (google.api.method_signature) = "parent,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" |
|
}; |
|
option (google.api.method_signature) = "metric_name,metric"; |
|
} |
|
|
|
// Deletes a logs-based metric. |
|
rpc DeleteLogMetric(DeleteLogMetricRequest) returns (google.protobuf.Empty) { |
|
option (google.api.http) = { |
|
delete: "/v2/{metric_name=projects/*/metrics/*}" |
|
}; |
|
option (google.api.method_signature) = "metric_name"; |
|
} |
|
} |
|
|
|
// 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 metrics can also be used to extract values from logs and create 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 { |
|
option (google.api.resource) = { |
|
type: "logging.googleapis.com/LogMetric" |
|
pattern: "projects/{project}/metrics/{metric}" |
|
}; |
|
|
|
// 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 [(google.api.field_behavior) = REQUIRED]; |
|
|
|
// Optional. A description of this metric, which is used in documentation. |
|
// The maximum length of the description is 8000 characters. |
|
string description = 2 [(google.api.field_behavior) = OPTIONAL]; |
|
|
|
// Required. An [advanced logs |
|
// filter](https://cloud.google.com/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 [(google.api.field_behavior) = REQUIRED]; |
|
|
|
// 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 [(google.api.field_behavior) = OPTIONAL]; |
|
|
|
// 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 [(google.api.field_behavior) = OPTIONAL]; |
|
|
|
// 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 [(google.api.field_behavior) = OPTIONAL]; |
|
|
|
// 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 [(google.api.field_behavior) = OPTIONAL]; |
|
|
|
// Output only. The creation timestamp of the metric. |
|
// |
|
// This field may not be present for older metrics. |
|
google.protobuf.Timestamp create_time = 9 [(google.api.field_behavior) = OUTPUT_ONLY]; |
|
|
|
// Output only. The last update timestamp of the metric. |
|
// |
|
// This field may not be present for older metrics. |
|
google.protobuf.Timestamp update_time = 10 [(google.api.field_behavior) = OUTPUT_ONLY]; |
|
|
|
// 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 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "cloudresourcemanager.googleapis.com/Project" |
|
} |
|
]; |
|
|
|
// 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 [(google.api.field_behavior) = OPTIONAL]; |
|
|
|
// 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 [(google.api.field_behavior) = OPTIONAL]; |
|
} |
|
|
|
// 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 { |
|
// Required. The resource name of the desired metric: |
|
// |
|
// "projects/[PROJECT_ID]/metrics/[METRIC_ID]" |
|
string metric_name = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "logging.googleapis.com/LogMetric" |
|
} |
|
]; |
|
} |
|
|
|
// The parameters to CreateLogMetric. |
|
message CreateLogMetricRequest { |
|
// Required. 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 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
child_type: "logging.googleapis.com/LogMetric" |
|
} |
|
]; |
|
|
|
// Required. The new logs-based metric, which must not have an identifier that |
|
// already exists. |
|
LogMetric metric = 2 [(google.api.field_behavior) = REQUIRED]; |
|
} |
|
|
|
// The parameters to UpdateLogMetric. |
|
message UpdateLogMetricRequest { |
|
// Required. 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 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "logging.googleapis.com/LogMetric" |
|
} |
|
]; |
|
|
|
// Required. The updated metric. |
|
LogMetric metric = 2 [(google.api.field_behavior) = REQUIRED]; |
|
} |
|
|
|
// The parameters to DeleteLogMetric. |
|
message DeleteLogMetricRequest { |
|
// Required. The resource name of the metric to delete: |
|
// |
|
// "projects/[PROJECT_ID]/metrics/[METRIC_ID]" |
|
string metric_name = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "logging.googleapis.com/LogMetric" |
|
} |
|
]; |
|
}
|
|
|