From f0e23598ca5e2be52e320dd097264a23a5b686cc Mon Sep 17 00:00:00 2001 From: Rama Date: Tue, 31 Oct 2017 10:08:53 +0530 Subject: [PATCH 01/19] initial metrics_service proto Signed-off-by: Rama --- api/metrics.proto | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 api/metrics.proto diff --git a/api/metrics.proto b/api/metrics.proto new file mode 100644 index 000000000..b8d3e434e --- /dev/null +++ b/api/metrics.proto @@ -0,0 +1,24 @@ +syntax = "proto3"; + +package envoy.api.v2; + +import "google/api/annotations.proto"; +import "io/prometheus/client/metrics.proto"; + +//Service to fetch metrics from Proxy. This uses Promotheus data model to represent metrics returned. +service MetricsService { + rpc FetchProxyMetrics (MetricsRequest) returns (MetricsResponse) { + option (google.api.http) = { + post: "/v2/metrics" + body: "*" + }; + } +} + +message MetricsRequest { + +} + +message MetricsResponse { + repeated MetricFamily proxy_metrics = 1; +} \ No newline at end of file From ac39c33c69a98484ed2f8f7a5f99c37d4acd7943 Mon Sep 17 00:00:00 2001 From: Rama Date: Tue, 31 Oct 2017 11:01:24 +0530 Subject: [PATCH 02/19] added tests Signed-off-by: Rama --- api/BUILD | 1 + api/metrics.proto | 2 +- test/build/BUILD | 1 + test/build/build_test.cc | 1 + 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/api/BUILD b/api/BUILD index c59fa0da1..c4c005e43 100644 --- a/api/BUILD +++ b/api/BUILD @@ -16,6 +16,7 @@ proto_library( "hds.proto", "health_check.proto", "lds.proto", + "metrics.proto", "protocol.proto", "rds.proto", "rls.proto", diff --git a/api/metrics.proto b/api/metrics.proto index b8d3e434e..aed7e7d81 100644 --- a/api/metrics.proto +++ b/api/metrics.proto @@ -7,7 +7,7 @@ import "io/prometheus/client/metrics.proto"; //Service to fetch metrics from Proxy. This uses Promotheus data model to represent metrics returned. service MetricsService { - rpc FetchProxyMetrics (MetricsRequest) returns (MetricsResponse) { + rpc FetchMetrics (MetricsRequest) returns (MetricsResponse) { option (google.api.http) = { post: "/v2/metrics" body: "*" diff --git a/test/build/BUILD b/test/build/BUILD index b320c3953..eb6f13efd 100644 --- a/test/build/BUILD +++ b/test/build/BUILD @@ -12,6 +12,7 @@ api_cc_test( "//api:eds", "//api:hds", "//api:lds", + "//api:metrics", "//api:rds", "//api:rls", ], diff --git a/test/build/build_test.cc b/test/build/build_test.cc index dccfdd63d..d949199b9 100644 --- a/test/build/build_test.cc +++ b/test/build/build_test.cc @@ -16,6 +16,7 @@ int main(int argc, char *argv[]) { "envoy.api.v2.HealthDiscoveryService.StreamHealthCheck", "envoy.api.v2.ListenerDiscoveryService.FetchListeners", "envoy.api.v2.ListenerDiscoveryService.StreamListeners", + "envoy.api.v2.MetricsSerice.FetchMetrics", "envoy.api.v2.RouteDiscoveryService.FetchRoutes", "envoy.api.v2.RouteDiscoveryService.StreamRoutes", "envoy.api.v2.RateLimitService.ShouldRateLimit", From 2380719fb02bfa3e41c62cdf95f5add282ac676f Mon Sep 17 00:00:00 2001 From: Rama Date: Tue, 31 Oct 2017 17:47:01 +0530 Subject: [PATCH 03/19] added support for bazel build of promotheus proto Signed-off-by: Rama --- api/BUILD | 13 ++++++++- api/{metrics.proto => metrics_service.proto} | 2 +- bazel/repositories.bzl | 28 ++++++++++++++++++++ test/build/build_test.cc | 2 +- 4 files changed, 42 insertions(+), 3 deletions(-) rename api/{metrics.proto => metrics_service.proto} (91%) diff --git a/api/BUILD b/api/BUILD index c4c005e43..c2ecb484e 100644 --- a/api/BUILD +++ b/api/BUILD @@ -16,7 +16,7 @@ proto_library( "hds.proto", "health_check.proto", "lds.proto", - "metrics.proto", + "metrics_service.proto", "protocol.proto", "rds.proto", "rls.proto", @@ -31,6 +31,7 @@ proto_library( "@com_google_protobuf//:timestamp_proto", "@com_google_protobuf//:wrappers_proto", "@googleapis//:http_api_protos_lib", + "@promotheus_metrics_model//:client_model_protos_lib", ], ) @@ -133,6 +134,16 @@ api_proto_library( ], ) +api_proto_library( + name = "metrics", + srcs = ["metrics_service.proto"], + has_services = 1, + deps = [ + ":base", + "@promotheus_metrics_model//:client_model_protos_lib", + ], +) + api_proto_library( name = "protocol", srcs = ["protocol.proto"], diff --git a/api/metrics.proto b/api/metrics_service.proto similarity index 91% rename from api/metrics.proto rename to api/metrics_service.proto index aed7e7d81..54db88c4c 100644 --- a/api/metrics.proto +++ b/api/metrics_service.proto @@ -3,7 +3,7 @@ syntax = "proto3"; package envoy.api.v2; import "google/api/annotations.proto"; -import "io/prometheus/client/metrics.proto"; +import "metrics.proto"; //Service to fetch metrics from Proxy. This uses Promotheus data model to represent metrics returned. service MetricsService { diff --git a/bazel/repositories.bzl b/bazel/repositories.bzl index 8d9790799..f6316c750 100644 --- a/bazel/repositories.bzl +++ b/bazel/repositories.bzl @@ -44,3 +44,31 @@ py_proto_library( ) """, ) + + native.new_http_archive( + name = "promotheus_metrics_model", + strip_prefix = "client_model-" + PROMETHEUS_SHA, + url = "https://github.com/prometheus/client_model/archive/" + PROMETHEUS_SHA + ".tar.gz", + build_file_content = """ + +filegroup( + name = "client_model_protos_src", + srcs = [ + "metrics.proto", + ], + visibility = ["//visibility:public"], + ) + +proto_library( + name = "client_model_protos_lib", + srcs = [":client_model_protos_src"], + visibility = ["//visibility:public"], +) + +cc_proto_library( + name = "client_model_protos", + deps = [":client_model_protos_lib"], + visibility = ["//visibility:public"], +) + """, + ) \ No newline at end of file diff --git a/test/build/build_test.cc b/test/build/build_test.cc index d949199b9..452132f10 100644 --- a/test/build/build_test.cc +++ b/test/build/build_test.cc @@ -16,7 +16,7 @@ int main(int argc, char *argv[]) { "envoy.api.v2.HealthDiscoveryService.StreamHealthCheck", "envoy.api.v2.ListenerDiscoveryService.FetchListeners", "envoy.api.v2.ListenerDiscoveryService.StreamListeners", - "envoy.api.v2.MetricsSerice.FetchMetrics", + "envoy.api.v2.MetricsService.FetchMetrics", "envoy.api.v2.RouteDiscoveryService.FetchRoutes", "envoy.api.v2.RouteDiscoveryService.StreamRoutes", "envoy.api.v2.RateLimitService.ShouldRateLimit", From 0edcce8d525b56a07d7517bb053040754caab52a Mon Sep 17 00:00:00 2001 From: Rama Date: Tue, 31 Oct 2017 17:52:04 +0530 Subject: [PATCH 04/19] added support for bazel build of promotheus proto Signed-off-by: Rama --- bazel/repositories.bzl | 1 + 1 file changed, 1 insertion(+) diff --git a/bazel/repositories.bzl b/bazel/repositories.bzl index f6316c750..b02242fb1 100644 --- a/bazel/repositories.bzl +++ b/bazel/repositories.bzl @@ -1,4 +1,5 @@ GOOGLEAPIS_SHA = "5c6df0cd18c6a429eab739fb711c27f6e1393366" # May 14, 2017 +PROMETHEUS_SHA = "6f3806018612930941127f2a7c6c453ba2c527d2" def api_dependencies(): native.new_http_archive( From 3875eab8c1e456d02a5d84700aa348090de5d79c Mon Sep 17 00:00:00 2001 From: Rama Date: Tue, 31 Oct 2017 18:15:27 +0530 Subject: [PATCH 05/19] added support for bazel build of promotheus proto Signed-off-by: Rama --- bazel/repositories.bzl | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/bazel/repositories.bzl b/bazel/repositories.bzl index b02242fb1..2ca27f7bb 100644 --- a/bazel/repositories.bzl +++ b/bazel/repositories.bzl @@ -71,5 +71,19 @@ cc_proto_library( deps = [":client_model_protos_lib"], visibility = ["//visibility:public"], ) + +py_proto_library( + name = "client_model_protos_lib_py", + srcs = [ + "metrics.proto", + ], + include = ".", + default_runtime = "@com_google_protobuf//:protobuf_python", + protoc = "@com_google_protobuf//:protoc", + visibility = ["//visibility:public"], + deps = ["@com_google_protobuf//:protobuf_python"], +) + + """, ) \ No newline at end of file From c4fef88817e1d094f9f75e4c884495433708c428 Mon Sep 17 00:00:00 2001 From: Rama Date: Tue, 31 Oct 2017 20:07:34 +0530 Subject: [PATCH 06/19] added support for bazel build of promotheus proto Signed-off-by: Rama --- bazel/repositories.bzl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bazel/repositories.bzl b/bazel/repositories.bzl index 2ca27f7bb..9ac26d372 100644 --- a/bazel/repositories.bzl +++ b/bazel/repositories.bzl @@ -51,6 +51,8 @@ py_proto_library( strip_prefix = "client_model-" + PROMETHEUS_SHA, url = "https://github.com/prometheus/client_model/archive/" + PROMETHEUS_SHA + ".tar.gz", build_file_content = """ + +load("@com_google_protobuf//:protobuf.bzl", "py_proto_library") filegroup( name = "client_model_protos_src", @@ -73,7 +75,7 @@ cc_proto_library( ) py_proto_library( - name = "client_model_protos_lib_py", + name = "client_model_protos_py", srcs = [ "metrics.proto", ], From 512329604caff1212ac691d07ec61692dd9928d0 Mon Sep 17 00:00:00 2001 From: Rama Date: Tue, 31 Oct 2017 20:25:37 +0530 Subject: [PATCH 07/19] added support for bazel build of promotheus proto Signed-off-by: Rama --- api/metrics_service.proto | 2 +- bazel/repositories.bzl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/api/metrics_service.proto b/api/metrics_service.proto index 54db88c4c..c3fb85ae4 100644 --- a/api/metrics_service.proto +++ b/api/metrics_service.proto @@ -5,7 +5,7 @@ package envoy.api.v2; import "google/api/annotations.proto"; import "metrics.proto"; -//Service to fetch metrics from Proxy. This uses Promotheus data model to represent metrics returned. +// Service to fetch metrics from Proxy. This uses Promotheus data model to represent metrics returned. service MetricsService { rpc FetchMetrics (MetricsRequest) returns (MetricsResponse) { option (google.api.http) = { diff --git a/bazel/repositories.bzl b/bazel/repositories.bzl index 9ac26d372..2e06a099d 100644 --- a/bazel/repositories.bzl +++ b/bazel/repositories.bzl @@ -75,7 +75,7 @@ cc_proto_library( ) py_proto_library( - name = "client_model_protos_py", + name = "client_model_protos_lib_py", srcs = [ "metrics.proto", ], From 5f5eabb52d8cfd6cef18452b0d6269ee6eba944d Mon Sep 17 00:00:00 2001 From: Rama Date: Tue, 31 Oct 2017 20:36:41 +0530 Subject: [PATCH 08/19] removed proto py rule Signed-off-by: Rama --- bazel/repositories.bzl | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/bazel/repositories.bzl b/bazel/repositories.bzl index 2e06a099d..b02242fb1 100644 --- a/bazel/repositories.bzl +++ b/bazel/repositories.bzl @@ -51,8 +51,6 @@ py_proto_library( strip_prefix = "client_model-" + PROMETHEUS_SHA, url = "https://github.com/prometheus/client_model/archive/" + PROMETHEUS_SHA + ".tar.gz", build_file_content = """ - -load("@com_google_protobuf//:protobuf.bzl", "py_proto_library") filegroup( name = "client_model_protos_src", @@ -73,19 +71,5 @@ cc_proto_library( deps = [":client_model_protos_lib"], visibility = ["//visibility:public"], ) - -py_proto_library( - name = "client_model_protos_lib_py", - srcs = [ - "metrics.proto", - ], - include = ".", - default_runtime = "@com_google_protobuf//:protobuf_python", - protoc = "@com_google_protobuf//:protoc", - visibility = ["//visibility:public"], - deps = ["@com_google_protobuf//:protobuf_python"], -) - - """, ) \ No newline at end of file From 92c03315185fe617e6a17b0f7111ba4ea70715dd Mon Sep 17 00:00:00 2001 From: Rama Date: Tue, 31 Oct 2017 20:46:43 +0530 Subject: [PATCH 09/19] skip py proto Signed-off-by: Rama --- bazel/api_build_system.bzl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bazel/api_build_system.bzl b/bazel/api_build_system.bzl index 211fcadc8..88a62bd4e 100644 --- a/bazel/api_build_system.bzl +++ b/bazel/api_build_system.bzl @@ -43,7 +43,8 @@ def api_proto_library(name, srcs = [], deps = [], has_services = 0): deps = [name], visibility = ["//visibility:public"], ) - api_py_proto_library(name, srcs, deps, has_services) + # skipping py proto for now + # api_py_proto_library(name, srcs, deps, has_services) def api_cc_test(name, srcs, proto_deps): native.cc_test( From beae9e5a288ef3aa27de5398d20c27d48736018d Mon Sep 17 00:00:00 2001 From: Rama Date: Tue, 31 Oct 2017 20:53:28 +0530 Subject: [PATCH 10/19] fully qualified MetricsFamily Signed-off-by: Rama --- api/metrics_service.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/metrics_service.proto b/api/metrics_service.proto index c3fb85ae4..8f49c5529 100644 --- a/api/metrics_service.proto +++ b/api/metrics_service.proto @@ -20,5 +20,5 @@ message MetricsRequest { } message MetricsResponse { - repeated MetricFamily proxy_metrics = 1; + repeated io.prometheus.client.MetricFamily proxy_metrics = 1; } \ No newline at end of file From a86827113571ade6d721fa557c35745e29e4c340 Mon Sep 17 00:00:00 2001 From: Rama Date: Tue, 31 Oct 2017 21:06:03 +0530 Subject: [PATCH 11/19] add dep for go_grpc Signed-off-by: Rama --- api/BUILD | 1 + 1 file changed, 1 insertion(+) diff --git a/api/BUILD b/api/BUILD index c2ecb484e..fb5c2b7c9 100644 --- a/api/BUILD +++ b/api/BUILD @@ -47,6 +47,7 @@ go_grpc_library( "@com_github_golang_protobuf//ptypes/timestamp:go_default_library", "@com_github_golang_protobuf//ptypes/wrappers:go_default_library", "@org_golang_google_genproto//googleapis/api/annotations:go_default_library", + "@promotheus_metrics_model//:client_model_protos_lib", ], ) From f15c7dafce2773d77e9f374fd462d225af4a7b69 Mon Sep 17 00:00:00 2001 From: Rama Date: Tue, 31 Oct 2017 21:10:02 +0530 Subject: [PATCH 12/19] removed go support Signed-off-by: Rama --- api/BUILD | 2 -- 1 file changed, 2 deletions(-) diff --git a/api/BUILD b/api/BUILD index fb5c2b7c9..a65cefd06 100644 --- a/api/BUILD +++ b/api/BUILD @@ -16,7 +16,6 @@ proto_library( "hds.proto", "health_check.proto", "lds.proto", - "metrics_service.proto", "protocol.proto", "rds.proto", "rls.proto", @@ -31,7 +30,6 @@ proto_library( "@com_google_protobuf//:timestamp_proto", "@com_google_protobuf//:wrappers_proto", "@googleapis//:http_api_protos_lib", - "@promotheus_metrics_model//:client_model_protos_lib", ], ) From 7804dc6860971a81e7b78b67ce8c7d3a4f1ebb4a Mon Sep 17 00:00:00 2001 From: Rama Date: Tue, 31 Oct 2017 21:12:24 +0530 Subject: [PATCH 13/19] removed go support Signed-off-by: Rama --- api/BUILD | 1 - 1 file changed, 1 deletion(-) diff --git a/api/BUILD b/api/BUILD index a65cefd06..aaf0c7da1 100644 --- a/api/BUILD +++ b/api/BUILD @@ -45,7 +45,6 @@ go_grpc_library( "@com_github_golang_protobuf//ptypes/timestamp:go_default_library", "@com_github_golang_protobuf//ptypes/wrappers:go_default_library", "@org_golang_google_genproto//googleapis/api/annotations:go_default_library", - "@promotheus_metrics_model//:client_model_protos_lib", ], ) From bf2238c1fc4fc8dbc7cfb368c9ca35693859f3f8 Mon Sep 17 00:00:00 2001 From: Rama Date: Tue, 31 Oct 2017 21:28:15 +0530 Subject: [PATCH 14/19] make py optional only for metrics Signed-off-by: Rama --- api/BUILD | 1 + bazel/api_build_system.bzl | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/api/BUILD b/api/BUILD index aaf0c7da1..be7ec929f 100644 --- a/api/BUILD +++ b/api/BUILD @@ -140,6 +140,7 @@ api_proto_library( ":base", "@promotheus_metrics_model//:client_model_protos_lib", ], + require_py = 0, ) api_proto_library( diff --git a/bazel/api_build_system.bzl b/bazel/api_build_system.bzl index 88a62bd4e..d53fd96b9 100644 --- a/bazel/api_build_system.bzl +++ b/bazel/api_build_system.bzl @@ -23,7 +23,7 @@ def api_py_proto_library(name, srcs = [], deps = [], has_services = 0): # TODO(htuch): has_services is currently ignored but will in future support # gRPC stub generation. -def api_proto_library(name, srcs = [], deps = [], has_services = 0): +def api_proto_library(name, srcs = [], deps = [], has_services = 0, require_py = 1): native.proto_library( name = name, srcs = srcs, @@ -43,8 +43,8 @@ def api_proto_library(name, srcs = [], deps = [], has_services = 0): deps = [name], visibility = ["//visibility:public"], ) - # skipping py proto for now - # api_py_proto_library(name, srcs, deps, has_services) + if (require_py == 1): + api_py_proto_library(name, srcs, deps, has_services) def api_cc_test(name, srcs, proto_deps): native.cc_test( From e473c2957c0c2eb81acd44f8bd237ba66312ba64 Mon Sep 17 00:00:00 2001 From: Rama Date: Tue, 31 Oct 2017 22:22:53 +0530 Subject: [PATCH 15/19] changed to streaming Signed-off-by: Rama --- api/metrics_service.proto | 15 +++++---------- test/build/build_test.cc | 2 +- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/api/metrics_service.proto b/api/metrics_service.proto index 8f49c5529..63fb5fe1d 100644 --- a/api/metrics_service.proto +++ b/api/metrics_service.proto @@ -5,20 +5,15 @@ package envoy.api.v2; import "google/api/annotations.proto"; import "metrics.proto"; -// Service to fetch metrics from Proxy. This uses Promotheus data model to represent metrics returned. +// Service for streaming metrics to connected end point. service MetricsService { - rpc FetchMetrics (MetricsRequest) returns (MetricsResponse) { - option (google.api.http) = { - post: "/v2/metrics" - body: "*" - }; + rpc StreamMetrics(stream StreamMetricsMessage) returns (StreamMetricsResponse) { + } } -message MetricsRequest { +message StreamMetricsResponse {} -} - -message MetricsResponse { +message StreamMetricsMessage { repeated io.prometheus.client.MetricFamily proxy_metrics = 1; } \ No newline at end of file diff --git a/test/build/build_test.cc b/test/build/build_test.cc index 452132f10..fa3cf8467 100644 --- a/test/build/build_test.cc +++ b/test/build/build_test.cc @@ -16,7 +16,7 @@ int main(int argc, char *argv[]) { "envoy.api.v2.HealthDiscoveryService.StreamHealthCheck", "envoy.api.v2.ListenerDiscoveryService.FetchListeners", "envoy.api.v2.ListenerDiscoveryService.StreamListeners", - "envoy.api.v2.MetricsService.FetchMetrics", + "envoy.api.v2.MetricsService.StreamMetrics", "envoy.api.v2.RouteDiscoveryService.FetchRoutes", "envoy.api.v2.RouteDiscoveryService.StreamRoutes", "envoy.api.v2.RateLimitService.ShouldRateLimit", From e3bfd4030bf0cda5c36aa7992dad62d296d612d9 Mon Sep 17 00:00:00 2001 From: Rama Date: Wed, 1 Nov 2017 09:26:02 +0530 Subject: [PATCH 16/19] review comments Signed-off-by: Rama --- api/metrics_service.proto | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/api/metrics_service.proto b/api/metrics_service.proto index 63fb5fe1d..db7e1e877 100644 --- a/api/metrics_service.proto +++ b/api/metrics_service.proto @@ -8,12 +8,11 @@ import "metrics.proto"; // Service for streaming metrics to connected end point. service MetricsService { rpc StreamMetrics(stream StreamMetricsMessage) returns (StreamMetricsResponse) { - } } message StreamMetricsResponse {} message StreamMetricsMessage { - repeated io.prometheus.client.MetricFamily proxy_metrics = 1; + repeated io.prometheus.client.MetricFamily envoy_metrics = 1; } \ No newline at end of file From 1519e6bc133993daa0d4768e5fd4b9aa45f68bc6 Mon Sep 17 00:00:00 2001 From: Rama Date: Wed, 1 Nov 2017 21:45:22 +0530 Subject: [PATCH 17/19] review comments Signed-off-by: Rama --- README.md | 1 + api/metrics_service.proto | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index de6228d63..ecf477e60 100644 --- a/README.md +++ b/README.md @@ -108,6 +108,7 @@ Unless otherwise stated, the APIs with the same names as v1 APIs have a similar endpoints. The health check subset may not be a subset of the Envoy instance's EDS endpoints. * [Listener Discovery Service (LDS)](api/lds.proto). This new API supports dynamic discovery of the listener configuration (which ports to bind to, TLS details, filter chains, etc.). +* [Metric Service (MS)](api/metrics_service.proto). This new API allows Envoy to push (stream) metrics forever for servers to consume. * [Rate Limit Service (RLS)](api/rls.proto) * [Route Discovery Service (RDS)](api/rds.proto). * [Secret Discovery Service (SDS)](api/sds.proto). diff --git a/api/metrics_service.proto b/api/metrics_service.proto index db7e1e877..d6dc39199 100644 --- a/api/metrics_service.proto +++ b/api/metrics_service.proto @@ -1,12 +1,15 @@ syntax = "proto3"; package envoy.api.v2; +import "api/base.proto"; import "google/api/annotations.proto"; import "metrics.proto"; -// Service for streaming metrics to connected end point. +// Service for streaming metrics to server that consumes the metrics data. It uses Prometheus metric data model as a standard to represent metrics information. service MetricsService { + // Envoy will connect and send StreamMetricsMessage messages forever. It does not expect any + // response to be sent as nothing would be done in the case of failure. rpc StreamMetrics(stream StreamMetricsMessage) returns (StreamMetricsResponse) { } } @@ -14,5 +17,7 @@ service MetricsService { message StreamMetricsResponse {} message StreamMetricsMessage { - repeated io.prometheus.client.MetricFamily envoy_metrics = 1; + // The node sending the metric messages over the stream. + Node node = 1; + repeated io.prometheus.client.MetricFamily envoy_metrics = 2; } \ No newline at end of file From 9040f9342d85db8bde396c971ef0872676238b8a Mon Sep 17 00:00:00 2001 From: Rama Date: Thu, 2 Nov 2017 09:30:07 +0530 Subject: [PATCH 18/19] review comments Signed-off-by: Rama --- api/metrics_service.proto | 22 +++++++++++++++++++--- bazel/repositories.bzl | 2 +- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/api/metrics_service.proto b/api/metrics_service.proto index d6dc39199..07abce7a4 100644 --- a/api/metrics_service.proto +++ b/api/metrics_service.proto @@ -6,7 +6,8 @@ import "api/base.proto"; import "google/api/annotations.proto"; import "metrics.proto"; -// Service for streaming metrics to server that consumes the metrics data. It uses Prometheus metric data model as a standard to represent metrics information. +// Service for streaming metrics to server that consumes the metrics data. It uses Prometheus metric +// data model as a standard to represent metrics information. service MetricsService { // Envoy will connect and send StreamMetricsMessage messages forever. It does not expect any // response to be sent as nothing would be done in the case of failure. @@ -17,7 +18,22 @@ service MetricsService { message StreamMetricsResponse {} message StreamMetricsMessage { - // The node sending the metric messages over the stream. - Node node = 1; + message Identifier { + // The node sending the access log messages over the stream. + Node node = 1; + } + + // Identifier data that will only be sent in the first message on the stream. This is effectively + // structured metadata and is a performance optimization. + Identifier identifier = 1; + + // A list of metric entries repeated io.prometheus.client.MetricFamily envoy_metrics = 2; +} + +// Configuration of default metrics service implementation. +message MetricsServiceConfig { + // The name of the upstream cluster that hosts the metrics service. The cluster must be + // configured in the cluster manager. + string cluster_name = 1; } \ No newline at end of file diff --git a/bazel/repositories.bzl b/bazel/repositories.bzl index b02242fb1..79c1a35fe 100644 --- a/bazel/repositories.bzl +++ b/bazel/repositories.bzl @@ -1,5 +1,5 @@ GOOGLEAPIS_SHA = "5c6df0cd18c6a429eab739fb711c27f6e1393366" # May 14, 2017 -PROMETHEUS_SHA = "6f3806018612930941127f2a7c6c453ba2c527d2" +PROMETHEUS_SHA = "6f3806018612930941127f2a7c6c453ba2c527d2" # Nov 02, 2017 def api_dependencies(): native.new_http_archive( From d753f43e667c22009ef37830ce201668aa47d311 Mon Sep 17 00:00:00 2001 From: Rama Date: Fri, 3 Nov 2017 08:36:31 +0530 Subject: [PATCH 19/19] review comments Signed-off-by: Rama --- api/metrics_service.proto | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/api/metrics_service.proto b/api/metrics_service.proto index 07abce7a4..54e3fbc58 100644 --- a/api/metrics_service.proto +++ b/api/metrics_service.proto @@ -1,6 +1,7 @@ syntax = "proto3"; package envoy.api.v2; + import "api/base.proto"; import "google/api/annotations.proto"; @@ -23,15 +24,15 @@ message StreamMetricsMessage { Node node = 1; } - // Identifier data that will only be sent in the first message on the stream. This is effectively - // structured metadata and is a performance optimization. + // Identifier data effectively is a structured metadata. + // As a performance optimization this will only be sent in the first message on the stream. Identifier identifier = 1; // A list of metric entries repeated io.prometheus.client.MetricFamily envoy_metrics = 2; } -// Configuration of default metrics service implementation. +// Configuration structure. message MetricsServiceConfig { // The name of the upstream cluster that hosts the metrics service. The cluster must be // configured in the cluster manager.