From e62854a078d8bbece4504036259296bc1a1cb991 Mon Sep 17 00:00:00 2001 From: Bryan Huhta Date: Tue, 18 Jun 2024 10:34:33 -0500 Subject: [PATCH 01/19] Use x/k6 package --- go.mod | 5 +++-- go.sum | 10 ++++++---- pkg/phlare/modules.go | 4 ++++ 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index f4c34a3183..32dad68ff0 100644 --- a/go.mod +++ b/go.mod @@ -29,8 +29,9 @@ require ( github.com/gorilla/mux v1.8.0 github.com/grafana/dskit v0.0.0-20231221015914-de83901bf4d6 github.com/grafana/jfr-parser/pprof v0.0.0-20240228024232-8abcb81c304c - github.com/grafana/pyroscope-go v1.0.3 + github.com/grafana/pyroscope-go v1.1.2-0.20240617223404-539601a7ef9e github.com/grafana/pyroscope-go/godeltaprof v0.1.7 + github.com/grafana/pyroscope-go/x/k6 v0.0.0-20240617223404-539601a7ef9e github.com/grafana/pyroscope/api v0.4.0 github.com/grafana/regexp v0.0.0-20221123153739-15dc172cd2db github.com/grafana/river v0.3.0 @@ -38,7 +39,7 @@ require ( github.com/hashicorp/golang-lru/v2 v2.0.7 github.com/json-iterator/go v1.1.12 github.com/k0kubun/pp/v3 v3.2.0 - github.com/klauspost/compress v1.17.7 + github.com/klauspost/compress v1.17.8 github.com/kubescape/go-git-url v0.0.27 github.com/mattn/go-isatty v0.0.19 github.com/minio/minio-go/v7 v7.0.61 diff --git a/go.sum b/go.sum index 63f8691f3f..4688ac10b1 100644 --- a/go.sum +++ b/go.sum @@ -382,10 +382,12 @@ github.com/grafana/memberlist v0.3.1-0.20220708130638-bd88e10a3d91 h1:/NipyHnOmv github.com/grafana/memberlist v0.3.1-0.20220708130638-bd88e10a3d91/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/grafana/objstore v0.0.0-20231121154247-84f91ea90e72 h1:o22hsDMQ3kv/0N9PkzHQSd5xMmmmdA5UJR7Jb4xISZQ= github.com/grafana/objstore v0.0.0-20231121154247-84f91ea90e72/go.mod h1:JauBAcJ61tRSv9widgISVmA6akQXDeUMXBrVmWW4xog= -github.com/grafana/pyroscope-go v1.0.3 h1:8WWmItzLfg4m8G+j//ElSjMeMr88Y6Lvblar6qeTyKk= -github.com/grafana/pyroscope-go v1.0.3/go.mod h1:0d7ftwSMBV/Awm7CCiYmHQEG8Y44Ma3YSjt+nWcWztY= +github.com/grafana/pyroscope-go v1.1.2-0.20240617223404-539601a7ef9e h1:fZsYceXT710K0f7UPYiM1SI81GZYz0k6tKWOWEo4Lyo= +github.com/grafana/pyroscope-go v1.1.2-0.20240617223404-539601a7ef9e/go.mod h1:hCkw+OZZwaq81QX62yu+3lIe+4rZaCs+qSAT/o2ENa0= github.com/grafana/pyroscope-go/godeltaprof v0.1.7 h1:C11j63y7gymiW8VugJ9ZW0pWfxTZugdSJyC48olk5KY= github.com/grafana/pyroscope-go/godeltaprof v0.1.7/go.mod h1:Tk376Nbldo4Cha9RgiU7ik8WKFkNpfds98aUzS8omLE= +github.com/grafana/pyroscope-go/x/k6 v0.0.0-20240617223404-539601a7ef9e h1:QHg4jvb+uJMckgq6lhDZLyb22WQ2YhtiIjp93hb5Px0= +github.com/grafana/pyroscope-go/x/k6 v0.0.0-20240617223404-539601a7ef9e/go.mod h1:nfbW6/4ke3ywlqLb+Zgr9t1z9Zv3m+2ImUp+vbkzHpc= github.com/grafana/regexp v0.0.0-20221123153739-15dc172cd2db h1:7aN5cccjIqCLTzedH7MZzRZt5/lsAHch6Z3L2ZGn5FA= github.com/grafana/regexp v0.0.0-20221123153739-15dc172cd2db/go.mod h1:M5qHK+eWfAv8VR/265dIuEpL3fNfeC21tXXp9itM24A= github.com/grafana/river v0.3.0 h1:6TsaR/vkkcppUM9I0muGbPIUedCtpPu6OWreE5+CE6g= @@ -481,8 +483,8 @@ github.com/k0kubun/pp/v3 v3.2.0/go.mod h1:ODtJQbQcIRfAD3N+theGCV1m/CBxweERz2dapd github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.17.3/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= -github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg= -github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= +github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= diff --git a/pkg/phlare/modules.go b/pkg/phlare/modules.go index 40ab95850a..f79dac916f 100644 --- a/pkg/phlare/modules.go +++ b/pkg/phlare/modules.go @@ -18,6 +18,7 @@ import ( "github.com/grafana/dskit/runtimeconfig" "github.com/grafana/dskit/server" "github.com/grafana/dskit/services" + "github.com/grafana/pyroscope-go/x/k6" grpcgw "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" "github.com/opentracing/opentracing-go" "github.com/pkg/errors" @@ -484,6 +485,9 @@ func (f *Phlare) initServer() (services.Service, error) { }, httpMetric, objstoreTracerMiddleware, + middleware.Func(func(h http.Handler) http.Handler { + return k6.LabelsFromBaggageHandler(h) + }), } f.Server.HTTPServer.Handler = middleware.Merge(defaultHTTPMiddleware...).Wrap(f.Server.HTTP) From 4a44ab7e068082aad0b36e36919858371d24b321 Mon Sep 17 00:00:00 2001 From: Bryan Huhta Date: Wed, 17 Jul 2024 12:10:12 -0500 Subject: [PATCH 02/19] Debug k6 middleware --- pkg/phlare/modules.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkg/phlare/modules.go b/pkg/phlare/modules.go index 031cada3cd..502b85ff89 100644 --- a/pkg/phlare/modules.go +++ b/pkg/phlare/modules.go @@ -489,7 +489,10 @@ func (f *Phlare) initServer() (services.Service, error) { httpMetric, objstoreTracerMiddleware, middleware.Func(func(h http.Handler) http.Handler { - return k6.LabelsFromBaggageHandler(h) + next := k6.LabelsFromBaggageHandler(h) + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + next.ServeHTTP(w, r) + }) }), } f.Server.HTTPServer.Handler = middleware.Merge(defaultHTTPMiddleware...).Wrap(f.Server.HTTP) From d6aaff33f73a5ce537253737d84159944e8623fa Mon Sep 17 00:00:00 2001 From: Bryan Huhta Date: Wed, 17 Jul 2024 12:49:32 -0500 Subject: [PATCH 03/19] Tag each request type --- tools/k6/lib/request.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tools/k6/lib/request.js b/tools/k6/lib/request.js index 1d631cfe12..36136e2840 100644 --- a/tools/k6/lib/request.js +++ b/tools/k6/lib/request.js @@ -9,6 +9,7 @@ import { READ_TOKEN, TENANT_ID, BASE_URL } from './env.js'; export function doSelectMergeProfileRequest(body, headers) { const res = http.post(`${BASE_URL}/querier.v1.QuerierService/SelectMergeProfile`, JSON.stringify(body), { headers: withHeaders(headers), + tags: { name: "querier.v1.QuerierService/SelectMergeProfile" } }); check(res, { @@ -35,6 +36,7 @@ export function doRenderRequest(body, headers) { export function doSelectMergeStacktracesRequest(body, headers) { const res = http.post(`${BASE_URL}/querier.v1.QuerierService/SelectMergeStacktraces`, JSON.stringify(body), { headers: withHeaders(headers), + tags: { name: "querier.v1.QuerierService/SelectMergeStacktraces" } }); check(res, { @@ -45,6 +47,7 @@ export function doSelectMergeStacktracesRequest(body, headers) { export function doLabelNamesRequest(body, headers) { const res = http.post(`${BASE_URL}/querier.v1.QuerierService/LabelNames`, JSON.stringify(body), { headers: withHeaders(headers), + tags: { name: "querier.v1.QuerierService/LabelNames" } }); check(res, { @@ -55,6 +58,7 @@ export function doLabelNamesRequest(body, headers) { export function doSeriesRequest(body, headers) { const res = http.post(`${BASE_URL}/querier.v1.QuerierService/Series`, JSON.stringify(body), { headers: withHeaders(headers), + tags: { name: "querier.v1.QuerierService/Series" } }); check(res, { @@ -70,7 +74,7 @@ export function doRenderDiffRequest(body, headers) { const res = http.get(params.toString(), { headers: withHeaders(headers), - tags: { name: '/render' }, + tags: { name: '/render-diff' }, }); check(res, { From aec0a53b46b7d383863ed0f97cdfdcfd4fce2859 Mon Sep 17 00:00:00 2001 From: Bryan Huhta Date: Wed, 17 Jul 2024 12:49:47 -0500 Subject: [PATCH 04/19] Add k6 middleware to querier --- pkg/querier/grpc_handler.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/pkg/querier/grpc_handler.go b/pkg/querier/grpc_handler.go index be32c05282..9fa0e4fa23 100644 --- a/pkg/querier/grpc_handler.go +++ b/pkg/querier/grpc_handler.go @@ -3,6 +3,8 @@ package querier import ( "net/http" + "github.com/grafana/dskit/middleware" + "github.com/grafana/pyroscope-go/x/k6" "github.com/grafana/pyroscope/api/gen/proto/go/querier/v1/querierv1connect" vcsv1connect "github.com/grafana/pyroscope/api/gen/proto/go/vcs/v1/vcsv1connect" connectapi "github.com/grafana/pyroscope/pkg/api/connect" @@ -18,5 +20,13 @@ func NewGRPCHandler(svc QuerierSvc) connectgrpc.GRPCHandler { mux := http.NewServeMux() mux.Handle(querierv1connect.NewQuerierServiceHandler(svc, connectapi.DefaultHandlerOptions()...)) mux.Handle(vcsv1connect.NewVCSServiceHandler(svc, connectapi.DefaultHandlerOptions()...)) - return connectgrpc.NewHandler(mux) + + httpMiddleware := middleware.Func(func(h http.Handler) http.Handler { + next := k6.LabelsFromBaggageHandler(h) + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + next.ServeHTTP(w, r) + }) + }) + + return connectgrpc.NewHandler(httpMiddleware.Wrap(mux)) } From d414bb2266114d48b151203808668198815fbf57 Mon Sep 17 00:00:00 2001 From: Bryan Huhta Date: Wed, 17 Jul 2024 13:00:09 -0500 Subject: [PATCH 05/19] Remove tests cases that cause too much cardinality --- tools/k6/tests/reads.js | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/tools/k6/tests/reads.js b/tools/k6/tests/reads.js index 2b5e157a6f..081f55db79 100644 --- a/tools/k6/tests/reads.js +++ b/tools/k6/tests/reads.js @@ -85,14 +85,16 @@ function doAllQueryRequests(serviceName, start, end) { label_selector: `{service_name="${serviceName}"}`, }); - doRenderRequest({ - from: start, - until: end, - query: `process_cpu:cpu:nanoseconds:cpu:nanoseconds{service_name="${serviceName}"}`, - aggregation: 'sum', - format: 'json', - 'max-nodes': 16384, - }); + // note(bryanhuhta): Temporarily removing this until k6 pyroscope SDK supports + // tagging requests. + // doRenderRequest({ + // from: start, + // until: end, + // query: `process_cpu:cpu:nanoseconds:cpu:nanoseconds{service_name="${serviceName}"}`, + // aggregation: 'sum', + // format: 'json', + // 'max-nodes': 16384, + // }); doSelectMergeStacktracesRequest({ start, @@ -117,16 +119,18 @@ function doAllQueryRequests(serviceName, start, end) { matchers: [], }); - doRenderDiffRequest({ - rightQuery: `process_cpu:cpu:nanoseconds:cpu:nanoseconds{service_name="${serviceName}"}`, - rightFrom: start, - rightUntil: end, - leftQuery: `process_cpu:cpu:nanoseconds:cpu:nanoseconds{service_name="${serviceName}"}`, - leftFrom: start - (end - start), // Whatever the right query range is, we want to go back the same amount. - leftUntil: start, - format: 'json', - 'max-nodes': 16384, - }); + // note(bryanhuhta): Temporarily removing this until k6 pyroscope SDK supports + // tagging requests. + // doRenderDiffRequest({ + // rightQuery: `process_cpu:cpu:nanoseconds:cpu:nanoseconds{service_name="${serviceName}"}`, + // rightFrom: start, + // rightUntil: end, + // leftQuery: `process_cpu:cpu:nanoseconds:cpu:nanoseconds{service_name="${serviceName}"}`, + // leftFrom: start - (end - start), // Whatever the right query range is, we want to go back the same amount. + // leftUntil: start, + // format: 'json', + // 'max-nodes': 16384, + // }); } function newRelativeTimeRange(scalar, unit) { From 7ae7c8bce90b7259f1b623898f87552673090a8a Mon Sep 17 00:00:00 2001 From: Bryan Huhta Date: Fri, 6 Sep 2024 09:04:31 -0700 Subject: [PATCH 06/19] update project --- tools/k6/tests/reads.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/k6/tests/reads.js b/tools/k6/tests/reads.js index 081f55db79..e675f71041 100644 --- a/tools/k6/tests/reads.js +++ b/tools/k6/tests/reads.js @@ -13,7 +13,7 @@ import { export const options = { ext: { loadimpact: { - projectID: 3700226, + projectID: 16425, name: 'reads', }, }, From 46897ba5337951c5ff8e620814f3cd5143611764 Mon Sep 17 00:00:00 2001 From: bryanhuhta Date: Fri, 20 Sep 2024 13:55:59 -0700 Subject: [PATCH 07/19] Enable all read load tests --- tools/k6/tests/reads.js | 40 ++++++++++++++++++---------------------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/tools/k6/tests/reads.js b/tools/k6/tests/reads.js index e675f71041..09cba8ddde 100644 --- a/tools/k6/tests/reads.js +++ b/tools/k6/tests/reads.js @@ -85,16 +85,14 @@ function doAllQueryRequests(serviceName, start, end) { label_selector: `{service_name="${serviceName}"}`, }); - // note(bryanhuhta): Temporarily removing this until k6 pyroscope SDK supports - // tagging requests. - // doRenderRequest({ - // from: start, - // until: end, - // query: `process_cpu:cpu:nanoseconds:cpu:nanoseconds{service_name="${serviceName}"}`, - // aggregation: 'sum', - // format: 'json', - // 'max-nodes': 16384, - // }); + doRenderRequest({ + from: start, + until: end, + query: `process_cpu:cpu:nanoseconds:cpu:nanoseconds{service_name="${serviceName}"}`, + aggregation: 'sum', + format: 'json', + 'max-nodes': 16384, + }); doSelectMergeStacktracesRequest({ start, @@ -119,18 +117,16 @@ function doAllQueryRequests(serviceName, start, end) { matchers: [], }); - // note(bryanhuhta): Temporarily removing this until k6 pyroscope SDK supports - // tagging requests. - // doRenderDiffRequest({ - // rightQuery: `process_cpu:cpu:nanoseconds:cpu:nanoseconds{service_name="${serviceName}"}`, - // rightFrom: start, - // rightUntil: end, - // leftQuery: `process_cpu:cpu:nanoseconds:cpu:nanoseconds{service_name="${serviceName}"}`, - // leftFrom: start - (end - start), // Whatever the right query range is, we want to go back the same amount. - // leftUntil: start, - // format: 'json', - // 'max-nodes': 16384, - // }); + doRenderDiffRequest({ + rightQuery: `process_cpu:cpu:nanoseconds:cpu:nanoseconds{service_name="${serviceName}"}`, + rightFrom: start, + rightUntil: end, + leftQuery: `process_cpu:cpu:nanoseconds:cpu:nanoseconds{service_name="${serviceName}"}`, + leftFrom: start - (end - start), // Whatever the right query range is, we want to go back the same amount. + leftUntil: start, + format: 'json', + 'max-nodes': 16384, + }); } function newRelativeTimeRange(scalar, unit) { From f41b23bcb341ebdfe80755d9a588a56fc6cb05ac Mon Sep 17 00:00:00 2001 From: bryanhuhta Date: Fri, 20 Sep 2024 13:56:08 -0700 Subject: [PATCH 08/19] Make common middleware definition --- pkg/phlare/modules.go | 9 ++------- pkg/querier/grpc_handler.go | 10 ++-------- pkg/util/http/middleware.go | 19 +++++++++++++++++++ 3 files changed, 23 insertions(+), 15 deletions(-) create mode 100644 pkg/util/http/middleware.go diff --git a/pkg/phlare/modules.go b/pkg/phlare/modules.go index 0f6c2e93c6..e941882bab 100644 --- a/pkg/phlare/modules.go +++ b/pkg/phlare/modules.go @@ -20,7 +20,6 @@ import ( "github.com/grafana/dskit/runtimeconfig" "github.com/grafana/dskit/server" "github.com/grafana/dskit/services" - "github.com/grafana/pyroscope-go/x/k6" grpcgw "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" "github.com/opentracing/opentracing-go" "github.com/pkg/errors" @@ -57,6 +56,7 @@ import ( "github.com/grafana/pyroscope/pkg/usagestats" "github.com/grafana/pyroscope/pkg/util" "github.com/grafana/pyroscope/pkg/util/build" + httputil "github.com/grafana/pyroscope/pkg/util/http" "github.com/grafana/pyroscope/pkg/validation" "github.com/grafana/pyroscope/pkg/validation/exporter" ) @@ -535,12 +535,7 @@ func (f *Phlare) initServer() (services.Service, error) { }, httpMetric, objstoreTracerMiddleware, - middleware.Func(func(h http.Handler) http.Handler { - next := k6.LabelsFromBaggageHandler(h) - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - next.ServeHTTP(w, r) - }) - }), + httputil.K6Middleware(), } f.Server.HTTPServer.Handler = middleware.Merge(defaultHTTPMiddleware...).Wrap(f.Server.HTTP) diff --git a/pkg/querier/grpc_handler.go b/pkg/querier/grpc_handler.go index 9fa0e4fa23..f299f931b3 100644 --- a/pkg/querier/grpc_handler.go +++ b/pkg/querier/grpc_handler.go @@ -3,12 +3,11 @@ package querier import ( "net/http" - "github.com/grafana/dskit/middleware" - "github.com/grafana/pyroscope-go/x/k6" "github.com/grafana/pyroscope/api/gen/proto/go/querier/v1/querierv1connect" vcsv1connect "github.com/grafana/pyroscope/api/gen/proto/go/vcs/v1/vcsv1connect" connectapi "github.com/grafana/pyroscope/pkg/api/connect" "github.com/grafana/pyroscope/pkg/util/connectgrpc" + httputil "github.com/grafana/pyroscope/pkg/util/http" ) type QuerierSvc interface { @@ -21,12 +20,7 @@ func NewGRPCHandler(svc QuerierSvc) connectgrpc.GRPCHandler { mux.Handle(querierv1connect.NewQuerierServiceHandler(svc, connectapi.DefaultHandlerOptions()...)) mux.Handle(vcsv1connect.NewVCSServiceHandler(svc, connectapi.DefaultHandlerOptions()...)) - httpMiddleware := middleware.Func(func(h http.Handler) http.Handler { - next := k6.LabelsFromBaggageHandler(h) - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - next.ServeHTTP(w, r) - }) - }) + httpMiddleware := httputil.K6Middleware() return connectgrpc.NewHandler(httpMiddleware.Wrap(mux)) } diff --git a/pkg/util/http/middleware.go b/pkg/util/http/middleware.go new file mode 100644 index 0000000000..694e2e4653 --- /dev/null +++ b/pkg/util/http/middleware.go @@ -0,0 +1,19 @@ +package http + +import ( + "net/http" + + "github.com/grafana/dskit/middleware" + "github.com/grafana/pyroscope-go/x/k6" +) + +// K6Middleware creates a middleware that extracts k6 load test labels from the +// request baggage and adds them as dynamic profiling labels. +func K6Middleware() middleware.Interface { + return middleware.Func(func(h http.Handler) http.Handler { + next := k6.LabelsFromBaggageHandler(h) + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + next.ServeHTTP(w, r) + }) + }) +} From b8f48befd306e53f106bd721351cdc2ec54bdad6 Mon Sep 17 00:00:00 2001 From: bryanhuhta Date: Fri, 20 Sep 2024 13:58:04 -0700 Subject: [PATCH 09/19] Remove whitespace --- pkg/querier/grpc_handler.go | 1 - 1 file changed, 1 deletion(-) diff --git a/pkg/querier/grpc_handler.go b/pkg/querier/grpc_handler.go index f299f931b3..a9b75b53be 100644 --- a/pkg/querier/grpc_handler.go +++ b/pkg/querier/grpc_handler.go @@ -21,6 +21,5 @@ func NewGRPCHandler(svc QuerierSvc) connectgrpc.GRPCHandler { mux.Handle(vcsv1connect.NewVCSServiceHandler(svc, connectapi.DefaultHandlerOptions()...)) httpMiddleware := httputil.K6Middleware() - return connectgrpc.NewHandler(httpMiddleware.Wrap(mux)) } From da490cb08cc76fd7fd3722dfd7462305c190a091 Mon Sep 17 00:00:00 2001 From: bryanhuhta Date: Fri, 20 Sep 2024 14:37:00 -0700 Subject: [PATCH 10/19] Make k6 middleware configurable by flags --- pkg/phlare/modules.go | 12 +++++++++++- pkg/phlare/phlare.go | 2 ++ pkg/querier/grpc_handler.go | 10 +++++++--- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/pkg/phlare/modules.go b/pkg/phlare/modules.go index e941882bab..22bb1785ef 100644 --- a/pkg/phlare/modules.go +++ b/pkg/phlare/modules.go @@ -315,7 +315,13 @@ func (f *Phlare) initQuerier() (services.Service, error) { f.API.RegisterQuerierServiceHandler(querierSvc) f.API.RegisterVCSServiceHandler(querierSvc) } - qWorker, err := worker.NewQuerierWorker(f.Cfg.Worker, querier.NewGRPCHandler(querierSvc), log.With(f.logger, "component", "querier-worker"), f.reg) + + qWorker, err := worker.NewQuerierWorker( + f.Cfg.Worker, + querier.NewGRPCHandler(querierSvc, f.Cfg.SelfProfiling.UseK6Middleware), + log.With(f.logger, "component", "querier-worker"), + f.reg, + ) if err != nil { return nil, err } @@ -537,6 +543,10 @@ func (f *Phlare) initServer() (services.Service, error) { objstoreTracerMiddleware, httputil.K6Middleware(), } + if f.Cfg.SelfProfiling.UseK6Middleware { + defaultHTTPMiddleware = append(defaultHTTPMiddleware, httputil.K6Middleware()) + } + f.Server.HTTPServer.Handler = middleware.Merge(defaultHTTPMiddleware...).Wrap(f.Server.HTTP) s := NewServerService(f.Server, servicesToWaitFor, f.logger) diff --git a/pkg/phlare/phlare.go b/pkg/phlare/phlare.go index b6125a6c5c..f4531467ae 100644 --- a/pkg/phlare/phlare.go +++ b/pkg/phlare/phlare.go @@ -134,6 +134,7 @@ type SelfProfilingConfig struct { DisablePush bool `yaml:"disable_push,omitempty"` MutexProfileFraction int `yaml:"mutex_profile_fraction,omitempty"` BlockProfileRate int `yaml:"block_profile_rate,omitempty"` + UseK6Middleware bool `yaml:"use_k6_middleware,omitempty"` } func (c *SelfProfilingConfig) RegisterFlags(f *flag.FlagSet) { @@ -141,6 +142,7 @@ func (c *SelfProfilingConfig) RegisterFlags(f *flag.FlagSet) { f.IntVar(&c.MutexProfileFraction, "self-profiling.mutex-profile-fraction", 5, "") f.IntVar(&c.BlockProfileRate, "self-profiling.block-profile-rate", 5, "") f.BoolVar(&c.DisablePush, "self-profiling.disable-push", false, "When running in single binary (--target=all) Pyroscope will push (Go SDK) profiles to itself. Set to true to disable self-profiling.") + f.BoolVar(&c.UseK6Middleware, "self-profiling.use-k6-middleware", false, "Read k6 labels from request headers and set them as dynamic profile tags.") } func (c *Config) RegisterFlags(f *flag.FlagSet) { diff --git a/pkg/querier/grpc_handler.go b/pkg/querier/grpc_handler.go index a9b75b53be..42d49f43f5 100644 --- a/pkg/querier/grpc_handler.go +++ b/pkg/querier/grpc_handler.go @@ -15,11 +15,15 @@ type QuerierSvc interface { vcsv1connect.VCSServiceHandler } -func NewGRPCHandler(svc QuerierSvc) connectgrpc.GRPCHandler { +func NewGRPCHandler(svc QuerierSvc, useK6Middleware bool) connectgrpc.GRPCHandler { mux := http.NewServeMux() mux.Handle(querierv1connect.NewQuerierServiceHandler(svc, connectapi.DefaultHandlerOptions()...)) mux.Handle(vcsv1connect.NewVCSServiceHandler(svc, connectapi.DefaultHandlerOptions()...)) - httpMiddleware := httputil.K6Middleware() - return connectgrpc.NewHandler(httpMiddleware.Wrap(mux)) + if useK6Middleware { + httpMiddleware := httputil.K6Middleware() + return connectgrpc.NewHandler(httpMiddleware.Wrap(mux)) + } + + return connectgrpc.NewHandler(mux) } From ce36e73709ca5fa2c133897b79a2b729efdf3692 Mon Sep 17 00:00:00 2001 From: bryanhuhta Date: Mon, 23 Sep 2024 13:13:47 -0500 Subject: [PATCH 11/19] `make generate` --- .../reference-configuration-parameters/index.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/sources/configure-server/reference-configuration-parameters/index.md b/docs/sources/configure-server/reference-configuration-parameters/index.md index f78698d032..69cedaaa66 100644 --- a/docs/sources/configure-server/reference-configuration-parameters/index.md +++ b/docs/sources/configure-server/reference-configuration-parameters/index.md @@ -255,6 +255,10 @@ self_profiling: # CLI flag: -self-profiling.block-profile-rate [block_profile_rate: | default = 5] + # Read k6 labels from request headers and set them as dynamic profile tags. + # CLI flag: -self-profiling.use-k6-middleware + [use_k6_middleware: | default = false] + # When set to true, incoming HTTP requests must specify tenant ID in HTTP # X-Scope-OrgId header. When set to false, tenant ID anonymous is used instead. # CLI flag: -auth.multitenancy-enabled From 987df37186491bd193d80ae396e9b0a65148fd8e Mon Sep 17 00:00:00 2001 From: bryanhuhta Date: Mon, 23 Sep 2024 13:48:44 -0500 Subject: [PATCH 12/19] `make reference-help` --- cmd/pyroscope/help-all.txt.tmpl | 2 ++ cmd/pyroscope/help.txt.tmpl | 2 ++ 2 files changed, 4 insertions(+) diff --git a/cmd/pyroscope/help-all.txt.tmpl b/cmd/pyroscope/help-all.txt.tmpl index 33d4f6f967..018c23051b 100644 --- a/cmd/pyroscope/help-all.txt.tmpl +++ b/cmd/pyroscope/help-all.txt.tmpl @@ -753,6 +753,8 @@ Usage of ./pyroscope: When running in single binary (--target=all) Pyroscope will push (Go SDK) profiles to itself. Set to true to disable self-profiling. -self-profiling.mutex-profile-fraction int (default 5) + -self-profiling.use-k6-middleware + Read k6 labels from request headers and set them as dynamic profile tags. -server.graceful-shutdown-timeout duration Timeout for graceful shutdowns (default 30s) -server.grpc-conn-limit int diff --git a/cmd/pyroscope/help.txt.tmpl b/cmd/pyroscope/help.txt.tmpl index c133f3e8d3..260b1fd361 100644 --- a/cmd/pyroscope/help.txt.tmpl +++ b/cmd/pyroscope/help.txt.tmpl @@ -195,6 +195,8 @@ Usage of ./pyroscope: When running in single binary (--target=all) Pyroscope will push (Go SDK) profiles to itself. Set to true to disable self-profiling. -self-profiling.mutex-profile-fraction int (default 5) + -self-profiling.use-k6-middleware + Read k6 labels from request headers and set them as dynamic profile tags. -server.graceful-shutdown-timeout duration Timeout for graceful shutdowns (default 30s) -server.grpc-conn-limit int From c7940449419ff642343e6778b82a672397237bfc Mon Sep 17 00:00:00 2001 From: bryanhuhta Date: Sun, 29 Sep 2024 18:38:01 -0500 Subject: [PATCH 13/19] Add baggage propogation --- pkg/clientpool/ingester_client_pool.go | 2 +- pkg/clientpool/store_gateway_client_pool.go | 2 +- pkg/querier/ingester_querier.go | 6 ++++-- pkg/querier/querier.go | 10 ++++++++++ pkg/querier/replication.go | 7 ++++++- pkg/storegateway/clientpool/client_pool.go | 2 +- pkg/util/http.go | 22 +++++++++++++++++++++ pkg/util/http/middleware.go | 16 +++++++++++++++ 8 files changed, 61 insertions(+), 6 deletions(-) diff --git a/pkg/clientpool/ingester_client_pool.go b/pkg/clientpool/ingester_client_pool.go index e5511fea5b..15e290acbf 100644 --- a/pkg/clientpool/ingester_client_pool.go +++ b/pkg/clientpool/ingester_client_pool.go @@ -60,7 +60,7 @@ func (f *ingesterPoolFactory) FromInstance(inst ring.InstanceDesc) (ring_client. return nil, err } - httpClient := util.InstrumentedDefaultHTTPClient(util.WithTracingTransport()) + httpClient := util.InstrumentedDefaultHTTPClient(util.WithTracingTransport(), util.WithBaggageTransport()) return &ingesterPoolClient{ IngesterServiceClient: ingesterv1connect.NewIngesterServiceClient(httpClient, "http://"+inst.Addr, f.options...), HealthClient: grpc_health_v1.NewHealthClient(conn), diff --git a/pkg/clientpool/store_gateway_client_pool.go b/pkg/clientpool/store_gateway_client_pool.go index a4a22c6856..64436e394c 100644 --- a/pkg/clientpool/store_gateway_client_pool.go +++ b/pkg/clientpool/store_gateway_client_pool.go @@ -45,7 +45,7 @@ func (f *storeGatewayPoolFactory) FromInstance(inst ring.InstanceDesc) (ring_cli return nil, err } - httpClient := util.InstrumentedDefaultHTTPClient(util.WithTracingTransport()) + httpClient := util.InstrumentedDefaultHTTPClient(util.WithTracingTransport(), util.WithBaggageTransport()) return &storeGatewayPoolClient{ StoreGatewayServiceClient: storegatewayv1connect.NewStoreGatewayServiceClient(httpClient, "http://"+inst.Addr, f.options...), HealthClient: grpc_health_v1.NewHealthClient(conn), diff --git a/pkg/querier/ingester_querier.go b/pkg/querier/ingester_querier.go index 739ad2765b..03b2d4b907 100644 --- a/pkg/querier/ingester_querier.go +++ b/pkg/querier/ingester_querier.go @@ -58,13 +58,15 @@ func forAllIngesters[T any](ctx context.Context, ingesterQuerier *IngesterQuerie if err != nil { return nil, err } - return forGivenReplicationSet(ctx, func(addr string) (IngesterQueryClient, error) { + + clientFactoryFn := func(addr string) (IngesterQueryClient, error) { client, err := ingesterQuerier.pool.GetClientFor(addr) if err != nil { return nil, err } return client.(IngesterQueryClient), nil - }, replicationSet, f) + } + return forGivenReplicationSet(ctx, clientFactoryFn, replicationSet, f) } // forAllPlannedIngesters runs f, in parallel, for all ingesters part of the plan diff --git a/pkg/querier/querier.go b/pkg/querier/querier.go index ddc21d962d..8254b81c50 100644 --- a/pkg/querier/querier.go +++ b/pkg/querier/querier.go @@ -25,6 +25,7 @@ import ( "github.com/prometheus/common/model" "github.com/prometheus/prometheus/promql/parser" "github.com/samber/lo" + "go.opentelemetry.io/otel/baggage" "golang.org/x/sync/errgroup" googlev1 "github.com/grafana/pyroscope/api/gen/proto/go/google/v1" @@ -281,6 +282,15 @@ func (q *Querier) LabelNames(ctx context.Context, req *connect.Request[typesv1.L sp, ctx := opentracing.StartSpanFromContext(ctx, "LabelNames") defer sp.Finish() + header := req.Header() + fmt.Println("header:", header) + + ctxBaggage := baggage.FromContext(ctx) + fmt.Println("baggage:", ctxBaggage) + + parsedBaggage, e := baggage.Parse(header.Get("Baggage")) + fmt.Println("parsedBaggage:", parsedBaggage, "error:", e) + _, hasTimeRange := phlaremodel.GetTimeRange(req.Msg) sp.LogFields( otlog.Bool("legacy_request", !hasTimeRange), diff --git a/pkg/querier/replication.go b/pkg/querier/replication.go index fce35368ce..fdcf1dfd4f 100644 --- a/pkg/querier/replication.go +++ b/pkg/querier/replication.go @@ -89,7 +89,12 @@ func forGivenReplicationSet[Result any, Querier any](ctx context.Context, client } // forGivenPlan runs f, in parallel, for given plan. -func forGivenPlan[Result any, Querier any](ctx context.Context, plan map[string]*blockPlanEntry, clientFactory func(string) (Querier, error), replicationSet ring.ReplicationSet, f QueryReplicaWithHintsFn[Result, Querier]) ([]ResponseFromReplica[Result], error) { +func forGivenPlan[Result any, Querier any]( + ctx context.Context, + plan map[string]*blockPlanEntry, + clientFactory func(string) (Querier, error), + replicationSet ring.ReplicationSet, f QueryReplicaWithHintsFn[Result, Querier], +) ([]ResponseFromReplica[Result], error) { g, _ := errgroup.WithContext(ctx) var ( diff --git a/pkg/storegateway/clientpool/client_pool.go b/pkg/storegateway/clientpool/client_pool.go index d8400eb478..a43e515475 100644 --- a/pkg/storegateway/clientpool/client_pool.go +++ b/pkg/storegateway/clientpool/client_pool.go @@ -67,7 +67,7 @@ func (f *poolFactory) FromInstance(inst ring.InstanceDesc) (ring_client.PoolClie return nil, err } - httpClient := util.InstrumentedDefaultHTTPClient(util.WithTracingTransport()) + httpClient := util.InstrumentedDefaultHTTPClient(util.WithTracingTransport(), util.WithBaggageTransport()) return &storeGatewayPoolClient{ StoreGatewayServiceClient: storegatewayv1connect.NewStoreGatewayServiceClient(httpClient, "http://"+inst.Addr, f.options...), HealthClient: grpc_health_v1.NewHealthClient(conn), diff --git a/pkg/util/http.go b/pkg/util/http.go index 3149f5df42..c55f6eb8fb 100644 --- a/pkg/util/http.go +++ b/pkg/util/http.go @@ -14,6 +14,7 @@ import ( "time" "github.com/grafana/dskit/instrument" + "go.opentelemetry.io/otel/baggage" "github.com/dustin/go-humanize" "github.com/felixge/httpsnoop" @@ -84,6 +85,27 @@ func WithTracingTransport() RoundTripperInstrumentFunc { } } +// WithBaggageTransport will set the Baggage header on the request if there is +// any baggage in the context and it was not already set. +func WithBaggageTransport() RoundTripperInstrumentFunc { + return func(next http.RoundTripper) http.RoundTripper { + return RoundTripperFunc(func(req *http.Request) (*http.Response, error) { + _, ok := req.Header["Baggage"] + if ok { + return next.RoundTrip(req) + } + + b := baggage.FromContext(req.Context()) + if b.Len() == 0 { + return next.RoundTrip(req) + } + + req.Header.Set("Baggage", b.String()) + return next.RoundTrip(req) + }) + } +} + // WriteYAMLResponse writes some YAML as a HTTP response. func WriteYAMLResponse(w http.ResponseWriter, v interface{}) { // There is not standardised content-type for YAML, text/plain ensures the diff --git a/pkg/util/http/middleware.go b/pkg/util/http/middleware.go index 694e2e4653..ca6f57c42f 100644 --- a/pkg/util/http/middleware.go +++ b/pkg/util/http/middleware.go @@ -5,6 +5,7 @@ import ( "github.com/grafana/dskit/middleware" "github.com/grafana/pyroscope-go/x/k6" + "go.opentelemetry.io/otel/baggage" ) // K6Middleware creates a middleware that extracts k6 load test labels from the @@ -13,7 +14,22 @@ func K6Middleware() middleware.Interface { return middleware.Func(func(h http.Handler) http.Handler { next := k6.LabelsFromBaggageHandler(h) return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + r = setBaggageRequestContext(r) next.ServeHTTP(w, r) }) }) } + +// SetBaggageContext sets the Baggage in the request context if it exists as a +// header. +// +// TODO(bryan) Move this into the pyroscope-go/x/k6 package. +func setBaggageRequestContext(r *http.Request) *http.Request { + b, err := baggage.Parse(r.Header.Get("Baggage")) + if err != nil { + return r + } + + ctx := baggage.ContextWithBaggage(r.Context(), b) + return r.WithContext(ctx) +} From 99a1f13b640ec50b0313540ad84a026830c1f62b Mon Sep 17 00:00:00 2001 From: bryanhuhta Date: Mon, 30 Sep 2024 08:29:23 -0500 Subject: [PATCH 14/19] Use `k6 cloud run` --- tools/k6/run.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/k6/run.sh b/tools/k6/run.sh index ec0ff92fc9..596b8fd118 100755 --- a/tools/k6/run.sh +++ b/tools/k6/run.sh @@ -51,7 +51,7 @@ DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P) source "${DIR}"/.env if [ -n "${IS_CLOUD}" ]; then - k6 cloud tools/k6/tests/"${TEST}" \ + k6 cloud run tools/k6/tests/"${TEST}" \ -e "K6_BASE_URL=${K6_BASE_URL}" \ -e "K6_READ_TOKEN=${K6_READ_TOKEN}" \ -e "K6_TENANT_ID=${K6_TENANT_ID}" \ From 830938efdd0a9fd7f94223eabd745f8b18f6d5d5 Mon Sep 17 00:00:00 2001 From: bryanhuhta Date: Mon, 30 Sep 2024 11:14:29 -0500 Subject: [PATCH 15/19] `go mod tidy` --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 2b7f1aa277..658585fc7e 100644 --- a/go.mod +++ b/go.mod @@ -75,6 +75,7 @@ require ( github.com/valyala/bytebufferpool v1.0.0 github.com/xlab/treeprint v1.2.0 go.etcd.io/bbolt v1.3.10 + go.opentelemetry.io/otel v1.24.0 go.opentelemetry.io/proto/otlp v1.1.0 go.uber.org/atomic v1.11.0 go.uber.org/goleak v1.3.0 @@ -225,7 +226,6 @@ require ( go.opentelemetry.io/collector/semconv v0.96.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect - go.opentelemetry.io/otel v1.24.0 // indirect go.opentelemetry.io/otel/metric v1.24.0 // indirect go.opentelemetry.io/otel/trace v1.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect From 3267aa8ca5b768b4600ed7e6861b7dcac2160b9c Mon Sep 17 00:00:00 2001 From: bryanhuhta Date: Mon, 30 Sep 2024 15:09:23 -0500 Subject: [PATCH 16/19] Remove debug code --- pkg/querier/querier.go | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/pkg/querier/querier.go b/pkg/querier/querier.go index 8254b81c50..ddc21d962d 100644 --- a/pkg/querier/querier.go +++ b/pkg/querier/querier.go @@ -25,7 +25,6 @@ import ( "github.com/prometheus/common/model" "github.com/prometheus/prometheus/promql/parser" "github.com/samber/lo" - "go.opentelemetry.io/otel/baggage" "golang.org/x/sync/errgroup" googlev1 "github.com/grafana/pyroscope/api/gen/proto/go/google/v1" @@ -282,15 +281,6 @@ func (q *Querier) LabelNames(ctx context.Context, req *connect.Request[typesv1.L sp, ctx := opentracing.StartSpanFromContext(ctx, "LabelNames") defer sp.Finish() - header := req.Header() - fmt.Println("header:", header) - - ctxBaggage := baggage.FromContext(ctx) - fmt.Println("baggage:", ctxBaggage) - - parsedBaggage, e := baggage.Parse(header.Get("Baggage")) - fmt.Println("parsedBaggage:", parsedBaggage, "error:", e) - _, hasTimeRange := phlaremodel.GetTimeRange(req.Msg) sp.LogFields( otlog.Bool("legacy_request", !hasTimeRange), From 0e5af89f3c6ea9423a81b5b8e7e520c6e735c489 Mon Sep 17 00:00:00 2001 From: bryanhuhta Date: Mon, 30 Sep 2024 15:49:01 -0500 Subject: [PATCH 17/19] Simplify middleware helper --- pkg/util/http/middleware.go | 21 +-------------------- 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/pkg/util/http/middleware.go b/pkg/util/http/middleware.go index ca6f57c42f..69b247f5d9 100644 --- a/pkg/util/http/middleware.go +++ b/pkg/util/http/middleware.go @@ -5,31 +5,12 @@ import ( "github.com/grafana/dskit/middleware" "github.com/grafana/pyroscope-go/x/k6" - "go.opentelemetry.io/otel/baggage" ) // K6Middleware creates a middleware that extracts k6 load test labels from the // request baggage and adds them as dynamic profiling labels. func K6Middleware() middleware.Interface { return middleware.Func(func(h http.Handler) http.Handler { - next := k6.LabelsFromBaggageHandler(h) - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - r = setBaggageRequestContext(r) - next.ServeHTTP(w, r) - }) + return k6.LabelsFromBaggageHandler(h) }) } - -// SetBaggageContext sets the Baggage in the request context if it exists as a -// header. -// -// TODO(bryan) Move this into the pyroscope-go/x/k6 package. -func setBaggageRequestContext(r *http.Request) *http.Request { - b, err := baggage.Parse(r.Header.Get("Baggage")) - if err != nil { - return r - } - - ctx := baggage.ContextWithBaggage(r.Context(), b) - return r.WithContext(ctx) -} From 1ee7ca32b84d496e97d4c8eebf96e32dc5efa7a0 Mon Sep 17 00:00:00 2001 From: bryanhuhta Date: Mon, 30 Sep 2024 15:49:16 -0500 Subject: [PATCH 18/19] Temporarily use unreleased version of pyroscope-go --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 658585fc7e..018b5431a7 100644 --- a/go.mod +++ b/go.mod @@ -33,7 +33,7 @@ require ( github.com/grafana/jfr-parser/pprof v0.0.0-20240228024232-8abcb81c304c github.com/grafana/pyroscope-go v1.1.1 github.com/grafana/pyroscope-go/godeltaprof v0.1.8 - github.com/grafana/pyroscope-go/x/k6 v0.0.0-20240920080526-46ebf824bf43 + github.com/grafana/pyroscope-go/x/k6 v0.0.0-20240930200707-5b85aa3649e5 github.com/grafana/pyroscope/api v0.4.0 github.com/grafana/regexp v0.0.0-20221123153739-15dc172cd2db github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 diff --git a/go.sum b/go.sum index b837860ff2..b5b51e7223 100644 --- a/go.sum +++ b/go.sum @@ -397,8 +397,8 @@ github.com/grafana/pyroscope-go v1.1.1 h1:PQoUU9oWtO3ve/fgIiklYuGilvsm8qaGhlY4Vw github.com/grafana/pyroscope-go v1.1.1/go.mod h1:Mw26jU7jsL/KStNSGGuuVYdUq7Qghem5P8aXYXSXG88= github.com/grafana/pyroscope-go/godeltaprof v0.1.8 h1:iwOtYXeeVSAeYefJNaxDytgjKtUuKQbJqgAIjlnicKg= github.com/grafana/pyroscope-go/godeltaprof v0.1.8/go.mod h1:2+l7K7twW49Ct4wFluZD3tZ6e0SjanjcUUBPVD/UuGU= -github.com/grafana/pyroscope-go/x/k6 v0.0.0-20240920080526-46ebf824bf43 h1:/ThZsTNBh/LfiJEtICIy8ht6syUyE7+STQU3nwjDleU= -github.com/grafana/pyroscope-go/x/k6 v0.0.0-20240920080526-46ebf824bf43/go.mod h1:nfbW6/4ke3ywlqLb+Zgr9t1z9Zv3m+2ImUp+vbkzHpc= +github.com/grafana/pyroscope-go/x/k6 v0.0.0-20240930200707-5b85aa3649e5 h1:c0SkBbjGLzVeMlt5gkh77HYLXjgbMb7YAI2E4faU1n4= +github.com/grafana/pyroscope-go/x/k6 v0.0.0-20240930200707-5b85aa3649e5/go.mod h1:nfbW6/4ke3ywlqLb+Zgr9t1z9Zv3m+2ImUp+vbkzHpc= github.com/grafana/regexp v0.0.0-20221123153739-15dc172cd2db h1:7aN5cccjIqCLTzedH7MZzRZt5/lsAHch6Z3L2ZGn5FA= github.com/grafana/regexp v0.0.0-20221123153739-15dc172cd2db/go.mod h1:M5qHK+eWfAv8VR/265dIuEpL3fNfeC21tXXp9itM24A= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= From 35f9a41408786b62a9c2142d4e93bf042437f7ce Mon Sep 17 00:00:00 2001 From: bryanhuhta Date: Thu, 3 Oct 2024 15:38:11 -0500 Subject: [PATCH 19/19] Update pyroscope-go version --- go.mod | 14 +++++++------- go.sum | 28 ++++++++++++++-------------- go.work.sum | 5 +++-- 3 files changed, 24 insertions(+), 23 deletions(-) diff --git a/go.mod b/go.mod index 018b5431a7..2bcb6e894e 100644 --- a/go.mod +++ b/go.mod @@ -31,9 +31,9 @@ require ( github.com/grafana/alloy/syntax v0.1.0 github.com/grafana/dskit v0.0.0-20231221015914-de83901bf4d6 github.com/grafana/jfr-parser/pprof v0.0.0-20240228024232-8abcb81c304c - github.com/grafana/pyroscope-go v1.1.1 + github.com/grafana/pyroscope-go v1.2.0 github.com/grafana/pyroscope-go/godeltaprof v0.1.8 - github.com/grafana/pyroscope-go/x/k6 v0.0.0-20240930200707-5b85aa3649e5 + github.com/grafana/pyroscope-go/x/k6 v0.0.0-20241003203156-a917cea171d3 github.com/grafana/pyroscope/api v0.4.0 github.com/grafana/regexp v0.0.0-20221123153739-15dc172cd2db github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 @@ -45,7 +45,7 @@ require ( github.com/iancoleman/strcase v0.3.0 github.com/json-iterator/go v1.1.12 github.com/k0kubun/pp/v3 v3.2.0 - github.com/klauspost/compress v1.17.9 + github.com/klauspost/compress v1.17.10 github.com/kubescape/go-git-url v0.0.27 github.com/mattn/go-isatty v0.0.19 github.com/minio/minio-go/v7 v7.0.72 @@ -75,7 +75,7 @@ require ( github.com/valyala/bytebufferpool v1.0.0 github.com/xlab/treeprint v1.2.0 go.etcd.io/bbolt v1.3.10 - go.opentelemetry.io/otel v1.24.0 + go.opentelemetry.io/otel v1.30.0 go.opentelemetry.io/proto/otlp v1.1.0 go.uber.org/atomic v1.11.0 go.uber.org/goleak v1.3.0 @@ -143,7 +143,7 @@ require ( github.com/efficientgo/e2e v0.14.1-0.20230710114240-c316eb95ae5b // indirect github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb // indirect github.com/go-logfmt/logfmt v0.6.0 // indirect - github.com/go-logr/logr v1.4.1 // indirect + github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/analysis v0.22.2 // indirect github.com/go-openapi/errors v0.21.1 // indirect @@ -226,8 +226,8 @@ require ( go.opentelemetry.io/collector/semconv v0.96.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect - go.opentelemetry.io/otel/metric v1.24.0 // indirect - go.opentelemetry.io/otel/trace v1.24.0 // indirect + go.opentelemetry.io/otel/metric v1.30.0 // indirect + go.opentelemetry.io/otel/trace v1.30.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.24.0 // indirect golang.org/x/crypto v0.24.0 // indirect diff --git a/go.sum b/go.sum index b5b51e7223..a1f59cda6a 100644 --- a/go.sum +++ b/go.sum @@ -245,8 +245,8 @@ github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= -github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-openapi/analysis v0.22.2 h1:ZBmNoP2h5omLKr/srIC9bfqrUGzT6g6gNv03HE9Vpj0= @@ -393,12 +393,12 @@ github.com/grafana/jfr-parser/pprof v0.0.0-20240228024232-8abcb81c304c h1:tGu1DT github.com/grafana/jfr-parser/pprof v0.0.0-20240228024232-8abcb81c304c/go.mod h1:P5406BrWxjahTzVF6aCSumNI1KPlZJc0zO0v+zKZ4gc= github.com/grafana/memberlist v0.3.1-0.20220708130638-bd88e10a3d91 h1:/NipyHnOmvRsVzj81j2qE0VxsvsqhOB0f4vJIhk2qCQ= github.com/grafana/memberlist v0.3.1-0.20220708130638-bd88e10a3d91/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= -github.com/grafana/pyroscope-go v1.1.1 h1:PQoUU9oWtO3ve/fgIiklYuGilvsm8qaGhlY4Vw6MAcQ= -github.com/grafana/pyroscope-go v1.1.1/go.mod h1:Mw26jU7jsL/KStNSGGuuVYdUq7Qghem5P8aXYXSXG88= +github.com/grafana/pyroscope-go v1.2.0 h1:aILLKjTj8CS8f/24OPMGPewQSYlhmdQMBmol1d3KGj8= +github.com/grafana/pyroscope-go v1.2.0/go.mod h1:2GHr28Nr05bg2pElS+dDsc98f3JTUh2f6Fz1hWXrqwk= github.com/grafana/pyroscope-go/godeltaprof v0.1.8 h1:iwOtYXeeVSAeYefJNaxDytgjKtUuKQbJqgAIjlnicKg= github.com/grafana/pyroscope-go/godeltaprof v0.1.8/go.mod h1:2+l7K7twW49Ct4wFluZD3tZ6e0SjanjcUUBPVD/UuGU= -github.com/grafana/pyroscope-go/x/k6 v0.0.0-20240930200707-5b85aa3649e5 h1:c0SkBbjGLzVeMlt5gkh77HYLXjgbMb7YAI2E4faU1n4= -github.com/grafana/pyroscope-go/x/k6 v0.0.0-20240930200707-5b85aa3649e5/go.mod h1:nfbW6/4ke3ywlqLb+Zgr9t1z9Zv3m+2ImUp+vbkzHpc= +github.com/grafana/pyroscope-go/x/k6 v0.0.0-20241003203156-a917cea171d3 h1:GtwQDlBz8aJHMy2Ko28UDRGgGzi7v4Vf20+ZyXaGy7M= +github.com/grafana/pyroscope-go/x/k6 v0.0.0-20241003203156-a917cea171d3/go.mod h1:nfbW6/4ke3ywlqLb+Zgr9t1z9Zv3m+2ImUp+vbkzHpc= github.com/grafana/regexp v0.0.0-20221123153739-15dc172cd2db h1:7aN5cccjIqCLTzedH7MZzRZt5/lsAHch6Z3L2ZGn5FA= github.com/grafana/regexp v0.0.0-20221123153739-15dc172cd2db/go.mod h1:M5qHK+eWfAv8VR/265dIuEpL3fNfeC21tXXp9itM24A= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= @@ -501,8 +501,8 @@ github.com/k0kubun/pp/v3 v3.2.0 h1:h33hNTZ9nVFNP3u2Fsgz8JXiF5JINoZfFq4SvKJwNcs= github.com/k0kubun/pp/v3 v3.2.0/go.mod h1:ODtJQbQcIRfAD3N+theGCV1m/CBxweERz2dapdz1EwA= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= -github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.17.10 h1:oXAz+Vh0PMUvJczoi+flxpnBEPxoER1IaAnU/NMPtT0= +github.com/klauspost/compress v1.17.10/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM= github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= @@ -762,14 +762,14 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.4 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= -go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= -go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= -go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= -go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= +go.opentelemetry.io/otel v1.30.0 h1:F2t8sK4qf1fAmY9ua4ohFS/K+FUuOPemHUIXHtktrts= +go.opentelemetry.io/otel v1.30.0/go.mod h1:tFw4Br9b7fOS+uEao81PJjVMjW/5fvNCbpsDIXqP0pc= +go.opentelemetry.io/otel/metric v1.30.0 h1:4xNulvn9gjzo4hjg+wzIKG7iNFEaBMX00Qd4QIZs7+w= +go.opentelemetry.io/otel/metric v1.30.0/go.mod h1:aXTfST94tswhWEb+5QjlSqG+cZlmyXy/u8jFpor3WqQ= go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw= go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= -go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= -go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= +go.opentelemetry.io/otel/trace v1.30.0 h1:7UBkkYzeg3C7kQX8VAidWh2biiQbtAKjyIML8dQ9wmc= +go.opentelemetry.io/otel/trace v1.30.0/go.mod h1:5EyKqTzzmyqB9bwtCCq6pDLktPK6fmGf/Dph+8VI02o= go.opentelemetry.io/proto/otlp v1.1.0 h1:2Di21piLrCqJ3U3eXGCTPHE9R8Nh+0uglSnOyxikMeI= go.opentelemetry.io/proto/otlp v1.1.0/go.mod h1:GpBHCBWiqvVLDqmHZsoMM3C5ySeKTC7ej/RNTae6MdY= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= diff --git a/go.work.sum b/go.work.sum index 535a18aba3..902a5cce1a 100644 --- a/go.work.sum +++ b/go.work.sum @@ -689,6 +689,7 @@ github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KE github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-openapi/analysis v0.22.0/go.mod h1:acDnkkCI2QxIo8sSIPgmp1wUlRohV7vfGtAIVae73b0= github.com/go-openapi/errors v0.21.0/go.mod h1:jxNTMUxRCKj65yb/okJGEtahVd7uvWnuWfj53bse4ho= github.com/go-openapi/runtime v0.26.0 h1:HYOFtG00FM1UvqrcxbEJg/SwvDRvYLQKGhw2zaQjTcc= @@ -1124,11 +1125,13 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0/go.mod h go.opentelemetry.io/otel/metric v1.17.0/go.mod h1:h4skoxdZI17AxwITdmdZjjYJQH5nzijUUjm+wtPph5o= go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= go.opentelemetry.io/otel/metric v1.22.0/go.mod h1:evJGjVpZv0mQ5QBRJoBF64yMuOf4xCWdXjK8pzFvliY= +go.opentelemetry.io/otel/metric v1.30.0 h1:4xNulvn9gjzo4hjg+wzIKG7iNFEaBMX00Qd4QIZs7+w= go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A= go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= go.opentelemetry.io/otel/trace v1.17.0/go.mod h1:I/4vKTgFclIsXRVucpH25X0mpFSczM7aHeaz0ZBLWjY= go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= go.opentelemetry.io/otel/trace v1.22.0/go.mod h1:RbbHXVqKES9QhzZq/fE5UnOSILqRt40a21sPw2He1xo= +go.opentelemetry.io/otel/trace v1.30.0 h1:7UBkkYzeg3C7kQX8VAidWh2biiQbtAKjyIML8dQ9wmc= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= go.uber.org/automaxprocs v1.5.3 h1:kWazyxZUrS3Gs4qUpbwo5kEIMGe/DAvi5Z4tl2NW4j8= @@ -1214,8 +1217,6 @@ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= -golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= -golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2 h1:IRJeR9r1pYWsHKTRe/IInb7lYvbBVIqOgsX/u0mbOWY= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U=