Add transport socket wrapper to collect OS-level TCP stats and export as envoy metrics (#17682)
This adds a new transport socket wrapper for collecting OS-level TCP stats and publishing them as envoy metrics, in either the cluster or listener stats namespace (depending on upstream or downstream use). This allows attributing the TCP stats to specific listeners and clusters. Signed-off-by: Greg Greenway <ggreenway@apple.com> Mirrored from https://github.com/envoyproxy/envoy @ b959a46661ec87bba8268a1750506695125f2b06pull/626/head
parent
90935ac957
commit
74530dc3ee
4 changed files with 48 additions and 0 deletions
@ -0,0 +1,12 @@ |
||||
# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py. |
||||
|
||||
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package") |
||||
|
||||
licenses(["notice"]) # Apache 2 |
||||
|
||||
api_proto_package( |
||||
deps = [ |
||||
"//envoy/config/core/v3:pkg", |
||||
"@com_github_cncf_udpa//udpa/annotations:pkg", |
||||
], |
||||
) |
@ -0,0 +1,34 @@ |
||||
syntax = "proto3"; |
||||
|
||||
package envoy.extensions.transport_sockets.tcp_stats.v3; |
||||
|
||||
import "envoy/config/core/v3/base.proto"; |
||||
|
||||
import "google/protobuf/duration.proto"; |
||||
|
||||
import "udpa/annotations/status.proto"; |
||||
import "validate/validate.proto"; |
||||
|
||||
option java_package = "io.envoyproxy.envoy.extensions.transport_sockets.tcp_stats.v3"; |
||||
option java_outer_classname = "TcpStatsProto"; |
||||
option java_multiple_files = true; |
||||
option (udpa.annotations.file_status).package_version_status = ACTIVE; |
||||
|
||||
// [#protodoc-title: TCP Stats Transport Socket wrapper] |
||||
// [#extension: envoy.transport_sockets.tcp_stats] |
||||
|
||||
// Configuration for the TCP Stats transport socket wrapper, which wraps another transport socket for |
||||
// all communication, but emits stats about the underlying TCP connection. |
||||
// |
||||
// The stats are documented :ref:`here <config_listener_stats_tcp>` for listeners and |
||||
// :ref:`here <config_cluster_manager_cluster_stats_tcp>` for clusters. |
||||
// |
||||
// This transport socket is currently only supported on Linux. |
||||
message Config { |
||||
// The underlying transport socket being wrapped. |
||||
config.core.v3.TransportSocket transport_socket = 1 [(validate.rules).message = {required: true}]; |
||||
|
||||
// Period to update stats while the connection is open. If unset, updates only happen when the |
||||
// connection is closed. Stats are always updated one final time when the connection is closed. |
||||
google.protobuf.Duration update_period = 2 [(validate.rules).duration = {gte {nanos: 1000000}}]; |
||||
} |
Loading…
Reference in new issue