diff --git a/kubernetes/customresourcedefinitions.gen.yaml b/kubernetes/customresourcedefinitions.gen.yaml index 32f975967cc..f9ca2a3be7b 100644 --- a/kubernetes/customresourcedefinitions.gen.yaml +++ b/kubernetes/customresourcedefinitions.gen.yaml @@ -11910,6 +11910,315 @@ spec: singular: telemetry scope: Namespaced versions: + - additionalPrinterColumns: + - description: 'CreationTimestamp is a timestamp representing the server time + when this object was created. It is not guaranteed to be set in happens-before + order across separate operations. Clients may not set this value. It is represented + in RFC3339 form and is in UTC. Populated by the system. Read-only. Null for + lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' + jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1 + schema: + openAPIV3Schema: + properties: + spec: + description: 'Telemetry configuration for workloads. See more details + at: https://istio.io/docs/reference/config/telemetry.html' + properties: + accessLogging: + description: Optional. + items: + properties: + disabled: + description: Controls logging. + nullable: true + type: boolean + filter: + description: Optional. + properties: + expression: + description: CEL expression for selecting when requests/connections + should be logged. + type: string + type: object + match: + description: Allows tailoring of logging behavior to specific + conditions. + properties: + mode: + description: |- + This determines whether or not to apply the access logging configuration based on the direction of traffic relative to the proxied workload. + + Valid Options: CLIENT_AND_SERVER, CLIENT, SERVER + enum: + - CLIENT_AND_SERVER + - CLIENT + - SERVER + type: string + type: object + providers: + description: Optional. + items: + properties: + name: + description: Required. + minLength: 1 + type: string + required: + - name + type: object + type: array + type: object + type: array + metrics: + description: Optional. + items: + properties: + overrides: + description: Optional. + items: + properties: + disabled: + description: Optional. + nullable: true + type: boolean + match: + description: Match allows providing the scope of the override. + oneOf: + - not: + anyOf: + - required: + - metric + - required: + - customMetric + - required: + - metric + - required: + - customMetric + properties: + customMetric: + description: Allows free-form specification of a metric. + minLength: 1 + type: string + metric: + description: |- + One of the well-known [Istio Standard Metrics](https://istio.io/latest/docs/reference/config/metrics/). + + Valid Options: ALL_METRICS, REQUEST_COUNT, REQUEST_DURATION, REQUEST_SIZE, RESPONSE_SIZE, TCP_OPENED_CONNECTIONS, TCP_CLOSED_CONNECTIONS, TCP_SENT_BYTES, TCP_RECEIVED_BYTES, GRPC_REQUEST_MESSAGES, GRPC_RESPONSE_MESSAGES + enum: + - ALL_METRICS + - REQUEST_COUNT + - REQUEST_DURATION + - REQUEST_SIZE + - RESPONSE_SIZE + - TCP_OPENED_CONNECTIONS + - TCP_CLOSED_CONNECTIONS + - TCP_SENT_BYTES + - TCP_RECEIVED_BYTES + - GRPC_REQUEST_MESSAGES + - GRPC_RESPONSE_MESSAGES + type: string + mode: + description: |- + Controls which mode of metrics generation is selected: `CLIENT`, `SERVER`, or `CLIENT_AND_SERVER`. + + Valid Options: CLIENT_AND_SERVER, CLIENT, SERVER + enum: + - CLIENT_AND_SERVER + - CLIENT + - SERVER + type: string + type: object + tagOverrides: + additionalProperties: + properties: + operation: + description: |- + Operation controls whether or not to update/add a tag, or to remove it. + + Valid Options: UPSERT, REMOVE + enum: + - UPSERT + - REMOVE + type: string + value: + description: Value is only considered if the operation + is `UPSERT`. + type: string + type: object + x-kubernetes-validations: + - message: value must be set when operation is UPSERT + rule: '((has(self.operation) ? self.operation : '''') + == ''UPSERT'') ? self.value != '''' : true' + - message: value must not be set when operation is REMOVE + rule: '((has(self.operation) ? self.operation : '''') + == ''REMOVE'') ? !has(self.value) : true' + description: Optional. + type: object + type: object + type: array + providers: + description: Optional. + items: + properties: + name: + description: Required. + minLength: 1 + type: string + required: + - name + type: object + type: array + reportingInterval: + description: Optional. + type: string + type: object + type: array + selector: + description: Optional. + properties: + matchLabels: + additionalProperties: + type: string + description: One or more labels that indicate a specific set of + pods/VMs on which a policy should be applied. + type: object + type: object + targetRef: + description: Optional. + properties: + group: + description: group is the group of the target resource. + type: string + kind: + description: kind is kind of the target resource. + type: string + name: + description: name is the name of the target resource. + type: string + namespace: + description: namespace is the namespace of the referent. + type: string + type: object + tracing: + description: Optional. + items: + properties: + customTags: + additionalProperties: + oneOf: + - not: + anyOf: + - required: + - literal + - required: + - environment + - required: + - header + - required: + - literal + - required: + - environment + - required: + - header + properties: + environment: + description: Environment adds the value of an environment + variable to each span. + properties: + defaultValue: + description: Optional. + type: string + name: + description: Name of the environment variable from + which to extract the tag value. + minLength: 1 + type: string + required: + - name + type: object + header: + description: RequestHeader adds the value of an header + from the request to each span. + properties: + defaultValue: + description: Optional. + type: string + name: + description: Name of the header from which to extract + the tag value. + minLength: 1 + type: string + required: + - name + type: object + literal: + description: Literal adds the same, hard-coded value to + each span. + properties: + value: + description: The tag value to use. + minLength: 1 + type: string + required: + - value + type: object + type: object + description: Optional. + type: object + disableSpanReporting: + description: Controls span reporting. + nullable: true + type: boolean + match: + description: Allows tailoring of behavior to specific conditions. + properties: + mode: + description: |- + This determines whether or not to apply the tracing configuration based on the direction of traffic relative to the proxied workload. + + Valid Options: CLIENT_AND_SERVER, CLIENT, SERVER + enum: + - CLIENT_AND_SERVER + - CLIENT + - SERVER + type: string + type: object + providers: + description: Optional. + items: + properties: + name: + description: Required. + minLength: 1 + type: string + required: + - name + type: object + type: array + randomSamplingPercentage: + description: Controls the rate at which traffic will be selected + for tracing if no prior sampling decision has been made. + maximum: 100 + minimum: 0 + nullable: true + type: number + useRequestIdForTraceSampling: + nullable: true + type: boolean + type: object + type: array + type: object + status: + type: object + x-kubernetes-preserve-unknown-fields: true + type: object + served: true + storage: false + subresources: + status: {} - additionalPrinterColumns: - description: 'CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before diff --git a/releasenotes/notes/promote-telemetry-v1.yaml b/releasenotes/notes/promote-telemetry-v1.yaml new file mode 100644 index 00000000000..8c4d05a85d9 --- /dev/null +++ b/releasenotes/notes/promote-telemetry-v1.yaml @@ -0,0 +1,6 @@ +apiVersion: release-notes/v2 +kind: feature +area: telemetry +releaseNotes: + - | + **Promoted** Telemetry API to v1. All Telemetry fields excepting `metrics.reportingInterval` and `accessLogging.filter` are now stable and will not change in a backwards-incompatible way. \ No newline at end of file diff --git a/telemetry/v1/telemetry.pb.go b/telemetry/v1/telemetry.pb.go new file mode 100644 index 00000000000..3c74875bf46 --- /dev/null +++ b/telemetry/v1/telemetry.pb.go @@ -0,0 +1,2195 @@ +// Copyright Istio Authors +// +// 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. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.33.0 +// protoc (unknown) +// source: telemetry/v1/telemetry.proto + +// $schema: istio.telemetry.v1.Telemetry +// $title: Telemetry +// $description: Telemetry configuration for workloads. +// $location: https://istio.io/docs/reference/config/telemetry.html +// $aliases: [/docs/reference/config/telemetry/v1/telemetry] +// $mode: none + +// Telemetry defines how the telemetry is generated for workloads within a mesh. +// +// For mesh level configuration, put the resource in root configuration +// namespace for your Istio installation *without* a workload selector. +// +// For any namespace, including the root configuration namespace, it is only +// valid to have a single workload selector-less Telemetry resource. +// +// For resources with a workload selector, it is only valid to have one resource +// selecting any given workload. +// +// The hierarchy of Telemetry configuration is as follows: +// +// 1. Workload-specific configuration +// 2. Namespace-specific configuration +// 3. Root namespace configuration +// +// ## Examples +// +// Policy to enable random sampling for 10% of traffic: +// ```yaml +// apiVersion: telemetry.istio.io/v1 +// kind: Telemetry +// metadata: +// name: mesh-default +// namespace: istio-system +// spec: +// # no selector specified, applies to all workloads +// tracing: +// - randomSamplingPercentage: 10.00 +// ``` +// +// Policy to disable trace reporting for the `foo` workload (note: tracing +// context will still be propagated): +// ```yaml +// apiVersion: telemetry.istio.io/v1 +// kind: Telemetry +// metadata: +// name: foo-tracing +// namespace: bar +// spec: +// selector: +// matchLabels: +// service.istio.io/canonical-name: foo +// tracing: +// - disableSpanReporting: true +// ``` +// +// Policy to select the alternate zipkin provider for trace reporting: +// ```yaml +// apiVersion: telemetry.istio.io/v1 +// kind: Telemetry +// metadata: +// name: foo-tracing-alternate +// namespace: baz +// spec: +// selector: +// matchLabels: +// service.istio.io/canonical-name: foo +// tracing: +// - providers: +// - name: "zipkin-alternate" +// randomSamplingPercentage: 10.00 +// ``` +// +// Policy to tailor the zipkin provider to sample traces from Client workloads only: +// ```yaml +// apiVersion: telemetry.istio.io/v1alpha1 +// kind: Telemetry +// metadata: +// name: mesh-default +// namespace: istio-system +// spec: +// # no selector specified, applies to all workloads +// tracing: +// - match: CLIENT +// - providers: +// - name: "zipkin" +// ``` +// +// Policy to add a custom tag from a literal value: +// ```yaml +// apiVersion: telemetry.istio.io/v1 +// kind: Telemetry +// metadata: +// name: mesh-default +// namespace: istio-system +// spec: +// # no selector specified, applies to all workloads +// tracing: +// - randomSamplingPercentage: 10.00 +// customTags: +// my_new_foo_tag: +// literal: +// value: "foo" +// ``` +// +// Policy to disable server-side metrics for Prometheus for an entire mesh: +// ```yaml +// apiVersion: telemetry.istio.io/v1 +// kind: Telemetry +// metadata: +// name: mesh-default +// namespace: istio-system +// spec: +// # no selector specified, applies to all workloads +// metrics: +// - providers: +// - name: prometheus +// overrides: +// - match: +// metric: ALL_METRICS +// mode: SERVER +// disabled: true +// ``` +// +// Policy to add dimensions to all Prometheus metrics for the `foo` namespace: +// ```yaml +// apiVersion: telemetry.istio.io/v1 +// kind: Telemetry +// metadata: +// name: namespace-metrics +// namespace: foo +// spec: +// # no selector specified, applies to all workloads in the namespace +// metrics: +// - providers: +// - name: prometheus +// overrides: +// # match clause left off matches all istio metrics, client and server +// - tagOverrides: +// request_method: +// value: "request.method" +// request_host: +// value: "request.host" +// ``` +// +// Policy to remove the `response_code` dimension on some Prometheus metrics for +// the `bar.foo` workload: +// ```yaml +// apiVersion: telemetry.istio.io/v1 +// kind: Telemetry +// metadata: +// name: remove-response-code +// namespace: foo +// spec: +// selector: +// matchLabels: +// service.istio.io/canonical-name: bar +// metrics: +// - providers: +// - name: prometheus +// overrides: +// - match: +// metric: REQUEST_COUNT +// tagOverrides: +// response_code: +// operation: REMOVE +// - match: +// metric: REQUEST_DURATION +// tagOverrides: +// response_code: +// operation: REMOVE +// - match: +// metric: REQUEST_SIZE +// tagOverrides: +// response_code: +// operation: REMOVE +// - match: +// metric: RESPONSE_SIZE +// tagOverrides: +// response_code: +// operation: REMOVE +// ``` +// +// Policy to enable access logging for the entire mesh: +// ```yaml +// apiVersion: telemetry.istio.io/v1 +// kind: Telemetry +// metadata: +// name: mesh-default +// namespace: istio-system +// spec: +// # no selector specified, applies to all workloads +// accessLogging: +// - providers: +// - name: envoy +// # By default, this turns on access logging (no need to set `disabled: false`). +// # Unspecified `disabled` will be treated as `disabled: false`, except in +// # cases where a parent configuration has marked as `disabled: true`. In +// # those cases, `disabled: false` must be set explicitly to override. +// ``` +// +// Policy to disable access logging for the `foo` namespace: +// ```yaml +// apiVersion: telemetry.istio.io/v1 +// kind: Telemetry +// metadata: +// name: namespace-no-log +// namespace: foo +// spec: +// # no selector specified, applies to all workloads in the namespace +// accessLogging: +// - disabled: true +// ``` +// + +package v1 + +import ( + duration "github.com/golang/protobuf/ptypes/duration" + wrappers "github.com/golang/protobuf/ptypes/wrappers" + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + v1beta1 "istio.io/api/type/v1beta1" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// WorkloadMode allows selection of the role of the underlying workload in +// network traffic. A workload is considered as acting as a `SERVER` if it is +// the destination of the traffic (that is, traffic direction, from the +// perspective of the workload is *inbound*). If the workload is the source of +// the network traffic, it is considered to be in `CLIENT` mode (traffic is +// *outbound* from the workload). +type WorkloadMode int32 + +const ( + // Selects for scenarios when the workload is either the + // source or destination of the network traffic. + WorkloadMode_CLIENT_AND_SERVER WorkloadMode = 0 + // Selects for scenarios when the workload is the + // source of the network traffic. + WorkloadMode_CLIENT WorkloadMode = 1 + // Selects for scenarios when the workload is the + // destination of the network traffic. + WorkloadMode_SERVER WorkloadMode = 2 +) + +// Enum value maps for WorkloadMode. +var ( + WorkloadMode_name = map[int32]string{ + 0: "CLIENT_AND_SERVER", + 1: "CLIENT", + 2: "SERVER", + } + WorkloadMode_value = map[string]int32{ + "CLIENT_AND_SERVER": 0, + "CLIENT": 1, + "SERVER": 2, + } +) + +func (x WorkloadMode) Enum() *WorkloadMode { + p := new(WorkloadMode) + *p = x + return p +} + +func (x WorkloadMode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (WorkloadMode) Descriptor() protoreflect.EnumDescriptor { + return file_telemetry_v1_telemetry_proto_enumTypes[0].Descriptor() +} + +func (WorkloadMode) Type() protoreflect.EnumType { + return &file_telemetry_v1_telemetry_proto_enumTypes[0] +} + +func (x WorkloadMode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use WorkloadMode.Descriptor instead. +func (WorkloadMode) EnumDescriptor() ([]byte, []int) { + return file_telemetry_v1_telemetry_proto_rawDescGZIP(), []int{0} +} + +// Curated list of known metric types that is supported by Istio metric +// providers. See also: +// https://istio.io/latest/docs/reference/config/metrics/#metrics +type MetricSelector_IstioMetric int32 + +const ( + // Use of this enum indicates that the override should apply to all Istio + // default metrics. + MetricSelector_ALL_METRICS MetricSelector_IstioMetric = 0 + // Counter of requests to/from an application, generated for HTTP, HTTP/2, + // and GRPC traffic. + // + // The Prometheus provider exports this metric as: `istio_requests_total`. + // + // The Stackdriver provider exports this metric as: + // + // - `istio.io/service/server/request_count` (SERVER mode) + // - `istio.io/service/client/request_count` (CLIENT mode) + MetricSelector_REQUEST_COUNT MetricSelector_IstioMetric = 1 + // Histogram of request durations, generated for HTTP, HTTP/2, and GRPC + // traffic. + // + // The Prometheus provider exports this metric as: + // `istio_request_duration_milliseconds`. + // + // The Stackdriver provider exports this metric as: + // + // - `istio.io/service/server/response_latencies` (SERVER mode) + // - `istio.io/service/client/roundtrip_latencies` (CLIENT mode) + MetricSelector_REQUEST_DURATION MetricSelector_IstioMetric = 2 + // Histogram of request body sizes, generated for HTTP, HTTP/2, and GRPC + // traffic. + // + // The Prometheus provider exports this metric as: `istio_request_bytes`. + // + // The Stackdriver provider exports this metric as: + // + // - `istio.io/service/server/request_bytes` (SERVER mode) + // - `istio.io/service/client/request_bytes` (CLIENT mode) + MetricSelector_REQUEST_SIZE MetricSelector_IstioMetric = 3 + // Histogram of response body sizes, generated for HTTP, HTTP/2, and GRPC + // traffic. + // + // The Prometheus provider exports this metric as: `istio_response_bytes`. + // + // The Stackdriver provider exports this metric as: + // + // - `istio.io/service/server/response_bytes` (SERVER mode) + // - `istio.io/service/client/response_bytes` (CLIENT mode) + MetricSelector_RESPONSE_SIZE MetricSelector_IstioMetric = 4 + // Counter of TCP connections opened over lifetime of workload. + // + // The Prometheus provider exports this metric as: + // `istio_tcp_connections_opened_total`. + // + // The Stackdriver provider exports this metric as: + // + // - `istio.io/service/server/connection_open_count` (SERVER mode) + // - `istio.io/service/client/connection_open_count` (CLIENT mode) + MetricSelector_TCP_OPENED_CONNECTIONS MetricSelector_IstioMetric = 5 + // Counter of TCP connections closed over lifetime of workload. + // + // The Prometheus provider exports this metric as: + // `istio_tcp_connections_closed_total`. + // + // The Stackdriver provider exports this metric as: + // + // - `istio.io/service/server/connection_close_count` (SERVER mode) + // - `istio.io/service/client/connection_close_count` (CLIENT mode) + MetricSelector_TCP_CLOSED_CONNECTIONS MetricSelector_IstioMetric = 6 + // Counter of bytes sent during a response over a TCP connection. + // + // The Prometheus provider exports this metric as: + // `istio_tcp_sent_bytes_total`. + // + // The Stackdriver provider exports this metric as: + // + // - `istio.io/service/server/sent_bytes_count` (SERVER mode) + // - `istio.io/service/client/sent_bytes_count` (CLIENT mode) + MetricSelector_TCP_SENT_BYTES MetricSelector_IstioMetric = 7 + // Counter of bytes received during a request over a TCP connection. + // + // The Prometheus provider exports this metric as: + // `istio_tcp_received_bytes_total`. + // + // The Stackdriver provider exports this metric as: + // + // - `istio.io/service/server/received_bytes_count` (SERVER mode) + // - `istio.io/service/client/received_bytes_count` (CLIENT mode) + MetricSelector_TCP_RECEIVED_BYTES MetricSelector_IstioMetric = 8 + // Counter incremented for every gRPC messages sent from a client. + // + // The Prometheus provider exports this metric as: + // `istio_request_messages_total` + MetricSelector_GRPC_REQUEST_MESSAGES MetricSelector_IstioMetric = 9 + // Counter incremented for every gRPC messages sent from a server. + // + // The Prometheus provider exports this metric as: + // `istio_response_messages_total` + MetricSelector_GRPC_RESPONSE_MESSAGES MetricSelector_IstioMetric = 10 +) + +// Enum value maps for MetricSelector_IstioMetric. +var ( + MetricSelector_IstioMetric_name = map[int32]string{ + 0: "ALL_METRICS", + 1: "REQUEST_COUNT", + 2: "REQUEST_DURATION", + 3: "REQUEST_SIZE", + 4: "RESPONSE_SIZE", + 5: "TCP_OPENED_CONNECTIONS", + 6: "TCP_CLOSED_CONNECTIONS", + 7: "TCP_SENT_BYTES", + 8: "TCP_RECEIVED_BYTES", + 9: "GRPC_REQUEST_MESSAGES", + 10: "GRPC_RESPONSE_MESSAGES", + } + MetricSelector_IstioMetric_value = map[string]int32{ + "ALL_METRICS": 0, + "REQUEST_COUNT": 1, + "REQUEST_DURATION": 2, + "REQUEST_SIZE": 3, + "RESPONSE_SIZE": 4, + "TCP_OPENED_CONNECTIONS": 5, + "TCP_CLOSED_CONNECTIONS": 6, + "TCP_SENT_BYTES": 7, + "TCP_RECEIVED_BYTES": 8, + "GRPC_REQUEST_MESSAGES": 9, + "GRPC_RESPONSE_MESSAGES": 10, + } +) + +func (x MetricSelector_IstioMetric) Enum() *MetricSelector_IstioMetric { + p := new(MetricSelector_IstioMetric) + *p = x + return p +} + +func (x MetricSelector_IstioMetric) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MetricSelector_IstioMetric) Descriptor() protoreflect.EnumDescriptor { + return file_telemetry_v1_telemetry_proto_enumTypes[1].Descriptor() +} + +func (MetricSelector_IstioMetric) Type() protoreflect.EnumType { + return &file_telemetry_v1_telemetry_proto_enumTypes[1] +} + +func (x MetricSelector_IstioMetric) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MetricSelector_IstioMetric.Descriptor instead. +func (MetricSelector_IstioMetric) EnumDescriptor() ([]byte, []int) { + return file_telemetry_v1_telemetry_proto_rawDescGZIP(), []int{4, 0} +} + +type MetricsOverrides_TagOverride_Operation int32 + +const ( + // Insert or Update the tag with the provided value expression. The + // `value` field MUST be specified if `UPSERT` is used as the operation. + MetricsOverrides_TagOverride_UPSERT MetricsOverrides_TagOverride_Operation = 0 + // Specifies that the tag should not be included in the metric when + // generated. + MetricsOverrides_TagOverride_REMOVE MetricsOverrides_TagOverride_Operation = 1 +) + +// Enum value maps for MetricsOverrides_TagOverride_Operation. +var ( + MetricsOverrides_TagOverride_Operation_name = map[int32]string{ + 0: "UPSERT", + 1: "REMOVE", + } + MetricsOverrides_TagOverride_Operation_value = map[string]int32{ + "UPSERT": 0, + "REMOVE": 1, + } +) + +func (x MetricsOverrides_TagOverride_Operation) Enum() *MetricsOverrides_TagOverride_Operation { + p := new(MetricsOverrides_TagOverride_Operation) + *p = x + return p +} + +func (x MetricsOverrides_TagOverride_Operation) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MetricsOverrides_TagOverride_Operation) Descriptor() protoreflect.EnumDescriptor { + return file_telemetry_v1_telemetry_proto_enumTypes[2].Descriptor() +} + +func (MetricsOverrides_TagOverride_Operation) Type() protoreflect.EnumType { + return &file_telemetry_v1_telemetry_proto_enumTypes[2] +} + +func (x MetricsOverrides_TagOverride_Operation) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MetricsOverrides_TagOverride_Operation.Descriptor instead. +func (MetricsOverrides_TagOverride_Operation) EnumDescriptor() ([]byte, []int) { + return file_telemetry_v1_telemetry_proto_rawDescGZIP(), []int{5, 0, 0} +} + +// +// +// +// --> +// +type Telemetry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. The selector decides where to apply the Telemetry policy. + // If not set, the Telemetry policy will be applied to all workloads in the + // same namespace as the Telemetry policy. + // + // At most, only one of the selector or targetRef can be set for a given policy. + Selector *v1beta1.WorkloadSelector `protobuf:"bytes,1,opt,name=selector,proto3" json:"selector,omitempty"` + // Optional. The `targetRef` specifies the gateway the policy should be + // applied to. The targeted resource specified will determine which + // workloads the telemetry policy applies to. The targeted resource + // must be a Kubernetes gateway. The resource must be in the same namespace as + // the Telemetry policy. + // + // If not set, the policy is applied as defined by the selector. + // At most, only one of the selector or `targetRef` can be set for a given policy. + // Waypoint proxies will not respect selectors even if they match. + TargetRef *v1beta1.PolicyTargetReference `protobuf:"bytes,5,opt,name=targetRef,proto3" json:"targetRef,omitempty"` + // Optional. Tracing configures the tracing behavior for all + // selected workloads. + Tracing []*Tracing `protobuf:"bytes,2,rep,name=tracing,proto3" json:"tracing,omitempty"` + // Optional. Metrics configures the metrics behavior for all + // selected workloads. + Metrics []*Metrics `protobuf:"bytes,3,rep,name=metrics,proto3" json:"metrics,omitempty"` + // Optional. Access logging configures the access logging behavior for all + // selected workloads. + AccessLogging []*AccessLogging `protobuf:"bytes,4,rep,name=access_logging,json=accessLogging,proto3" json:"access_logging,omitempty"` +} + +func (x *Telemetry) Reset() { + *x = Telemetry{} + if protoimpl.UnsafeEnabled { + mi := &file_telemetry_v1_telemetry_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Telemetry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Telemetry) ProtoMessage() {} + +func (x *Telemetry) ProtoReflect() protoreflect.Message { + mi := &file_telemetry_v1_telemetry_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Telemetry.ProtoReflect.Descriptor instead. +func (*Telemetry) Descriptor() ([]byte, []int) { + return file_telemetry_v1_telemetry_proto_rawDescGZIP(), []int{0} +} + +func (x *Telemetry) GetSelector() *v1beta1.WorkloadSelector { + if x != nil { + return x.Selector + } + return nil +} + +func (x *Telemetry) GetTargetRef() *v1beta1.PolicyTargetReference { + if x != nil { + return x.TargetRef + } + return nil +} + +func (x *Telemetry) GetTracing() []*Tracing { + if x != nil { + return x.Tracing + } + return nil +} + +func (x *Telemetry) GetMetrics() []*Metrics { + if x != nil { + return x.Metrics + } + return nil +} + +func (x *Telemetry) GetAccessLogging() []*AccessLogging { + if x != nil { + return x.AccessLogging + } + return nil +} + +// Tracing configures tracing behavior for workloads within a mesh. +// It can be used to enable/disable tracing, as well as to set sampling +// rates and custom tag extraction. +// +// Tracing configuration support overrides of the fields `providers`, +// `random_sampling_percentage`, `disable_span_reporting`, and `custom_tags` at +// each level in the configuration hierarchy, with missing values filled in +// from parent resources. However, when specified, `custom_tags` will +// fully replace any values provided by parent configuration. +type Tracing struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Allows tailoring of behavior to specific conditions. + Match *Tracing_TracingSelector `protobuf:"bytes,7,opt,name=match,proto3" json:"match,omitempty"` + // Optional. Name of provider(s) to use for span reporting. If a provider is + // not specified, the [default tracing + // provider](https://istio.io/docs/reference/config/istio.mesh.v1alpha1/#MeshConfig-DefaultProviders) will be + // used. NOTE: At the moment, only a single provider can be specified in a + // given Tracing rule. + Providers []*ProviderRef `protobuf:"bytes,2,rep,name=providers,proto3" json:"providers,omitempty"` + // Controls the rate at which traffic will be selected for tracing if no + // prior sampling decision has been made. If a prior sampling decision has + // been made, that decision will be respected. However, if no sampling + // decision has been made (example: no `x-b3-sampled` tracing header was + // present in the requests), the traffic will be selected for telemetry + // generation at the percentage specified. + // + // Defaults to 0%. Valid values [0.00-100.00]. Can be specified in 0.01% + // increments. + // +kubebuilder:validation:Minimum=0 + // +kubebuilder:validation:Maximum=100 + RandomSamplingPercentage *wrappers.DoubleValue `protobuf:"bytes,3,opt,name=random_sampling_percentage,json=randomSamplingPercentage,proto3" json:"random_sampling_percentage,omitempty"` + // Controls span reporting. If set to true, no spans will be reported for + // impacted workloads. This does NOT impact context propagation or trace + // sampling behavior. + DisableSpanReporting *wrappers.BoolValue `protobuf:"bytes,4,opt,name=disable_span_reporting,json=disableSpanReporting,proto3" json:"disable_span_reporting,omitempty"` + // Optional. Configures additional custom tags to the generated trace spans. + CustomTags map[string]*Tracing_CustomTag `protobuf:"bytes,5,rep,name=custom_tags,json=customTags,proto3" json:"custom_tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // This value is true by default; Envoy decides whether or not to sample based + // on the value of the Request ID generated by Ingress in distributed tracing. + // The format of this Request ID is specific to Envoy, and if the Request ID + // generated by the proxy that receives user traffic first is not specific to + // Envoy, Envoy will break the trace because it cannot interpret the Request + // ID. By setting this value to false, we can prevent Envoy from sampling + // based on the Request ID. As a result, the trace will not be broken even if + // the Request ID is not in the Envoy format. [Trace Context + // Propagation](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/observability/tracing#trace-context-propagation) + // provides more information on Request ID handling. + // $hide_from_docs + // +cue-gen:Telemetry:releaseChannel:extended + UseRequestIdForTraceSampling *wrappers.BoolValue `protobuf:"bytes,6,opt,name=use_request_id_for_trace_sampling,json=useRequestIdForTraceSampling,proto3" json:"use_request_id_for_trace_sampling,omitempty"` +} + +func (x *Tracing) Reset() { + *x = Tracing{} + if protoimpl.UnsafeEnabled { + mi := &file_telemetry_v1_telemetry_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Tracing) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Tracing) ProtoMessage() {} + +func (x *Tracing) ProtoReflect() protoreflect.Message { + mi := &file_telemetry_v1_telemetry_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Tracing.ProtoReflect.Descriptor instead. +func (*Tracing) Descriptor() ([]byte, []int) { + return file_telemetry_v1_telemetry_proto_rawDescGZIP(), []int{1} +} + +func (x *Tracing) GetMatch() *Tracing_TracingSelector { + if x != nil { + return x.Match + } + return nil +} + +func (x *Tracing) GetProviders() []*ProviderRef { + if x != nil { + return x.Providers + } + return nil +} + +func (x *Tracing) GetRandomSamplingPercentage() *wrappers.DoubleValue { + if x != nil { + return x.RandomSamplingPercentage + } + return nil +} + +func (x *Tracing) GetDisableSpanReporting() *wrappers.BoolValue { + if x != nil { + return x.DisableSpanReporting + } + return nil +} + +func (x *Tracing) GetCustomTags() map[string]*Tracing_CustomTag { + if x != nil { + return x.CustomTags + } + return nil +} + +func (x *Tracing) GetUseRequestIdForTraceSampling() *wrappers.BoolValue { + if x != nil { + return x.UseRequestIdForTraceSampling + } + return nil +} + +// Used to bind Telemetry configuration to specific providers for +// targeted customization. +type ProviderRef struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Name of Telemetry provider in [MeshConfig](https://istio.io/latest/docs/reference/config/istio.mesh.v1alpha1/#MeshConfig-ExtensionProvider). + // +kubebuilder:validation:MinLength=1 + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *ProviderRef) Reset() { + *x = ProviderRef{} + if protoimpl.UnsafeEnabled { + mi := &file_telemetry_v1_telemetry_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProviderRef) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProviderRef) ProtoMessage() {} + +func (x *ProviderRef) ProtoReflect() protoreflect.Message { + mi := &file_telemetry_v1_telemetry_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProviderRef.ProtoReflect.Descriptor instead. +func (*ProviderRef) Descriptor() ([]byte, []int) { + return file_telemetry_v1_telemetry_proto_rawDescGZIP(), []int{2} +} + +func (x *ProviderRef) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// Metrics defines the workload-level overrides for metrics generation behavior +// within a mesh. It can be used to enable/disable metrics generation, as well +// as to customize the dimensions of the generated metrics. +type Metrics struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. Name of providers to which this configuration should apply. + // If a provider is not specified, the [default metrics + // provider](https://istio.io/docs/reference/config/istio.mesh.v1alpha1/#MeshConfig-DefaultProviders) will be + // used. + Providers []*ProviderRef `protobuf:"bytes,1,rep,name=providers,proto3" json:"providers,omitempty"` + // Optional. Ordered list of overrides to metrics generation behavior. + // + // Specified overrides will be applied in order. They will be applied on + // top of inherited overrides from other resources in the hierarchy in the + // following order: + // 1. Mesh-scoped overrides + // 2. Namespace-scoped overrides + // 3. Workload-scoped overrides + // + // Because overrides are applied in order, users are advised to order their + // overrides from least specific to most specific matches. That is, it is + // a best practice to list any universal overrides first, with tailored + // overrides following them. + Overrides []*MetricsOverrides `protobuf:"bytes,2,rep,name=overrides,proto3" json:"overrides,omitempty"` + // Optional. Reporting interval allows configuration of the time between calls out to for metrics reporting. + // This currently only supports TCP metrics but we may use this for long duration HTTP streams in the future. + // The default duration is `5s`. + // +cue-gen:Telemetry:releaseChannel:extended + ReportingInterval *duration.Duration `protobuf:"bytes,3,opt,name=reporting_interval,json=reportingInterval,proto3" json:"reporting_interval,omitempty"` +} + +func (x *Metrics) Reset() { + *x = Metrics{} + if protoimpl.UnsafeEnabled { + mi := &file_telemetry_v1_telemetry_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Metrics) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Metrics) ProtoMessage() {} + +func (x *Metrics) ProtoReflect() protoreflect.Message { + mi := &file_telemetry_v1_telemetry_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Metrics.ProtoReflect.Descriptor instead. +func (*Metrics) Descriptor() ([]byte, []int) { + return file_telemetry_v1_telemetry_proto_rawDescGZIP(), []int{3} +} + +func (x *Metrics) GetProviders() []*ProviderRef { + if x != nil { + return x.Providers + } + return nil +} + +func (x *Metrics) GetOverrides() []*MetricsOverrides { + if x != nil { + return x.Overrides + } + return nil +} + +func (x *Metrics) GetReportingInterval() *duration.Duration { + if x != nil { + return x.ReportingInterval + } + return nil +} + +// Provides a mechanism for matching metrics for the application of override +// behaviors. +type MetricSelector struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Controls which metric(s) are selected by the selector. + // + // Types that are assignable to MetricMatch: + // + // *MetricSelector_Metric + // *MetricSelector_CustomMetric + MetricMatch isMetricSelector_MetricMatch `protobuf_oneof:"metric_match"` + // Controls which mode of metrics generation is selected: `CLIENT`, `SERVER`, + // or `CLIENT_AND_SERVER`. + Mode WorkloadMode `protobuf:"varint,3,opt,name=mode,proto3,enum=istio.telemetry.v1.WorkloadMode" json:"mode,omitempty"` +} + +func (x *MetricSelector) Reset() { + *x = MetricSelector{} + if protoimpl.UnsafeEnabled { + mi := &file_telemetry_v1_telemetry_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MetricSelector) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MetricSelector) ProtoMessage() {} + +func (x *MetricSelector) ProtoReflect() protoreflect.Message { + mi := &file_telemetry_v1_telemetry_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MetricSelector.ProtoReflect.Descriptor instead. +func (*MetricSelector) Descriptor() ([]byte, []int) { + return file_telemetry_v1_telemetry_proto_rawDescGZIP(), []int{4} +} + +func (m *MetricSelector) GetMetricMatch() isMetricSelector_MetricMatch { + if m != nil { + return m.MetricMatch + } + return nil +} + +func (x *MetricSelector) GetMetric() MetricSelector_IstioMetric { + if x, ok := x.GetMetricMatch().(*MetricSelector_Metric); ok { + return x.Metric + } + return MetricSelector_ALL_METRICS +} + +func (x *MetricSelector) GetCustomMetric() string { + if x, ok := x.GetMetricMatch().(*MetricSelector_CustomMetric); ok { + return x.CustomMetric + } + return "" +} + +func (x *MetricSelector) GetMode() WorkloadMode { + if x != nil { + return x.Mode + } + return WorkloadMode_CLIENT_AND_SERVER +} + +type isMetricSelector_MetricMatch interface { + isMetricSelector_MetricMatch() +} + +type MetricSelector_Metric struct { + // One of the well-known [Istio Standard Metrics](https://istio.io/latest/docs/reference/config/metrics/). + Metric MetricSelector_IstioMetric `protobuf:"varint,1,opt,name=metric,proto3,enum=istio.telemetry.v1.MetricSelector_IstioMetric,oneof"` +} + +type MetricSelector_CustomMetric struct { + // Allows free-form specification of a metric. No validation of custom + // metrics is provided. + // +kubebuilder:validation:MinLength=1 + CustomMetric string `protobuf:"bytes,2,opt,name=custom_metric,json=customMetric,proto3,oneof"` +} + +func (*MetricSelector_Metric) isMetricSelector_MetricMatch() {} + +func (*MetricSelector_CustomMetric) isMetricSelector_MetricMatch() {} + +// MetricsOverrides defines custom metric generation behavior for an individual +// metric or the set of all standard metrics. +type MetricsOverrides struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Match allows providing the scope of the override. It can be used to select + // individual metrics, as well as the workload modes (server, client, or both) + // in which the metrics will be generated. + // + // If match is not specified, the overrides will apply to *all* metrics for + // *both* modes of operation (client and server). + Match *MetricSelector `protobuf:"bytes,1,opt,name=match,proto3" json:"match,omitempty"` + // Optional. Must explicitly set this to `true` to turn off metrics reporting + // for the listed metrics. If disabled has been set to `true` in a parent + // configuration, it must explicitly be set to `false` to turn metrics + // reporting on in the workloads selected by the Telemetry resource. + Disabled *wrappers.BoolValue `protobuf:"bytes,2,opt,name=disabled,proto3" json:"disabled,omitempty"` + // Optional. Collection of tag names and tag expressions to override in the + // selected metric(s). + // The key in the map is the name of the tag. + // The value in the map is the operation to perform on the the tag. + // WARNING: some providers may not support adding/removing tags. + // See also: https://istio.io/latest/docs/reference/config/metrics/#labels + TagOverrides map[string]*MetricsOverrides_TagOverride `protobuf:"bytes,3,rep,name=tag_overrides,json=tagOverrides,proto3" json:"tag_overrides,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *MetricsOverrides) Reset() { + *x = MetricsOverrides{} + if protoimpl.UnsafeEnabled { + mi := &file_telemetry_v1_telemetry_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MetricsOverrides) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MetricsOverrides) ProtoMessage() {} + +func (x *MetricsOverrides) ProtoReflect() protoreflect.Message { + mi := &file_telemetry_v1_telemetry_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MetricsOverrides.ProtoReflect.Descriptor instead. +func (*MetricsOverrides) Descriptor() ([]byte, []int) { + return file_telemetry_v1_telemetry_proto_rawDescGZIP(), []int{5} +} + +func (x *MetricsOverrides) GetMatch() *MetricSelector { + if x != nil { + return x.Match + } + return nil +} + +func (x *MetricsOverrides) GetDisabled() *wrappers.BoolValue { + if x != nil { + return x.Disabled + } + return nil +} + +func (x *MetricsOverrides) GetTagOverrides() map[string]*MetricsOverrides_TagOverride { + if x != nil { + return x.TagOverrides + } + return nil +} + +// Access logging defines the workload-level overrides for access log +// generation. It can be used to select provider or enable/disable access log +// generation for a workload. +type AccessLogging struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Allows tailoring of logging behavior to specific conditions. + Match *AccessLogging_LogSelector `protobuf:"bytes,4,opt,name=match,proto3" json:"match,omitempty"` + // Optional. Name of providers to which this configuration should apply. + // If a provider is not specified, the [default logging + // provider](https://istio.io/docs/reference/config/istio.mesh.v1alpha1/#MeshConfig-DefaultProviders) will be used. + Providers []*ProviderRef `protobuf:"bytes,1,rep,name=providers,proto3" json:"providers,omitempty"` + // Controls logging. If set to true, no access logs will be generated for + // impacted workloads (for the specified providers). + // NOTE: currently default behavior will be controlled by the provider(s) + // selected above. Customization controls will be added to this API in + // future releases. + Disabled *wrappers.BoolValue `protobuf:"bytes,2,opt,name=disabled,proto3" json:"disabled,omitempty"` + // Optional. If specified, this filter will be used to select specific + // requests/connections for logging. + // +cue-gen:Telemetry:releaseChannel:extended + Filter *AccessLogging_Filter `protobuf:"bytes,3,opt,name=filter,proto3" json:"filter,omitempty"` +} + +func (x *AccessLogging) Reset() { + *x = AccessLogging{} + if protoimpl.UnsafeEnabled { + mi := &file_telemetry_v1_telemetry_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AccessLogging) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AccessLogging) ProtoMessage() {} + +func (x *AccessLogging) ProtoReflect() protoreflect.Message { + mi := &file_telemetry_v1_telemetry_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AccessLogging.ProtoReflect.Descriptor instead. +func (*AccessLogging) Descriptor() ([]byte, []int) { + return file_telemetry_v1_telemetry_proto_rawDescGZIP(), []int{6} +} + +func (x *AccessLogging) GetMatch() *AccessLogging_LogSelector { + if x != nil { + return x.Match + } + return nil +} + +func (x *AccessLogging) GetProviders() []*ProviderRef { + if x != nil { + return x.Providers + } + return nil +} + +func (x *AccessLogging) GetDisabled() *wrappers.BoolValue { + if x != nil { + return x.Disabled + } + return nil +} + +func (x *AccessLogging) GetFilter() *AccessLogging_Filter { + if x != nil { + return x.Filter + } + return nil +} + +// TracingSelector provides a coarse-grained ability to configure tracing +// behavior based on certain traffic metadata (such as traffic direction). +type Tracing_TracingSelector struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // This determines whether or not to apply the tracing configuration + // based on the direction of traffic relative to the proxied workload. + Mode WorkloadMode `protobuf:"varint,1,opt,name=mode,proto3,enum=istio.telemetry.v1.WorkloadMode" json:"mode,omitempty"` +} + +func (x *Tracing_TracingSelector) Reset() { + *x = Tracing_TracingSelector{} + if protoimpl.UnsafeEnabled { + mi := &file_telemetry_v1_telemetry_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Tracing_TracingSelector) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Tracing_TracingSelector) ProtoMessage() {} + +func (x *Tracing_TracingSelector) ProtoReflect() protoreflect.Message { + mi := &file_telemetry_v1_telemetry_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Tracing_TracingSelector.ProtoReflect.Descriptor instead. +func (*Tracing_TracingSelector) Descriptor() ([]byte, []int) { + return file_telemetry_v1_telemetry_proto_rawDescGZIP(), []int{1, 0} +} + +func (x *Tracing_TracingSelector) GetMode() WorkloadMode { + if x != nil { + return x.Mode + } + return WorkloadMode_CLIENT_AND_SERVER +} + +// CustomTag defines a tag to be added to a trace span that is based on +// an operator-supplied value. This value can either be a hard-coded value, +// a value taken from an environment variable known to the sidecar proxy, or +// from a request header. +// +// NOTE: when specified, `custom_tags` will fully replace any values provided +// by parent configuration. +type Tracing_CustomTag struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Type: + // + // *Tracing_CustomTag_Literal + // *Tracing_CustomTag_Environment + // *Tracing_CustomTag_Header + Type isTracing_CustomTag_Type `protobuf_oneof:"type"` +} + +func (x *Tracing_CustomTag) Reset() { + *x = Tracing_CustomTag{} + if protoimpl.UnsafeEnabled { + mi := &file_telemetry_v1_telemetry_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Tracing_CustomTag) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Tracing_CustomTag) ProtoMessage() {} + +func (x *Tracing_CustomTag) ProtoReflect() protoreflect.Message { + mi := &file_telemetry_v1_telemetry_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Tracing_CustomTag.ProtoReflect.Descriptor instead. +func (*Tracing_CustomTag) Descriptor() ([]byte, []int) { + return file_telemetry_v1_telemetry_proto_rawDescGZIP(), []int{1, 1} +} + +func (m *Tracing_CustomTag) GetType() isTracing_CustomTag_Type { + if m != nil { + return m.Type + } + return nil +} + +func (x *Tracing_CustomTag) GetLiteral() *Tracing_Literal { + if x, ok := x.GetType().(*Tracing_CustomTag_Literal); ok { + return x.Literal + } + return nil +} + +func (x *Tracing_CustomTag) GetEnvironment() *Tracing_Environment { + if x, ok := x.GetType().(*Tracing_CustomTag_Environment); ok { + return x.Environment + } + return nil +} + +func (x *Tracing_CustomTag) GetHeader() *Tracing_RequestHeader { + if x, ok := x.GetType().(*Tracing_CustomTag_Header); ok { + return x.Header + } + return nil +} + +type isTracing_CustomTag_Type interface { + isTracing_CustomTag_Type() +} + +type Tracing_CustomTag_Literal struct { + // Literal adds the same, hard-coded value to each span. + Literal *Tracing_Literal `protobuf:"bytes,1,opt,name=literal,proto3,oneof"` +} + +type Tracing_CustomTag_Environment struct { + // Environment adds the value of an environment variable to each span. + Environment *Tracing_Environment `protobuf:"bytes,2,opt,name=environment,proto3,oneof"` +} + +type Tracing_CustomTag_Header struct { + // RequestHeader adds the value of an header from the request to each + // span. + Header *Tracing_RequestHeader `protobuf:"bytes,3,opt,name=header,proto3,oneof"` // TODO: add support for Metadata tags +} + +func (*Tracing_CustomTag_Literal) isTracing_CustomTag_Type() {} + +func (*Tracing_CustomTag_Environment) isTracing_CustomTag_Type() {} + +func (*Tracing_CustomTag_Header) isTracing_CustomTag_Type() {} + +type Tracing_Literal struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The tag value to use. + // +kubebuilder:validation:MinLength=1 + Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *Tracing_Literal) Reset() { + *x = Tracing_Literal{} + if protoimpl.UnsafeEnabled { + mi := &file_telemetry_v1_telemetry_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Tracing_Literal) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Tracing_Literal) ProtoMessage() {} + +func (x *Tracing_Literal) ProtoReflect() protoreflect.Message { + mi := &file_telemetry_v1_telemetry_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Tracing_Literal.ProtoReflect.Descriptor instead. +func (*Tracing_Literal) Descriptor() ([]byte, []int) { + return file_telemetry_v1_telemetry_proto_rawDescGZIP(), []int{1, 2} +} + +func (x *Tracing_Literal) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +type Tracing_Environment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Name of the environment variable from which to extract the tag value. + // +kubebuilder:validation:MinLength=1 + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Optional. If the environment variable is not found, this value will be + // used instead. + DefaultValue string `protobuf:"bytes,2,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` +} + +func (x *Tracing_Environment) Reset() { + *x = Tracing_Environment{} + if protoimpl.UnsafeEnabled { + mi := &file_telemetry_v1_telemetry_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Tracing_Environment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Tracing_Environment) ProtoMessage() {} + +func (x *Tracing_Environment) ProtoReflect() protoreflect.Message { + mi := &file_telemetry_v1_telemetry_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Tracing_Environment.ProtoReflect.Descriptor instead. +func (*Tracing_Environment) Descriptor() ([]byte, []int) { + return file_telemetry_v1_telemetry_proto_rawDescGZIP(), []int{1, 3} +} + +func (x *Tracing_Environment) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Tracing_Environment) GetDefaultValue() string { + if x != nil { + return x.DefaultValue + } + return "" +} + +type Tracing_RequestHeader struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Name of the header from which to extract the tag value. + // +kubebuilder:validation:MinLength=1 + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Optional. If the header is not found, this value will be + // used instead. + DefaultValue string `protobuf:"bytes,2,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` +} + +func (x *Tracing_RequestHeader) Reset() { + *x = Tracing_RequestHeader{} + if protoimpl.UnsafeEnabled { + mi := &file_telemetry_v1_telemetry_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Tracing_RequestHeader) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Tracing_RequestHeader) ProtoMessage() {} + +func (x *Tracing_RequestHeader) ProtoReflect() protoreflect.Message { + mi := &file_telemetry_v1_telemetry_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Tracing_RequestHeader.ProtoReflect.Descriptor instead. +func (*Tracing_RequestHeader) Descriptor() ([]byte, []int) { + return file_telemetry_v1_telemetry_proto_rawDescGZIP(), []int{1, 4} +} + +func (x *Tracing_RequestHeader) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Tracing_RequestHeader) GetDefaultValue() string { + if x != nil { + return x.DefaultValue + } + return "" +} + +// TagOverride specifies an operation to perform on a metric dimension (also +// known as a `label`). Tags may be added, removed, or have their default +// values overridden. +// +kubebuilder:validation:XValidation:message="value must be set when operation is UPSERT",rule="((has(self.operation) ? self.operation : ”) == 'UPSERT') ? self.value != ” : true" +// +kubebuilder:validation:XValidation:message="value must not be set when operation is REMOVE",rule="((has(self.operation) ? self.operation : ”) == 'REMOVE') ? !has(self.value) : true" +type MetricsOverrides_TagOverride struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Operation controls whether or not to update/add a tag, or to remove it. + Operation MetricsOverrides_TagOverride_Operation `protobuf:"varint,1,opt,name=operation,proto3,enum=istio.telemetry.v1.MetricsOverrides_TagOverride_Operation" json:"operation,omitempty"` + // Value is only considered if the operation is `UPSERT`. + // Values are [CEL expressions](https://opensource.google/projects/cel) over + // attributes. Examples include: `string(destination.port)` and + // `request.host`. Istio exposes all standard [Envoy + // attributes](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/attributes). + // Additionally, Istio exposes node metadata as attributes. + // More information is provided in the [customization + // docs](https://istio.io/latest/docs/tasks/observability/metrics/customize-metrics/#use-expressions-for-values). + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *MetricsOverrides_TagOverride) Reset() { + *x = MetricsOverrides_TagOverride{} + if protoimpl.UnsafeEnabled { + mi := &file_telemetry_v1_telemetry_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MetricsOverrides_TagOverride) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MetricsOverrides_TagOverride) ProtoMessage() {} + +func (x *MetricsOverrides_TagOverride) ProtoReflect() protoreflect.Message { + mi := &file_telemetry_v1_telemetry_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MetricsOverrides_TagOverride.ProtoReflect.Descriptor instead. +func (*MetricsOverrides_TagOverride) Descriptor() ([]byte, []int) { + return file_telemetry_v1_telemetry_proto_rawDescGZIP(), []int{5, 0} +} + +func (x *MetricsOverrides_TagOverride) GetOperation() MetricsOverrides_TagOverride_Operation { + if x != nil { + return x.Operation + } + return MetricsOverrides_TagOverride_UPSERT +} + +func (x *MetricsOverrides_TagOverride) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +// LogSelector provides a coarse-grained ability to configure logging behavior +// based on certain traffic metadata (such as traffic direction). LogSelector +// applies to traffic metadata which is not represented in the attribute set +// currently supported by [filters](https://istio.io/latest/docs/reference/config/telemetry/#AccessLogging-Filter). +// It allows control planes to limit the configuration sent to individual workloads. +// Finer-grained logging behavior can be further configured via `filter`. +type AccessLogging_LogSelector struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // This determines whether or not to apply the access logging configuration + // based on the direction of traffic relative to the proxied workload. + Mode WorkloadMode `protobuf:"varint,1,opt,name=mode,proto3,enum=istio.telemetry.v1.WorkloadMode" json:"mode,omitempty"` +} + +func (x *AccessLogging_LogSelector) Reset() { + *x = AccessLogging_LogSelector{} + if protoimpl.UnsafeEnabled { + mi := &file_telemetry_v1_telemetry_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AccessLogging_LogSelector) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AccessLogging_LogSelector) ProtoMessage() {} + +func (x *AccessLogging_LogSelector) ProtoReflect() protoreflect.Message { + mi := &file_telemetry_v1_telemetry_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AccessLogging_LogSelector.ProtoReflect.Descriptor instead. +func (*AccessLogging_LogSelector) Descriptor() ([]byte, []int) { + return file_telemetry_v1_telemetry_proto_rawDescGZIP(), []int{6, 0} +} + +func (x *AccessLogging_LogSelector) GetMode() WorkloadMode { + if x != nil { + return x.Mode + } + return WorkloadMode_CLIENT_AND_SERVER +} + +// Allows specification of an access log filter. +type AccessLogging_Filter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // CEL expression for selecting when requests/connections should be logged. + // + // Examples: + // + // - `response.code >= 400` + // - `connection.mtls && request.url_path.contains('v1beta3')` + // - `!has(request.useragent) || !(request.useragent.startsWith("Amazon-Route53-Health-Check-Service"))` + Expression string `protobuf:"bytes,1,opt,name=expression,proto3" json:"expression,omitempty"` +} + +func (x *AccessLogging_Filter) Reset() { + *x = AccessLogging_Filter{} + if protoimpl.UnsafeEnabled { + mi := &file_telemetry_v1_telemetry_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AccessLogging_Filter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AccessLogging_Filter) ProtoMessage() {} + +func (x *AccessLogging_Filter) ProtoReflect() protoreflect.Message { + mi := &file_telemetry_v1_telemetry_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AccessLogging_Filter.ProtoReflect.Descriptor instead. +func (*AccessLogging_Filter) Descriptor() ([]byte, []int) { + return file_telemetry_v1_telemetry_proto_rawDescGZIP(), []int{6, 1} +} + +func (x *AccessLogging_Filter) GetExpression() string { + if x != nil { + return x.Expression + } + return "" +} + +var File_telemetry_v1_telemetry_proto protoreflect.FileDescriptor + +var file_telemetry_v1_telemetry_proto_rawDesc = []byte{ + 0x0a, 0x1c, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x74, + 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, + 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, + 0x76, 0x31, 0x1a, 0x1b, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x22, 0xce, 0x02, 0x0a, 0x09, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x12, 0x40, + 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x24, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x12, 0x47, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x66, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x79, 0x70, 0x65, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x66, 0x12, 0x35, 0x0a, 0x07, 0x74, 0x72, 0x61, + 0x63, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, 0x73, 0x74, + 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, + 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, + 0x12, 0x35, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, + 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x07, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x48, 0x0a, 0x0e, 0x61, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x5f, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, + 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x67, 0x69, + 0x6e, 0x67, 0x52, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, + 0x67, 0x22, 0xc6, 0x08, 0x0a, 0x07, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x12, 0x41, 0x0a, + 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x69, + 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, + 0x31, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, + 0x67, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x12, 0x3d, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65, + 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x52, 0x65, 0x66, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, + 0x5a, 0x0a, 0x1a, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, + 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x18, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, + 0x67, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x50, 0x0a, 0x16, 0x64, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, + 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x53, 0x70, 0x61, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x4c, 0x0a, + 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, + 0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x2e, + 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x61, 0x67, 0x73, 0x12, 0x63, 0x0a, 0x21, 0x75, + 0x73, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x66, 0x6f, + 0x72, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x1c, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, + 0x46, 0x6f, 0x72, 0x54, 0x72, 0x61, 0x63, 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, + 0x1a, 0x47, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x12, 0x34, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x20, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, + 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, + 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x1a, 0xe6, 0x01, 0x0a, 0x09, 0x43, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x61, 0x67, 0x12, 0x3f, 0x0a, 0x07, 0x6c, 0x69, 0x74, 0x65, 0x72, + 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, + 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, + 0x61, 0x63, 0x69, 0x6e, 0x67, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x48, 0x00, 0x52, + 0x07, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x4b, 0x0a, 0x0b, 0x65, 0x6e, 0x76, 0x69, + 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, + 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, + 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, + 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65, + 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x69, + 0x6e, 0x67, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x1a, 0x24, 0x0a, 0x07, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x19, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x4b, 0x0a, 0x0b, 0x45, 0x6e, 0x76, 0x69, + 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x4d, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x64, 0x0a, 0x0f, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x61, + 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, + 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, + 0x61, 0x63, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x61, 0x67, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x26, 0x0a, 0x0b, 0x50, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x66, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x22, 0xd6, 0x01, 0x0a, 0x07, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x3d, + 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, + 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, + 0x65, 0x66, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0x42, 0x0a, + 0x09, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x24, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, + 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x4f, 0x76, 0x65, + 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x52, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, + 0x73, 0x12, 0x48, 0x0a, 0x12, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0xd1, 0x03, 0x0a, 0x0e, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x48, + 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, + 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x2e, 0x49, 0x73, 0x74, 0x69, 0x6f, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x48, 0x00, + 0x52, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x25, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, + 0x34, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, + 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, + 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x52, + 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x87, 0x02, 0x0a, 0x0b, 0x49, 0x73, 0x74, 0x69, 0x6f, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x4c, 0x4c, 0x5f, 0x4d, 0x45, 0x54, + 0x52, 0x49, 0x43, 0x53, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, + 0x54, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x45, 0x51, + 0x55, 0x45, 0x53, 0x54, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x12, + 0x10, 0x0a, 0x0c, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, + 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45, 0x5f, 0x53, 0x49, + 0x5a, 0x45, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x43, 0x50, 0x5f, 0x4f, 0x50, 0x45, 0x4e, + 0x45, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x05, + 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x43, 0x50, 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x5f, 0x43, + 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, + 0x54, 0x43, 0x50, 0x5f, 0x53, 0x45, 0x4e, 0x54, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x07, + 0x12, 0x16, 0x0a, 0x12, 0x54, 0x43, 0x50, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x44, + 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x08, 0x12, 0x19, 0x0a, 0x15, 0x47, 0x52, 0x50, 0x43, + 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, + 0x53, 0x10, 0x09, 0x12, 0x1a, 0x0a, 0x16, 0x47, 0x52, 0x50, 0x43, 0x5f, 0x52, 0x45, 0x53, 0x50, + 0x4f, 0x4e, 0x53, 0x45, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x53, 0x10, 0x0a, 0x42, + 0x0e, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x22, + 0xf9, 0x03, 0x0a, 0x10, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x4f, 0x76, 0x65, 0x72, 0x72, + 0x69, 0x64, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65, + 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x36, + 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x64, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x5b, 0x0a, 0x0d, 0x74, 0x61, 0x67, 0x5f, 0x6f, 0x76, + 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, + 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, + 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, + 0x64, 0x65, 0x73, 0x2e, 0x54, 0x61, 0x67, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x74, 0x61, 0x67, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, + 0x64, 0x65, 0x73, 0x1a, 0xa2, 0x01, 0x0a, 0x0b, 0x54, 0x61, 0x67, 0x4f, 0x76, 0x65, 0x72, 0x72, + 0x69, 0x64, 0x65, 0x12, 0x58, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, + 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x73, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2e, 0x54, 0x61, 0x67, + 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0x23, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x50, 0x53, 0x45, 0x52, 0x54, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, + 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x01, 0x1a, 0x71, 0x0a, 0x11, 0x54, 0x61, 0x67, 0x4f, + 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x46, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, + 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x4f, 0x76, 0x65, 0x72, 0x72, + 0x69, 0x64, 0x65, 0x73, 0x2e, 0x54, 0x61, 0x67, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xfc, 0x02, 0x0a, 0x0d, + 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x43, 0x0a, + 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x69, + 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, + 0x31, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, + 0x4c, 0x6f, 0x67, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x05, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x12, 0x3d, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65, + 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x52, 0x65, 0x66, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x73, 0x12, 0x36, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x40, 0x0a, 0x06, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x69, 0x73, 0x74, 0x69, + 0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x46, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x43, 0x0a, 0x0b, 0x4c, + 0x6f, 0x67, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x34, 0x0a, 0x04, 0x6d, 0x6f, + 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, + 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, + 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, + 0x1a, 0x28, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2a, 0x3d, 0x0a, 0x0c, 0x57, 0x6f, + 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x4c, + 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, + 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x0a, 0x0a, + 0x06, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x02, 0x42, 0x1b, 0x5a, 0x19, 0x69, 0x73, 0x74, + 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, + 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_telemetry_v1_telemetry_proto_rawDescOnce sync.Once + file_telemetry_v1_telemetry_proto_rawDescData = file_telemetry_v1_telemetry_proto_rawDesc +) + +func file_telemetry_v1_telemetry_proto_rawDescGZIP() []byte { + file_telemetry_v1_telemetry_proto_rawDescOnce.Do(func() { + file_telemetry_v1_telemetry_proto_rawDescData = protoimpl.X.CompressGZIP(file_telemetry_v1_telemetry_proto_rawDescData) + }) + return file_telemetry_v1_telemetry_proto_rawDescData +} + +var file_telemetry_v1_telemetry_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_telemetry_v1_telemetry_proto_msgTypes = make([]protoimpl.MessageInfo, 17) +var file_telemetry_v1_telemetry_proto_goTypes = []interface{}{ + (WorkloadMode)(0), // 0: istio.telemetry.v1.WorkloadMode + (MetricSelector_IstioMetric)(0), // 1: istio.telemetry.v1.MetricSelector.IstioMetric + (MetricsOverrides_TagOverride_Operation)(0), // 2: istio.telemetry.v1.MetricsOverrides.TagOverride.Operation + (*Telemetry)(nil), // 3: istio.telemetry.v1.Telemetry + (*Tracing)(nil), // 4: istio.telemetry.v1.Tracing + (*ProviderRef)(nil), // 5: istio.telemetry.v1.ProviderRef + (*Metrics)(nil), // 6: istio.telemetry.v1.Metrics + (*MetricSelector)(nil), // 7: istio.telemetry.v1.MetricSelector + (*MetricsOverrides)(nil), // 8: istio.telemetry.v1.MetricsOverrides + (*AccessLogging)(nil), // 9: istio.telemetry.v1.AccessLogging + (*Tracing_TracingSelector)(nil), // 10: istio.telemetry.v1.Tracing.TracingSelector + (*Tracing_CustomTag)(nil), // 11: istio.telemetry.v1.Tracing.CustomTag + (*Tracing_Literal)(nil), // 12: istio.telemetry.v1.Tracing.Literal + (*Tracing_Environment)(nil), // 13: istio.telemetry.v1.Tracing.Environment + (*Tracing_RequestHeader)(nil), // 14: istio.telemetry.v1.Tracing.RequestHeader + nil, // 15: istio.telemetry.v1.Tracing.CustomTagsEntry + (*MetricsOverrides_TagOverride)(nil), // 16: istio.telemetry.v1.MetricsOverrides.TagOverride + nil, // 17: istio.telemetry.v1.MetricsOverrides.TagOverridesEntry + (*AccessLogging_LogSelector)(nil), // 18: istio.telemetry.v1.AccessLogging.LogSelector + (*AccessLogging_Filter)(nil), // 19: istio.telemetry.v1.AccessLogging.Filter + (*v1beta1.WorkloadSelector)(nil), // 20: istio.type.v1beta1.WorkloadSelector + (*v1beta1.PolicyTargetReference)(nil), // 21: istio.type.v1beta1.PolicyTargetReference + (*wrappers.DoubleValue)(nil), // 22: google.protobuf.DoubleValue + (*wrappers.BoolValue)(nil), // 23: google.protobuf.BoolValue + (*duration.Duration)(nil), // 24: google.protobuf.Duration +} +var file_telemetry_v1_telemetry_proto_depIdxs = []int32{ + 20, // 0: istio.telemetry.v1.Telemetry.selector:type_name -> istio.type.v1beta1.WorkloadSelector + 21, // 1: istio.telemetry.v1.Telemetry.targetRef:type_name -> istio.type.v1beta1.PolicyTargetReference + 4, // 2: istio.telemetry.v1.Telemetry.tracing:type_name -> istio.telemetry.v1.Tracing + 6, // 3: istio.telemetry.v1.Telemetry.metrics:type_name -> istio.telemetry.v1.Metrics + 9, // 4: istio.telemetry.v1.Telemetry.access_logging:type_name -> istio.telemetry.v1.AccessLogging + 10, // 5: istio.telemetry.v1.Tracing.match:type_name -> istio.telemetry.v1.Tracing.TracingSelector + 5, // 6: istio.telemetry.v1.Tracing.providers:type_name -> istio.telemetry.v1.ProviderRef + 22, // 7: istio.telemetry.v1.Tracing.random_sampling_percentage:type_name -> google.protobuf.DoubleValue + 23, // 8: istio.telemetry.v1.Tracing.disable_span_reporting:type_name -> google.protobuf.BoolValue + 15, // 9: istio.telemetry.v1.Tracing.custom_tags:type_name -> istio.telemetry.v1.Tracing.CustomTagsEntry + 23, // 10: istio.telemetry.v1.Tracing.use_request_id_for_trace_sampling:type_name -> google.protobuf.BoolValue + 5, // 11: istio.telemetry.v1.Metrics.providers:type_name -> istio.telemetry.v1.ProviderRef + 8, // 12: istio.telemetry.v1.Metrics.overrides:type_name -> istio.telemetry.v1.MetricsOverrides + 24, // 13: istio.telemetry.v1.Metrics.reporting_interval:type_name -> google.protobuf.Duration + 1, // 14: istio.telemetry.v1.MetricSelector.metric:type_name -> istio.telemetry.v1.MetricSelector.IstioMetric + 0, // 15: istio.telemetry.v1.MetricSelector.mode:type_name -> istio.telemetry.v1.WorkloadMode + 7, // 16: istio.telemetry.v1.MetricsOverrides.match:type_name -> istio.telemetry.v1.MetricSelector + 23, // 17: istio.telemetry.v1.MetricsOverrides.disabled:type_name -> google.protobuf.BoolValue + 17, // 18: istio.telemetry.v1.MetricsOverrides.tag_overrides:type_name -> istio.telemetry.v1.MetricsOverrides.TagOverridesEntry + 18, // 19: istio.telemetry.v1.AccessLogging.match:type_name -> istio.telemetry.v1.AccessLogging.LogSelector + 5, // 20: istio.telemetry.v1.AccessLogging.providers:type_name -> istio.telemetry.v1.ProviderRef + 23, // 21: istio.telemetry.v1.AccessLogging.disabled:type_name -> google.protobuf.BoolValue + 19, // 22: istio.telemetry.v1.AccessLogging.filter:type_name -> istio.telemetry.v1.AccessLogging.Filter + 0, // 23: istio.telemetry.v1.Tracing.TracingSelector.mode:type_name -> istio.telemetry.v1.WorkloadMode + 12, // 24: istio.telemetry.v1.Tracing.CustomTag.literal:type_name -> istio.telemetry.v1.Tracing.Literal + 13, // 25: istio.telemetry.v1.Tracing.CustomTag.environment:type_name -> istio.telemetry.v1.Tracing.Environment + 14, // 26: istio.telemetry.v1.Tracing.CustomTag.header:type_name -> istio.telemetry.v1.Tracing.RequestHeader + 11, // 27: istio.telemetry.v1.Tracing.CustomTagsEntry.value:type_name -> istio.telemetry.v1.Tracing.CustomTag + 2, // 28: istio.telemetry.v1.MetricsOverrides.TagOverride.operation:type_name -> istio.telemetry.v1.MetricsOverrides.TagOverride.Operation + 16, // 29: istio.telemetry.v1.MetricsOverrides.TagOverridesEntry.value:type_name -> istio.telemetry.v1.MetricsOverrides.TagOverride + 0, // 30: istio.telemetry.v1.AccessLogging.LogSelector.mode:type_name -> istio.telemetry.v1.WorkloadMode + 31, // [31:31] is the sub-list for method output_type + 31, // [31:31] is the sub-list for method input_type + 31, // [31:31] is the sub-list for extension type_name + 31, // [31:31] is the sub-list for extension extendee + 0, // [0:31] is the sub-list for field type_name +} + +func init() { file_telemetry_v1_telemetry_proto_init() } +func file_telemetry_v1_telemetry_proto_init() { + if File_telemetry_v1_telemetry_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_telemetry_v1_telemetry_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Telemetry); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_telemetry_v1_telemetry_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Tracing); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_telemetry_v1_telemetry_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProviderRef); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_telemetry_v1_telemetry_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Metrics); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_telemetry_v1_telemetry_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MetricSelector); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_telemetry_v1_telemetry_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MetricsOverrides); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_telemetry_v1_telemetry_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AccessLogging); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_telemetry_v1_telemetry_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Tracing_TracingSelector); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_telemetry_v1_telemetry_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Tracing_CustomTag); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_telemetry_v1_telemetry_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Tracing_Literal); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_telemetry_v1_telemetry_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Tracing_Environment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_telemetry_v1_telemetry_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Tracing_RequestHeader); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_telemetry_v1_telemetry_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MetricsOverrides_TagOverride); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_telemetry_v1_telemetry_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AccessLogging_LogSelector); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_telemetry_v1_telemetry_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AccessLogging_Filter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_telemetry_v1_telemetry_proto_msgTypes[4].OneofWrappers = []interface{}{ + (*MetricSelector_Metric)(nil), + (*MetricSelector_CustomMetric)(nil), + } + file_telemetry_v1_telemetry_proto_msgTypes[8].OneofWrappers = []interface{}{ + (*Tracing_CustomTag_Literal)(nil), + (*Tracing_CustomTag_Environment)(nil), + (*Tracing_CustomTag_Header)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_telemetry_v1_telemetry_proto_rawDesc, + NumEnums: 3, + NumMessages: 17, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_telemetry_v1_telemetry_proto_goTypes, + DependencyIndexes: file_telemetry_v1_telemetry_proto_depIdxs, + EnumInfos: file_telemetry_v1_telemetry_proto_enumTypes, + MessageInfos: file_telemetry_v1_telemetry_proto_msgTypes, + }.Build() + File_telemetry_v1_telemetry_proto = out.File + file_telemetry_v1_telemetry_proto_rawDesc = nil + file_telemetry_v1_telemetry_proto_goTypes = nil + file_telemetry_v1_telemetry_proto_depIdxs = nil +} diff --git a/telemetry/v1/telemetry.proto b/telemetry/v1/telemetry.proto new file mode 100644 index 00000000000..481df16ccf2 --- /dev/null +++ b/telemetry/v1/telemetry.proto @@ -0,0 +1,701 @@ +// Copyright Istio Authors +// +// 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"; + +import "type/v1beta1/selector.proto"; +import "google/api/field_behavior.proto"; +import "google/protobuf/duration.proto"; +import "google/protobuf/wrappers.proto"; + +// $schema: istio.telemetry.v1.Telemetry +// $title: Telemetry +// $description: Telemetry configuration for workloads. +// $location: https://istio.io/docs/reference/config/telemetry.html +// $aliases: [/docs/reference/config/telemetry/v1/telemetry] +// $mode: none + +// Telemetry defines how the telemetry is generated for workloads within a mesh. +// +// For mesh level configuration, put the resource in root configuration +// namespace for your Istio installation *without* a workload selector. +// +// For any namespace, including the root configuration namespace, it is only +// valid to have a single workload selector-less Telemetry resource. +// +// For resources with a workload selector, it is only valid to have one resource +// selecting any given workload. +// +// The hierarchy of Telemetry configuration is as follows: +// +// 1. Workload-specific configuration +// 2. Namespace-specific configuration +// 3. Root namespace configuration +// +// ## Examples +// +// Policy to enable random sampling for 10% of traffic: +// ```yaml +// apiVersion: telemetry.istio.io/v1 +// kind: Telemetry +// metadata: +// name: mesh-default +// namespace: istio-system +// spec: +// # no selector specified, applies to all workloads +// tracing: +// - randomSamplingPercentage: 10.00 +// ``` +// +// Policy to disable trace reporting for the `foo` workload (note: tracing +// context will still be propagated): +// ```yaml +// apiVersion: telemetry.istio.io/v1 +// kind: Telemetry +// metadata: +// name: foo-tracing +// namespace: bar +// spec: +// selector: +// matchLabels: +// service.istio.io/canonical-name: foo +// tracing: +// - disableSpanReporting: true +// ``` +// +// Policy to select the alternate zipkin provider for trace reporting: +// ```yaml +// apiVersion: telemetry.istio.io/v1 +// kind: Telemetry +// metadata: +// name: foo-tracing-alternate +// namespace: baz +// spec: +// selector: +// matchLabels: +// service.istio.io/canonical-name: foo +// tracing: +// - providers: +// - name: "zipkin-alternate" +// randomSamplingPercentage: 10.00 +// ``` +// +// Policy to tailor the zipkin provider to sample traces from Client workloads only: +// ```yaml +// apiVersion: telemetry.istio.io/v1alpha1 +// kind: Telemetry +// metadata: +// name: mesh-default +// namespace: istio-system +// spec: +// # no selector specified, applies to all workloads +// tracing: +// - match: CLIENT +// - providers: +// - name: "zipkin" +// ``` +// +// Policy to add a custom tag from a literal value: +// ```yaml +// apiVersion: telemetry.istio.io/v1 +// kind: Telemetry +// metadata: +// name: mesh-default +// namespace: istio-system +// spec: +// # no selector specified, applies to all workloads +// tracing: +// - randomSamplingPercentage: 10.00 +// customTags: +// my_new_foo_tag: +// literal: +// value: "foo" +// ``` +// +// Policy to disable server-side metrics for Prometheus for an entire mesh: +// ```yaml +// apiVersion: telemetry.istio.io/v1 +// kind: Telemetry +// metadata: +// name: mesh-default +// namespace: istio-system +// spec: +// # no selector specified, applies to all workloads +// metrics: +// - providers: +// - name: prometheus +// overrides: +// - match: +// metric: ALL_METRICS +// mode: SERVER +// disabled: true +// ``` +// +// Policy to add dimensions to all Prometheus metrics for the `foo` namespace: +// ```yaml +// apiVersion: telemetry.istio.io/v1 +// kind: Telemetry +// metadata: +// name: namespace-metrics +// namespace: foo +// spec: +// # no selector specified, applies to all workloads in the namespace +// metrics: +// - providers: +// - name: prometheus +// overrides: +// # match clause left off matches all istio metrics, client and server +// - tagOverrides: +// request_method: +// value: "request.method" +// request_host: +// value: "request.host" +// ``` +// +// Policy to remove the `response_code` dimension on some Prometheus metrics for +// the `bar.foo` workload: +// ```yaml +// apiVersion: telemetry.istio.io/v1 +// kind: Telemetry +// metadata: +// name: remove-response-code +// namespace: foo +// spec: +// selector: +// matchLabels: +// service.istio.io/canonical-name: bar +// metrics: +// - providers: +// - name: prometheus +// overrides: +// - match: +// metric: REQUEST_COUNT +// tagOverrides: +// response_code: +// operation: REMOVE +// - match: +// metric: REQUEST_DURATION +// tagOverrides: +// response_code: +// operation: REMOVE +// - match: +// metric: REQUEST_SIZE +// tagOverrides: +// response_code: +// operation: REMOVE +// - match: +// metric: RESPONSE_SIZE +// tagOverrides: +// response_code: +// operation: REMOVE +// ``` +// +// Policy to enable access logging for the entire mesh: +// ```yaml +// apiVersion: telemetry.istio.io/v1 +// kind: Telemetry +// metadata: +// name: mesh-default +// namespace: istio-system +// spec: +// # no selector specified, applies to all workloads +// accessLogging: +// - providers: +// - name: envoy +// # By default, this turns on access logging (no need to set `disabled: false`). +// # Unspecified `disabled` will be treated as `disabled: false`, except in +// # cases where a parent configuration has marked as `disabled: true`. In +// # those cases, `disabled: false` must be set explicitly to override. +// ``` +// +// Policy to disable access logging for the `foo` namespace: +// ```yaml +// apiVersion: telemetry.istio.io/v1 +// kind: Telemetry +// metadata: +// name: namespace-no-log +// namespace: foo +// spec: +// # no selector specified, applies to all workloads in the namespace +// accessLogging: +// - disabled: true +// ``` +// +package istio.telemetry.v1; + +option go_package = "istio.io/api/telemetry/v1"; + +// +// +// +// --> +// +message Telemetry { + // Optional. The selector decides where to apply the Telemetry policy. + // If not set, the Telemetry policy will be applied to all workloads in the + // same namespace as the Telemetry policy. + // + // At most, only one of the selector or targetRef can be set for a given policy. + istio.type.v1beta1.WorkloadSelector selector = 1; + + // Optional. The `targetRef` specifies the gateway the policy should be + // applied to. The targeted resource specified will determine which + // workloads the telemetry policy applies to. The targeted resource + // must be a Kubernetes gateway. The resource must be in the same namespace as + // the Telemetry policy. + // + // If not set, the policy is applied as defined by the selector. + // At most, only one of the selector or `targetRef` can be set for a given policy. + // Waypoint proxies will not respect selectors even if they match. + istio.type.v1beta1.PolicyTargetReference targetRef = 5; + + // Optional. Tracing configures the tracing behavior for all + // selected workloads. + repeated Tracing tracing = 2; + + // Optional. Metrics configures the metrics behavior for all + // selected workloads. + repeated Metrics metrics = 3; + + // Optional. Access logging configures the access logging behavior for all + // selected workloads. + repeated AccessLogging access_logging = 4; +} + +// Tracing configures tracing behavior for workloads within a mesh. +// It can be used to enable/disable tracing, as well as to set sampling +// rates and custom tag extraction. +// +// Tracing configuration support overrides of the fields `providers`, +// `random_sampling_percentage`, `disable_span_reporting`, and `custom_tags` at +// each level in the configuration hierarchy, with missing values filled in +// from parent resources. However, when specified, `custom_tags` will +// fully replace any values provided by parent configuration. +message Tracing { + + // TracingSelector provides a coarse-grained ability to configure tracing + // behavior based on certain traffic metadata (such as traffic direction). + message TracingSelector { + // This determines whether or not to apply the tracing configuration + // based on the direction of traffic relative to the proxied workload. + WorkloadMode mode = 1; + } + + // Allows tailoring of behavior to specific conditions. + TracingSelector match = 7; + + // Optional. Name of provider(s) to use for span reporting. If a provider is + // not specified, the [default tracing + // provider](https://istio.io/docs/reference/config/istio.mesh.v1alpha1/#MeshConfig-DefaultProviders) will be + // used. NOTE: At the moment, only a single provider can be specified in a + // given Tracing rule. + repeated ProviderRef providers = 2; + + // Controls the rate at which traffic will be selected for tracing if no + // prior sampling decision has been made. If a prior sampling decision has + // been made, that decision will be respected. However, if no sampling + // decision has been made (example: no `x-b3-sampled` tracing header was + // present in the requests), the traffic will be selected for telemetry + // generation at the percentage specified. + // + // Defaults to 0%. Valid values [0.00-100.00]. Can be specified in 0.01% + // increments. + // +kubebuilder:validation:Minimum=0 + // +kubebuilder:validation:Maximum=100 + google.protobuf.DoubleValue random_sampling_percentage = 3; + + // Controls span reporting. If set to true, no spans will be reported for + // impacted workloads. This does NOT impact context propagation or trace + // sampling behavior. + google.protobuf.BoolValue disable_span_reporting = 4; + + // CustomTag defines a tag to be added to a trace span that is based on + // an operator-supplied value. This value can either be a hard-coded value, + // a value taken from an environment variable known to the sidecar proxy, or + // from a request header. + // + // NOTE: when specified, `custom_tags` will fully replace any values provided + // by parent configuration. + message CustomTag { + oneof type { + // Literal adds the same, hard-coded value to each span. + Literal literal = 1; + // Environment adds the value of an environment variable to each span. + Environment environment = 2; + // RequestHeader adds the value of an header from the request to each + // span. + RequestHeader header = 3; + // TODO: add support for Metadata tags + } + } + + message Literal { + // The tag value to use. + // +kubebuilder:validation:MinLength=1 + string value = 1 [(google.api.field_behavior) = REQUIRED]; + } + + message Environment { + // Name of the environment variable from which to extract the tag value. + // +kubebuilder:validation:MinLength=1 + string name = 1 [(google.api.field_behavior) = REQUIRED]; + // Optional. If the environment variable is not found, this value will be + // used instead. + string default_value = 2; + } + + message RequestHeader { + // Name of the header from which to extract the tag value. + // +kubebuilder:validation:MinLength=1 + string name = 1 [(google.api.field_behavior) = REQUIRED]; + // Optional. If the header is not found, this value will be + // used instead. + string default_value = 2; + } + + // Optional. Configures additional custom tags to the generated trace spans. + map custom_tags = 5; + + // This value is true by default; Envoy decides whether or not to sample based + // on the value of the Request ID generated by Ingress in distributed tracing. + // The format of this Request ID is specific to Envoy, and if the Request ID + // generated by the proxy that receives user traffic first is not specific to + // Envoy, Envoy will break the trace because it cannot interpret the Request + // ID. By setting this value to false, we can prevent Envoy from sampling + // based on the Request ID. As a result, the trace will not be broken even if + // the Request ID is not in the Envoy format. [Trace Context + // Propagation](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/observability/tracing#trace-context-propagation) + // provides more information on Request ID handling. + // $hide_from_docs + // +cue-gen:Telemetry:releaseChannel:extended + google.protobuf.BoolValue use_request_id_for_trace_sampling = 6; +} + +// Used to bind Telemetry configuration to specific providers for +// targeted customization. +message ProviderRef { + // Required. Name of Telemetry provider in [MeshConfig](https://istio.io/latest/docs/reference/config/istio.mesh.v1alpha1/#MeshConfig-ExtensionProvider). + // +kubebuilder:validation:MinLength=1 + string name = 1 [(google.api.field_behavior) = REQUIRED]; +} + +// Metrics defines the workload-level overrides for metrics generation behavior +// within a mesh. It can be used to enable/disable metrics generation, as well +// as to customize the dimensions of the generated metrics. +message Metrics { + // Optional. Name of providers to which this configuration should apply. + // If a provider is not specified, the [default metrics + // provider](https://istio.io/docs/reference/config/istio.mesh.v1alpha1/#MeshConfig-DefaultProviders) will be + // used. + repeated ProviderRef providers = 1; + + // Optional. Ordered list of overrides to metrics generation behavior. + // + // Specified overrides will be applied in order. They will be applied on + // top of inherited overrides from other resources in the hierarchy in the + // following order: + // 1. Mesh-scoped overrides + // 2. Namespace-scoped overrides + // 3. Workload-scoped overrides + // + // Because overrides are applied in order, users are advised to order their + // overrides from least specific to most specific matches. That is, it is + // a best practice to list any universal overrides first, with tailored + // overrides following them. + repeated MetricsOverrides overrides = 2; + + // Optional. Reporting interval allows configuration of the time between calls out to for metrics reporting. + // This currently only supports TCP metrics but we may use this for long duration HTTP streams in the future. + // The default duration is `5s`. + // +cue-gen:Telemetry:releaseChannel:extended + google.protobuf.Duration reporting_interval = 3; +} + +// WorkloadMode allows selection of the role of the underlying workload in +// network traffic. A workload is considered as acting as a `SERVER` if it is +// the destination of the traffic (that is, traffic direction, from the +// perspective of the workload is *inbound*). If the workload is the source of +// the network traffic, it is considered to be in `CLIENT` mode (traffic is +// *outbound* from the workload). +enum WorkloadMode { + // Selects for scenarios when the workload is either the + // source or destination of the network traffic. + CLIENT_AND_SERVER = 0; + + // Selects for scenarios when the workload is the + // source of the network traffic. + CLIENT = 1; + + // Selects for scenarios when the workload is the + // destination of the network traffic. + SERVER = 2; +} + +// Provides a mechanism for matching metrics for the application of override +// behaviors. +message MetricSelector { + // Curated list of known metric types that is supported by Istio metric + // providers. See also: + // https://istio.io/latest/docs/reference/config/metrics/#metrics + enum IstioMetric { + // Use of this enum indicates that the override should apply to all Istio + // default metrics. + ALL_METRICS = 0; + + // Counter of requests to/from an application, generated for HTTP, HTTP/2, + // and GRPC traffic. + // + // The Prometheus provider exports this metric as: `istio_requests_total`. + // + // The Stackdriver provider exports this metric as: + // + // - `istio.io/service/server/request_count` (SERVER mode) + // - `istio.io/service/client/request_count` (CLIENT mode) + REQUEST_COUNT = 1; + + // Histogram of request durations, generated for HTTP, HTTP/2, and GRPC + // traffic. + // + // The Prometheus provider exports this metric as: + // `istio_request_duration_milliseconds`. + // + // The Stackdriver provider exports this metric as: + // + // - `istio.io/service/server/response_latencies` (SERVER mode) + // - `istio.io/service/client/roundtrip_latencies` (CLIENT mode) + REQUEST_DURATION = 2; + + // Histogram of request body sizes, generated for HTTP, HTTP/2, and GRPC + // traffic. + // + // The Prometheus provider exports this metric as: `istio_request_bytes`. + // + // The Stackdriver provider exports this metric as: + // + // - `istio.io/service/server/request_bytes` (SERVER mode) + // - `istio.io/service/client/request_bytes` (CLIENT mode) + REQUEST_SIZE = 3; + + // Histogram of response body sizes, generated for HTTP, HTTP/2, and GRPC + // traffic. + // + // The Prometheus provider exports this metric as: `istio_response_bytes`. + // + // The Stackdriver provider exports this metric as: + // + // - `istio.io/service/server/response_bytes` (SERVER mode) + // - `istio.io/service/client/response_bytes` (CLIENT mode) + RESPONSE_SIZE = 4; + + // Counter of TCP connections opened over lifetime of workload. + // + // The Prometheus provider exports this metric as: + // `istio_tcp_connections_opened_total`. + // + // The Stackdriver provider exports this metric as: + // + // - `istio.io/service/server/connection_open_count` (SERVER mode) + // - `istio.io/service/client/connection_open_count` (CLIENT mode) + TCP_OPENED_CONNECTIONS = 5; + + // Counter of TCP connections closed over lifetime of workload. + // + // The Prometheus provider exports this metric as: + // `istio_tcp_connections_closed_total`. + // + // The Stackdriver provider exports this metric as: + // + // - `istio.io/service/server/connection_close_count` (SERVER mode) + // - `istio.io/service/client/connection_close_count` (CLIENT mode) + TCP_CLOSED_CONNECTIONS = 6; + + // Counter of bytes sent during a response over a TCP connection. + // + // The Prometheus provider exports this metric as: + // `istio_tcp_sent_bytes_total`. + // + // The Stackdriver provider exports this metric as: + // + // - `istio.io/service/server/sent_bytes_count` (SERVER mode) + // - `istio.io/service/client/sent_bytes_count` (CLIENT mode) + TCP_SENT_BYTES = 7; + + // Counter of bytes received during a request over a TCP connection. + // + // The Prometheus provider exports this metric as: + // `istio_tcp_received_bytes_total`. + // + // The Stackdriver provider exports this metric as: + // + // - `istio.io/service/server/received_bytes_count` (SERVER mode) + // - `istio.io/service/client/received_bytes_count` (CLIENT mode) + TCP_RECEIVED_BYTES = 8; + + // Counter incremented for every gRPC messages sent from a client. + // + // The Prometheus provider exports this metric as: + // `istio_request_messages_total` + GRPC_REQUEST_MESSAGES = 9; + + // Counter incremented for every gRPC messages sent from a server. + // + // The Prometheus provider exports this metric as: + // `istio_response_messages_total` + GRPC_RESPONSE_MESSAGES = 10; + } + + // Controls which metric(s) are selected by the selector. + oneof metric_match { + // One of the well-known [Istio Standard Metrics](https://istio.io/latest/docs/reference/config/metrics/). + IstioMetric metric = 1; + + // Allows free-form specification of a metric. No validation of custom + // metrics is provided. + // +kubebuilder:validation:MinLength=1 + string custom_metric = 2; + } + + // Controls which mode of metrics generation is selected: `CLIENT`, `SERVER`, + // or `CLIENT_AND_SERVER`. + WorkloadMode mode = 3; +} + +// MetricsOverrides defines custom metric generation behavior for an individual +// metric or the set of all standard metrics. +message MetricsOverrides { + + // Match allows providing the scope of the override. It can be used to select + // individual metrics, as well as the workload modes (server, client, or both) + // in which the metrics will be generated. + // + // If match is not specified, the overrides will apply to *all* metrics for + // *both* modes of operation (client and server). + MetricSelector match = 1; + + // Optional. Must explicitly set this to `true` to turn off metrics reporting + // for the listed metrics. If disabled has been set to `true` in a parent + // configuration, it must explicitly be set to `false` to turn metrics + // reporting on in the workloads selected by the Telemetry resource. + google.protobuf.BoolValue disabled = 2; + + // TagOverride specifies an operation to perform on a metric dimension (also + // known as a `label`). Tags may be added, removed, or have their default + // values overridden. + // +kubebuilder:validation:XValidation:message="value must be set when operation is UPSERT",rule="((has(self.operation) ? self.operation : '') == 'UPSERT') ? self.value != '' : true" + // +kubebuilder:validation:XValidation:message="value must not be set when operation is REMOVE",rule="((has(self.operation) ? self.operation : '') == 'REMOVE') ? !has(self.value) : true" + message TagOverride { + enum Operation { + // Insert or Update the tag with the provided value expression. The + // `value` field MUST be specified if `UPSERT` is used as the operation. + UPSERT = 0; + + // Specifies that the tag should not be included in the metric when + // generated. + REMOVE = 1; + } + + // Operation controls whether or not to update/add a tag, or to remove it. + Operation operation = 1; + + // Value is only considered if the operation is `UPSERT`. + // Values are [CEL expressions](https://opensource.google/projects/cel) over + // attributes. Examples include: `string(destination.port)` and + // `request.host`. Istio exposes all standard [Envoy + // attributes](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/attributes). + // Additionally, Istio exposes node metadata as attributes. + // More information is provided in the [customization + // docs](https://istio.io/latest/docs/tasks/observability/metrics/customize-metrics/#use-expressions-for-values). + string value = 2; + } + + // Optional. Collection of tag names and tag expressions to override in the + // selected metric(s). + // The key in the map is the name of the tag. + // The value in the map is the operation to perform on the the tag. + // WARNING: some providers may not support adding/removing tags. + // See also: https://istio.io/latest/docs/reference/config/metrics/#labels + map tag_overrides = 3; +} + +// Access logging defines the workload-level overrides for access log +// generation. It can be used to select provider or enable/disable access log +// generation for a workload. +message AccessLogging { + + // LogSelector provides a coarse-grained ability to configure logging behavior + // based on certain traffic metadata (such as traffic direction). LogSelector + // applies to traffic metadata which is not represented in the attribute set + // currently supported by [filters](https://istio.io/latest/docs/reference/config/telemetry/#AccessLogging-Filter). + // It allows control planes to limit the configuration sent to individual workloads. + // Finer-grained logging behavior can be further configured via `filter`. + message LogSelector { + // This determines whether or not to apply the access logging configuration + // based on the direction of traffic relative to the proxied workload. + WorkloadMode mode = 1; + } + + // Allows tailoring of logging behavior to specific conditions. + LogSelector match = 4; + + // Optional. Name of providers to which this configuration should apply. + // If a provider is not specified, the [default logging + // provider](https://istio.io/docs/reference/config/istio.mesh.v1alpha1/#MeshConfig-DefaultProviders) will be used. + repeated ProviderRef providers = 1; + + // Controls logging. If set to true, no access logs will be generated for + // impacted workloads (for the specified providers). + // NOTE: currently default behavior will be controlled by the provider(s) + // selected above. Customization controls will be added to this API in + // future releases. + google.protobuf.BoolValue disabled = 2; + + // Allows specification of an access log filter. + message Filter { + // CEL expression for selecting when requests/connections should be logged. + // + // Examples: + // + // - `response.code >= 400` + // - `connection.mtls && request.url_path.contains('v1beta3')` + // - `!has(request.useragent) || !(request.useragent.startsWith("Amazon-Route53-Health-Check-Service"))` + string expression = 1; + } + + // Optional. If specified, this filter will be used to select specific + // requests/connections for logging. + // +cue-gen:Telemetry:releaseChannel:extended + Filter filter = 3; +} diff --git a/telemetry/v1/telemetry_deepcopy.gen.go b/telemetry/v1/telemetry_deepcopy.gen.go new file mode 100644 index 00000000000..5aaaa54d188 --- /dev/null +++ b/telemetry/v1/telemetry_deepcopy.gen.go @@ -0,0 +1,321 @@ +// Code generated by protoc-gen-deepcopy. DO NOT EDIT. +package v1 + +import ( + proto "google.golang.org/protobuf/proto" +) + +// DeepCopyInto supports using Telemetry within kubernetes types, where deepcopy-gen is used. +func (in *Telemetry) DeepCopyInto(out *Telemetry) { + p := proto.Clone(in).(*Telemetry) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Telemetry. Required by controller-gen. +func (in *Telemetry) DeepCopy() *Telemetry { + if in == nil { + return nil + } + out := new(Telemetry) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new Telemetry. Required by controller-gen. +func (in *Telemetry) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using Tracing within kubernetes types, where deepcopy-gen is used. +func (in *Tracing) DeepCopyInto(out *Tracing) { + p := proto.Clone(in).(*Tracing) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Tracing. Required by controller-gen. +func (in *Tracing) DeepCopy() *Tracing { + if in == nil { + return nil + } + out := new(Tracing) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new Tracing. Required by controller-gen. +func (in *Tracing) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using Tracing_TracingSelector within kubernetes types, where deepcopy-gen is used. +func (in *Tracing_TracingSelector) DeepCopyInto(out *Tracing_TracingSelector) { + p := proto.Clone(in).(*Tracing_TracingSelector) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Tracing_TracingSelector. Required by controller-gen. +func (in *Tracing_TracingSelector) DeepCopy() *Tracing_TracingSelector { + if in == nil { + return nil + } + out := new(Tracing_TracingSelector) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new Tracing_TracingSelector. Required by controller-gen. +func (in *Tracing_TracingSelector) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using Tracing_CustomTag within kubernetes types, where deepcopy-gen is used. +func (in *Tracing_CustomTag) DeepCopyInto(out *Tracing_CustomTag) { + p := proto.Clone(in).(*Tracing_CustomTag) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Tracing_CustomTag. Required by controller-gen. +func (in *Tracing_CustomTag) DeepCopy() *Tracing_CustomTag { + if in == nil { + return nil + } + out := new(Tracing_CustomTag) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new Tracing_CustomTag. Required by controller-gen. +func (in *Tracing_CustomTag) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using Tracing_Literal within kubernetes types, where deepcopy-gen is used. +func (in *Tracing_Literal) DeepCopyInto(out *Tracing_Literal) { + p := proto.Clone(in).(*Tracing_Literal) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Tracing_Literal. Required by controller-gen. +func (in *Tracing_Literal) DeepCopy() *Tracing_Literal { + if in == nil { + return nil + } + out := new(Tracing_Literal) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new Tracing_Literal. Required by controller-gen. +func (in *Tracing_Literal) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using Tracing_Environment within kubernetes types, where deepcopy-gen is used. +func (in *Tracing_Environment) DeepCopyInto(out *Tracing_Environment) { + p := proto.Clone(in).(*Tracing_Environment) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Tracing_Environment. Required by controller-gen. +func (in *Tracing_Environment) DeepCopy() *Tracing_Environment { + if in == nil { + return nil + } + out := new(Tracing_Environment) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new Tracing_Environment. Required by controller-gen. +func (in *Tracing_Environment) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using Tracing_RequestHeader within kubernetes types, where deepcopy-gen is used. +func (in *Tracing_RequestHeader) DeepCopyInto(out *Tracing_RequestHeader) { + p := proto.Clone(in).(*Tracing_RequestHeader) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Tracing_RequestHeader. Required by controller-gen. +func (in *Tracing_RequestHeader) DeepCopy() *Tracing_RequestHeader { + if in == nil { + return nil + } + out := new(Tracing_RequestHeader) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new Tracing_RequestHeader. Required by controller-gen. +func (in *Tracing_RequestHeader) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using ProviderRef within kubernetes types, where deepcopy-gen is used. +func (in *ProviderRef) DeepCopyInto(out *ProviderRef) { + p := proto.Clone(in).(*ProviderRef) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProviderRef. Required by controller-gen. +func (in *ProviderRef) DeepCopy() *ProviderRef { + if in == nil { + return nil + } + out := new(ProviderRef) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new ProviderRef. Required by controller-gen. +func (in *ProviderRef) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using Metrics within kubernetes types, where deepcopy-gen is used. +func (in *Metrics) DeepCopyInto(out *Metrics) { + p := proto.Clone(in).(*Metrics) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metrics. Required by controller-gen. +func (in *Metrics) DeepCopy() *Metrics { + if in == nil { + return nil + } + out := new(Metrics) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new Metrics. Required by controller-gen. +func (in *Metrics) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using MetricSelector within kubernetes types, where deepcopy-gen is used. +func (in *MetricSelector) DeepCopyInto(out *MetricSelector) { + p := proto.Clone(in).(*MetricSelector) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricSelector. Required by controller-gen. +func (in *MetricSelector) DeepCopy() *MetricSelector { + if in == nil { + return nil + } + out := new(MetricSelector) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new MetricSelector. Required by controller-gen. +func (in *MetricSelector) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using MetricsOverrides within kubernetes types, where deepcopy-gen is used. +func (in *MetricsOverrides) DeepCopyInto(out *MetricsOverrides) { + p := proto.Clone(in).(*MetricsOverrides) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricsOverrides. Required by controller-gen. +func (in *MetricsOverrides) DeepCopy() *MetricsOverrides { + if in == nil { + return nil + } + out := new(MetricsOverrides) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new MetricsOverrides. Required by controller-gen. +func (in *MetricsOverrides) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using MetricsOverrides_TagOverride within kubernetes types, where deepcopy-gen is used. +func (in *MetricsOverrides_TagOverride) DeepCopyInto(out *MetricsOverrides_TagOverride) { + p := proto.Clone(in).(*MetricsOverrides_TagOverride) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricsOverrides_TagOverride. Required by controller-gen. +func (in *MetricsOverrides_TagOverride) DeepCopy() *MetricsOverrides_TagOverride { + if in == nil { + return nil + } + out := new(MetricsOverrides_TagOverride) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new MetricsOverrides_TagOverride. Required by controller-gen. +func (in *MetricsOverrides_TagOverride) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using AccessLogging within kubernetes types, where deepcopy-gen is used. +func (in *AccessLogging) DeepCopyInto(out *AccessLogging) { + p := proto.Clone(in).(*AccessLogging) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AccessLogging. Required by controller-gen. +func (in *AccessLogging) DeepCopy() *AccessLogging { + if in == nil { + return nil + } + out := new(AccessLogging) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new AccessLogging. Required by controller-gen. +func (in *AccessLogging) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using AccessLogging_LogSelector within kubernetes types, where deepcopy-gen is used. +func (in *AccessLogging_LogSelector) DeepCopyInto(out *AccessLogging_LogSelector) { + p := proto.Clone(in).(*AccessLogging_LogSelector) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AccessLogging_LogSelector. Required by controller-gen. +func (in *AccessLogging_LogSelector) DeepCopy() *AccessLogging_LogSelector { + if in == nil { + return nil + } + out := new(AccessLogging_LogSelector) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new AccessLogging_LogSelector. Required by controller-gen. +func (in *AccessLogging_LogSelector) DeepCopyInterface() interface{} { + return in.DeepCopy() +} + +// DeepCopyInto supports using AccessLogging_Filter within kubernetes types, where deepcopy-gen is used. +func (in *AccessLogging_Filter) DeepCopyInto(out *AccessLogging_Filter) { + p := proto.Clone(in).(*AccessLogging_Filter) + *out = *p +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AccessLogging_Filter. Required by controller-gen. +func (in *AccessLogging_Filter) DeepCopy() *AccessLogging_Filter { + if in == nil { + return nil + } + out := new(AccessLogging_Filter) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new AccessLogging_Filter. Required by controller-gen. +func (in *AccessLogging_Filter) DeepCopyInterface() interface{} { + return in.DeepCopy() +} diff --git a/telemetry/v1/telemetry_json.gen.go b/telemetry/v1/telemetry_json.gen.go new file mode 100644 index 00000000000..27b923c0047 --- /dev/null +++ b/telemetry/v1/telemetry_json.gen.go @@ -0,0 +1,177 @@ +// Code generated by protoc-gen-jsonshim. DO NOT EDIT. +package v1 + +import ( + bytes "bytes" + jsonpb "github.com/golang/protobuf/jsonpb" +) + +// MarshalJSON is a custom marshaler for Telemetry +func (this *Telemetry) MarshalJSON() ([]byte, error) { + str, err := TelemetryMarshaler.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for Telemetry +func (this *Telemetry) UnmarshalJSON(b []byte) error { + return TelemetryUnmarshaler.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for Tracing +func (this *Tracing) MarshalJSON() ([]byte, error) { + str, err := TelemetryMarshaler.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for Tracing +func (this *Tracing) UnmarshalJSON(b []byte) error { + return TelemetryUnmarshaler.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for Tracing_TracingSelector +func (this *Tracing_TracingSelector) MarshalJSON() ([]byte, error) { + str, err := TelemetryMarshaler.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for Tracing_TracingSelector +func (this *Tracing_TracingSelector) UnmarshalJSON(b []byte) error { + return TelemetryUnmarshaler.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for Tracing_CustomTag +func (this *Tracing_CustomTag) MarshalJSON() ([]byte, error) { + str, err := TelemetryMarshaler.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for Tracing_CustomTag +func (this *Tracing_CustomTag) UnmarshalJSON(b []byte) error { + return TelemetryUnmarshaler.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for Tracing_Literal +func (this *Tracing_Literal) MarshalJSON() ([]byte, error) { + str, err := TelemetryMarshaler.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for Tracing_Literal +func (this *Tracing_Literal) UnmarshalJSON(b []byte) error { + return TelemetryUnmarshaler.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for Tracing_Environment +func (this *Tracing_Environment) MarshalJSON() ([]byte, error) { + str, err := TelemetryMarshaler.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for Tracing_Environment +func (this *Tracing_Environment) UnmarshalJSON(b []byte) error { + return TelemetryUnmarshaler.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for Tracing_RequestHeader +func (this *Tracing_RequestHeader) MarshalJSON() ([]byte, error) { + str, err := TelemetryMarshaler.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for Tracing_RequestHeader +func (this *Tracing_RequestHeader) UnmarshalJSON(b []byte) error { + return TelemetryUnmarshaler.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for ProviderRef +func (this *ProviderRef) MarshalJSON() ([]byte, error) { + str, err := TelemetryMarshaler.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for ProviderRef +func (this *ProviderRef) UnmarshalJSON(b []byte) error { + return TelemetryUnmarshaler.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for Metrics +func (this *Metrics) MarshalJSON() ([]byte, error) { + str, err := TelemetryMarshaler.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for Metrics +func (this *Metrics) UnmarshalJSON(b []byte) error { + return TelemetryUnmarshaler.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for MetricSelector +func (this *MetricSelector) MarshalJSON() ([]byte, error) { + str, err := TelemetryMarshaler.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for MetricSelector +func (this *MetricSelector) UnmarshalJSON(b []byte) error { + return TelemetryUnmarshaler.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for MetricsOverrides +func (this *MetricsOverrides) MarshalJSON() ([]byte, error) { + str, err := TelemetryMarshaler.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for MetricsOverrides +func (this *MetricsOverrides) UnmarshalJSON(b []byte) error { + return TelemetryUnmarshaler.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for MetricsOverrides_TagOverride +func (this *MetricsOverrides_TagOverride) MarshalJSON() ([]byte, error) { + str, err := TelemetryMarshaler.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for MetricsOverrides_TagOverride +func (this *MetricsOverrides_TagOverride) UnmarshalJSON(b []byte) error { + return TelemetryUnmarshaler.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for AccessLogging +func (this *AccessLogging) MarshalJSON() ([]byte, error) { + str, err := TelemetryMarshaler.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for AccessLogging +func (this *AccessLogging) UnmarshalJSON(b []byte) error { + return TelemetryUnmarshaler.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for AccessLogging_LogSelector +func (this *AccessLogging_LogSelector) MarshalJSON() ([]byte, error) { + str, err := TelemetryMarshaler.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for AccessLogging_LogSelector +func (this *AccessLogging_LogSelector) UnmarshalJSON(b []byte) error { + return TelemetryUnmarshaler.Unmarshal(bytes.NewReader(b), this) +} + +// MarshalJSON is a custom marshaler for AccessLogging_Filter +func (this *AccessLogging_Filter) MarshalJSON() ([]byte, error) { + str, err := TelemetryMarshaler.MarshalToString(this) + return []byte(str), err +} + +// UnmarshalJSON is a custom unmarshaler for AccessLogging_Filter +func (this *AccessLogging_Filter) UnmarshalJSON(b []byte) error { + return TelemetryUnmarshaler.Unmarshal(bytes.NewReader(b), this) +} + +var ( + TelemetryMarshaler = &jsonpb.Marshaler{} + TelemetryUnmarshaler = &jsonpb.Unmarshaler{AllowUnknownFields: true} +) diff --git a/telemetry/v1alpha1/telemetry.pb.go b/telemetry/v1alpha1/telemetry.pb.go index 8fff4c61185..d33e491dff5 100644 --- a/telemetry/v1alpha1/telemetry.pb.go +++ b/telemetry/v1alpha1/telemetry.pb.go @@ -42,7 +42,6 @@ // 3. Root namespace configuration // // ## Examples -// // Policy to enable random sampling for 10% of traffic: // ```yaml // apiVersion: telemetry.istio.io/v1alpha1 @@ -89,6 +88,21 @@ // randomSamplingPercentage: 10.00 // ``` // +// Policy to tailor the zipkin provider to sample traces from Client workloads only: +// ```yaml +// apiVersion: telemetry.istio.io/v1alpha1 +// kind: Telemetry +// metadata: +// name: mesh-default +// namespace: istio-system +// spec: +// # no selector specified, applies to all workloads +// tracing: +// - match: CLIENT +// - providers: +// - name: "zipkin" +// ``` +// // Policy to add a custom tag from a literal value: // ```yaml // apiVersion: telemetry.istio.io/v1alpha1 @@ -106,7 +120,7 @@ // value: "foo" // ``` // -// Policy to disable server-side metrics for Stackdriver for an entire mesh: +// Policy to disable server-side metrics for Prometheus for an entire mesh: // ```yaml // apiVersion: telemetry.istio.io/v1alpha1 // kind: Telemetry @@ -117,7 +131,7 @@ // # no selector specified, applies to all workloads // metrics: // - providers: -// - name: stackdriver +// - name: prometheus // overrides: // - match: // metric: ALL_METRICS @@ -530,6 +544,9 @@ func (MetricsOverrides_TagOverride_Operation) EnumDescriptor() ([]byte, []int) { // +genclient // +k8s:deepcopy-gen=true // --> +// type Telemetry struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -680,6 +697,7 @@ type Tracing struct { // Propagation](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/observability/tracing#trace-context-propagation) // provides more information on Request ID handling. // $hide_from_docs + // +cue-gen:Telemetry:releaseChannel:extended UseRequestIdForTraceSampling *wrappers.BoolValue `protobuf:"bytes,6,opt,name=use_request_id_for_trace_sampling,json=useRequestIdForTraceSampling,proto3" json:"use_request_id_for_trace_sampling,omitempty"` } @@ -838,6 +856,7 @@ type Metrics struct { // Optional. Reporting interval allows configuration of the time between calls out to for metrics reporting. // This currently only supports TCP metrics but we may use this for long duration HTTP streams in the future. // The default duration is `5s`. + // +cue-gen:Telemetry:releaseChannel:extended ReportingInterval *duration.Duration `protobuf:"bytes,3,opt,name=reporting_interval,json=reportingInterval,proto3" json:"reporting_interval,omitempty"` } @@ -1096,6 +1115,7 @@ type AccessLogging struct { Disabled *wrappers.BoolValue `protobuf:"bytes,2,opt,name=disabled,proto3" json:"disabled,omitempty"` // Optional. If specified, this filter will be used to select specific // requests/connections for logging. + // +cue-gen:Telemetry:releaseChannel:extended Filter *AccessLogging_Filter `protobuf:"bytes,3,opt,name=filter,proto3" json:"filter,omitempty"` } diff --git a/telemetry/v1alpha1/telemetry.pb.html b/telemetry/v1alpha1/telemetry.pb.html index 47d0c4ade41..8bceea918d0 100644 --- a/telemetry/v1alpha1/telemetry.pb.html +++ b/telemetry/v1alpha1/telemetry.pb.html @@ -62,6 +62,19 @@

Examples

- name: "zipkin-alternate" randomSamplingPercentage: 10.00 +

Policy to tailor the zipkin provider to sample traces from Client workloads only:

+
apiVersion: telemetry.istio.io/v1alpha1
+kind: Telemetry
+metadata:
+  name: mesh-default
+  namespace: istio-system
+spec:
+  # no selector specified, applies to all workloads
+  tracing:
+  - match: CLIENT
+  - providers:
+    - name: "zipkin"
+

Policy to add a custom tag from a literal value:

apiVersion: telemetry.istio.io/v1alpha1
 kind: Telemetry
@@ -77,7 +90,7 @@ 

Examples

literal: value: "foo"
-

Policy to disable server-side metrics for Stackdriver for an entire mesh:

+

Policy to disable server-side metrics for Prometheus for an entire mesh:

apiVersion: telemetry.istio.io/v1alpha1
 kind: Telemetry
 metadata:
@@ -87,7 +100,7 @@ 

Examples

# no selector specified, applies to all workloads metrics: - providers: - - name: stackdriver + - name: prometheus overrides: - match: metric: ALL_METRICS diff --git a/telemetry/v1alpha1/telemetry.proto b/telemetry/v1alpha1/telemetry.proto index 767af82e8f7..1a4d3ff099f 100644 --- a/telemetry/v1alpha1/telemetry.proto +++ b/telemetry/v1alpha1/telemetry.proto @@ -43,7 +43,6 @@ import "google/protobuf/wrappers.proto"; // 3. Root namespace configuration // // ## Examples -// // Policy to enable random sampling for 10% of traffic: // ```yaml // apiVersion: telemetry.istio.io/v1alpha1 @@ -90,6 +89,21 @@ import "google/protobuf/wrappers.proto"; // randomSamplingPercentage: 10.00 // ``` // +// Policy to tailor the zipkin provider to sample traces from Client workloads only: +// ```yaml +// apiVersion: telemetry.istio.io/v1alpha1 +// kind: Telemetry +// metadata: +// name: mesh-default +// namespace: istio-system +// spec: +// # no selector specified, applies to all workloads +// tracing: +// - match: CLIENT +// - providers: +// - name: "zipkin" +// ``` +// // Policy to add a custom tag from a literal value: // ```yaml // apiVersion: telemetry.istio.io/v1alpha1 @@ -107,7 +121,7 @@ import "google/protobuf/wrappers.proto"; // value: "foo" // ``` // -// Policy to disable server-side metrics for Stackdriver for an entire mesh: +// Policy to disable server-side metrics for Prometheus for an entire mesh: // ```yaml // apiVersion: telemetry.istio.io/v1alpha1 // kind: Telemetry @@ -118,7 +132,7 @@ import "google/protobuf/wrappers.proto"; // # no selector specified, applies to all workloads // metrics: // - providers: -// - name: stackdriver +// - name: prometheus // overrides: // - match: // metric: ALL_METRICS @@ -244,6 +258,9 @@ option go_package = "istio.io/api/telemetry/v1alpha1"; // +genclient // +k8s:deepcopy-gen=true // --> +// message Telemetry { // Optional. The selector decides where to apply the Telemetry policy. // If not set, the Telemetry policy will be applied to all workloads in the @@ -381,6 +398,7 @@ message Tracing { // Propagation](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/observability/tracing#trace-context-propagation) // provides more information on Request ID handling. // $hide_from_docs + // +cue-gen:Telemetry:releaseChannel:extended google.protobuf.BoolValue use_request_id_for_trace_sampling = 6; } @@ -420,6 +438,7 @@ message Metrics { // Optional. Reporting interval allows configuration of the time between calls out to for metrics reporting. // This currently only supports TCP metrics but we may use this for long duration HTTP streams in the future. // The default duration is `5s`. + // +cue-gen:Telemetry:releaseChannel:extended google.protobuf.Duration reporting_interval = 3; } @@ -675,5 +694,6 @@ message AccessLogging { // Optional. If specified, this filter will be used to select specific // requests/connections for logging. + // +cue-gen:Telemetry:releaseChannel:extended Filter filter = 3; }