|
|
|
// 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"
|
|
|
|
}
|
|
|
|
];
|
|
|
|
}
|