github.com/grafana/pyroscope@v1.18.0/pkg/frontend/readpath/queryfrontend/query_get_profile_stats.go (about) 1 package queryfrontend 2 3 import ( 4 "context" 5 "fmt" 6 7 "connectrpc.com/connect" 8 "github.com/grafana/dskit/tenant" 9 10 metastorev1 "github.com/grafana/pyroscope/api/gen/proto/go/metastore/v1" 11 typesv1 "github.com/grafana/pyroscope/api/gen/proto/go/types/v1" 12 ) 13 14 func (q *QueryFrontend) GetProfileStats( 15 ctx context.Context, 16 _ *connect.Request[typesv1.GetProfileStatsRequest], 17 ) (*connect.Response[typesv1.GetProfileStatsResponse], error) { 18 tenants, err := tenant.TenantIDs(ctx) 19 if err != nil { 20 return nil, connect.NewError(connect.CodeInvalidArgument, err) 21 } 22 23 if len(tenants) != 1 { 24 return nil, connect.NewError(connect.CodeInvalidArgument, fmt.Errorf("expected 1 tenant, got %d", len(tenants))) 25 } 26 27 resp, err := q.tenantServiceClient.GetTenant(ctx, &metastorev1.GetTenantRequest{ 28 TenantId: tenants[0], 29 }) 30 if err != nil { 31 return nil, connect.NewError(connect.CodeInternal, err) 32 } 33 stats := resp.GetStats() 34 return connect.NewResponse(&typesv1.GetProfileStatsResponse{ 35 DataIngested: stats.DataIngested, 36 OldestProfileTime: stats.OldestProfileTime, 37 NewestProfileTime: stats.NewestProfileTime, 38 }), nil 39 }