mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Init dualwriter metrics (#89003)
* Pass prometheus registerer to the dual writer * Fix tests * Remove unused var * Fix tests * Uncomment test * Remove leading line * Fix tests. Reuse registerer if there's already one * Lint * Improve double registering logic * Rebase main
This commit is contained in:
@@ -24,6 +24,7 @@ import (
|
||||
|
||||
servicev0alpha1 "github.com/grafana/grafana/pkg/apis/service/v0alpha1"
|
||||
"github.com/grafana/grafana/pkg/registry/apis/service"
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
"gopkg.in/yaml.v3"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
@@ -172,7 +173,7 @@ func CreateAggregatorConfig(commandOptions *options.Options, sharedConfig generi
|
||||
return NewConfig(aggregatorConfig, sharedInformerFactory, []builder.APIGroupBuilder{serviceAPIBuilder}, remoteServicesConfig), nil
|
||||
}
|
||||
|
||||
func CreateAggregatorServer(config *Config, delegateAPIServer genericapiserver.DelegationTarget) (*aggregatorapiserver.APIAggregator, error) {
|
||||
func CreateAggregatorServer(config *Config, delegateAPIServer genericapiserver.DelegationTarget, reg prometheus.Registerer) (*aggregatorapiserver.APIAggregator, error) {
|
||||
aggregatorConfig := config.KubeAggregatorConfig
|
||||
sharedInformerFactory := config.Informers
|
||||
remoteServicesConfig := config.RemoteServicesConfig
|
||||
@@ -285,7 +286,13 @@ func CreateAggregatorServer(config *Config, delegateAPIServer genericapiserver.D
|
||||
})
|
||||
|
||||
for _, b := range config.Builders {
|
||||
serviceAPIGroupInfo, err := b.GetAPIGroupInfo(aggregatorscheme.Scheme, aggregatorscheme.Codecs, aggregatorConfig.GenericConfig.RESTOptionsGetter, grafanarest.Mode0)
|
||||
serviceAPIGroupInfo, err := b.GetAPIGroupInfo(
|
||||
aggregatorscheme.Scheme,
|
||||
aggregatorscheme.Codecs,
|
||||
aggregatorConfig.GenericConfig.RESTOptionsGetter,
|
||||
grafanarest.Mode0,
|
||||
reg,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import (
|
||||
"path"
|
||||
|
||||
"github.com/grafana/dskit/services"
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
"google.golang.org/grpc"
|
||||
"google.golang.org/grpc/credentials/insecure"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
@@ -24,6 +25,7 @@ import (
|
||||
filestorage "github.com/grafana/grafana/pkg/apiserver/storage/file"
|
||||
"github.com/grafana/grafana/pkg/infra/appcontext"
|
||||
"github.com/grafana/grafana/pkg/infra/db"
|
||||
"github.com/grafana/grafana/pkg/infra/metrics"
|
||||
"github.com/grafana/grafana/pkg/infra/tracing"
|
||||
"github.com/grafana/grafana/pkg/middleware"
|
||||
"github.com/grafana/grafana/pkg/modules"
|
||||
@@ -109,6 +111,7 @@ type service struct {
|
||||
builders []builder.APIGroupBuilder
|
||||
|
||||
tracing *tracing.TracingService
|
||||
metrics prometheus.Registerer
|
||||
|
||||
authorizer *authorizer.GrafanaAuthorizer
|
||||
}
|
||||
@@ -131,6 +134,7 @@ func ProvideService(
|
||||
authorizer: authorizer.NewGrafanaAuthorizer(cfg, orgService),
|
||||
tracing: tracing,
|
||||
db: db, // For Unified storage
|
||||
metrics: metrics.ProvideRegisterer(),
|
||||
}
|
||||
|
||||
// This will be used when running as a dskit service
|
||||
@@ -314,7 +318,7 @@ func (s *service) start(ctx context.Context) error {
|
||||
}
|
||||
|
||||
// Install the API group+version
|
||||
err = builder.InstallAPIs(Scheme, Codecs, server, serverConfig.RESTOptionsGetter, builders, o.StorageOptions)
|
||||
err = builder.InstallAPIs(Scheme, Codecs, server, serverConfig.RESTOptionsGetter, builders, o.StorageOptions, s.metrics)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -324,7 +328,7 @@ func (s *service) start(ctx context.Context) error {
|
||||
|
||||
var runningServer *genericapiserver.GenericAPIServer
|
||||
if s.features.IsEnabledGlobally(featuremgmt.FlagKubernetesAggregator) {
|
||||
runningServer, err = s.startAggregator(transport, serverConfig, server)
|
||||
runningServer, err = s.startAggregator(transport, serverConfig, server, s.metrics)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -374,6 +378,7 @@ func (s *service) startAggregator(
|
||||
transport *roundTripperFunc,
|
||||
serverConfig *genericapiserver.RecommendedConfig,
|
||||
server *genericapiserver.GenericAPIServer,
|
||||
reg prometheus.Registerer,
|
||||
) (*genericapiserver.GenericAPIServer, error) {
|
||||
namespaceMapper := request.GetNamespaceMapper(s.cfg)
|
||||
|
||||
@@ -382,7 +387,7 @@ func (s *service) startAggregator(
|
||||
return nil, err
|
||||
}
|
||||
|
||||
aggregatorServer, err := aggregator.CreateAggregatorServer(aggregatorConfig, server)
|
||||
aggregatorServer, err := aggregator.CreateAggregatorServer(aggregatorConfig, server, reg)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ type MetricsOptions struct {
|
||||
MetricsRegisterer prometheus.Registerer
|
||||
}
|
||||
|
||||
func NewMetrcicsOptions(logger log.Logger) *MetricsOptions {
|
||||
func NewMetricsOptions(logger log.Logger) *MetricsOptions {
|
||||
return &MetricsOptions{
|
||||
logger: logger,
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ func New(logger log.Logger, codec runtime.Codec) *Options {
|
||||
ExtraOptions: options.NewExtraOptions(),
|
||||
RecommendedOptions: options.NewRecommendedOptions(codec),
|
||||
TracingOptions: NewTracingOptions(logger),
|
||||
MetricsOptions: NewMetrcicsOptions(logger),
|
||||
MetricsOptions: NewMetricsOptions(logger),
|
||||
ServerRunOptions: genericoptions.NewServerRunOptions(),
|
||||
StorageOptions: options.NewStorageOptions(),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user