Add more metrics to the IAM Folder Reconciler (#111275)

* Add more metrics to the operator

* Add namespace when logging metrics

* Skip flaky test
This commit is contained in:
Mihai Turdean
2025-09-18 09:03:32 -06:00
committed by GitHub
parent 28952cc490
commit aaa8094a53
13 changed files with 471 additions and 339 deletions
+6 -13
View File
@@ -16,9 +16,8 @@ import (
folder "github.com/grafana/grafana/apps/folder/pkg/apis/folder/v1beta1"
"github.com/grafana/grafana/apps/iam/pkg/app"
"github.com/grafana/grafana/pkg/server"
"github.com/grafana/grafana/pkg/services/apiserver/standalone"
"github.com/grafana/grafana/pkg/setting"
"github.com/urfave/cli/v2"
"github.com/prometheus/client_golang/prometheus"
"k8s.io/client-go/rest"
"k8s.io/client-go/transport"
@@ -26,22 +25,14 @@ import (
utilnet "k8s.io/apimachinery/pkg/util/net"
)
func init() {
server.RegisterOperator(server.Operator{
Name: "iam-folder-reconciler",
Description: "Watch folder resources and manage IAM permissions with Zanzana",
RunFunc: RunIAMFolderReconciler,
})
}
func RunIAMFolderReconciler(opts standalone.BuildInfo, c *cli.Context, cfg *setting.Cfg) error {
func RunIAMFolderReconciler(deps server.OperatorDependencies) error {
logger := logging.NewSLogLogger(slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{
Level: slog.LevelDebug,
})).With("logger", "iam-folder-reconciler")
logger.Info("Starting IAM folder reconciler operator")
// Get configuration from Grafana settings
iamConfig, err := buildIAMConfigFromSettings(cfg)
iamConfig, err := buildIAMConfigFromSettings(deps.Config, deps.Registerer)
if err != nil {
return fmt.Errorf("failed to build IAM config: %w", err)
}
@@ -78,7 +69,7 @@ type iamConfig struct {
AppConfig app.AppConfig
}
func buildIAMConfigFromSettings(cfg *setting.Cfg) (*iamConfig, error) {
func buildIAMConfigFromSettings(cfg *setting.Cfg, registerer prometheus.Registerer) (*iamConfig, error) {
if cfg == nil {
return nil, fmt.Errorf("no configuration available")
}
@@ -132,6 +123,8 @@ func buildIAMConfigFromSettings(cfg *setting.Cfg) (*iamConfig, error) {
metricsSection := cfg.SectionWithEnvOverrides("metrics")
iamCfg.RunnerConfig.MetricsConfig.Enabled = metricsSection.Key("enabled").MustBool(true)
iamCfg.RunnerConfig.MetricsConfig.Namespace = metricsSection.Key("namespace").MustString("grafana-iam")
iamCfg.AppConfig.Namespace = iamCfg.RunnerConfig.MetricsConfig.Namespace
iamCfg.AppConfig.MetricsRegisterer = registerer
return &iamCfg, nil
}
+3 -4
View File
@@ -10,7 +10,6 @@ import (
"time"
"github.com/grafana/grafana-app-sdk/logging"
"github.com/urfave/cli/v2"
"k8s.io/client-go/tools/cache"
"github.com/grafana/grafana/pkg/registry/apis/provisioning/jobs"
@@ -19,7 +18,7 @@ import (
"github.com/grafana/grafana/pkg/registry/apis/provisioning/jobs/move"
"github.com/grafana/grafana/pkg/registry/apis/provisioning/jobs/sync"
"github.com/grafana/grafana/pkg/registry/apis/provisioning/resources"
"github.com/grafana/grafana/pkg/services/apiserver/standalone"
"github.com/grafana/grafana/pkg/server"
"github.com/grafana/grafana/pkg/setting"
"github.com/grafana/grafana/apps/provisioning/pkg/controller"
@@ -28,13 +27,13 @@ import (
deletepkg "github.com/grafana/grafana/pkg/registry/apis/provisioning/jobs/delete"
)
func RunJobController(opts standalone.BuildInfo, c *cli.Context, cfg *setting.Cfg) error {
func RunJobController(deps server.OperatorDependencies) error {
logger := logging.NewSLogLogger(slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{
Level: slog.LevelDebug,
})).With("logger", "provisioning-job-controller")
logger.Info("Starting provisioning job controller")
controllerCfg, err := setupJobsControllerFromConfig(cfg)
controllerCfg, err := setupJobsControllerFromConfig(deps.Config)
if err != nil {
return fmt.Errorf("failed to setup operator: %w", err)
}
+3 -4
View File
@@ -11,25 +11,24 @@ import (
"github.com/grafana/grafana-app-sdk/logging"
appcontroller "github.com/grafana/grafana/apps/provisioning/pkg/controller"
"github.com/urfave/cli/v2"
"k8s.io/client-go/tools/cache"
"github.com/grafana/grafana/pkg/registry/apis/provisioning/controller"
"github.com/grafana/grafana/pkg/registry/apis/provisioning/jobs"
"github.com/grafana/grafana/pkg/registry/apis/provisioning/resources"
"github.com/grafana/grafana/pkg/services/apiserver/standalone"
"github.com/grafana/grafana/pkg/server"
"github.com/grafana/grafana/pkg/setting"
informer "github.com/grafana/grafana/apps/provisioning/pkg/generated/informers/externalversions"
)
func RunRepoController(opts standalone.BuildInfo, c *cli.Context, cfg *setting.Cfg) error {
func RunRepoController(deps server.OperatorDependencies) error {
logger := logging.NewSLogLogger(slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{
Level: slog.LevelDebug,
})).With("logger", "provisioning-repo-controller")
logger.Info("Starting provisioning repo controller")
controllerCfg, err := getRepoControllerConfig(cfg)
controllerCfg, err := getRepoControllerConfig(deps.Config)
if err != nil {
return fmt.Errorf("failed to setup operator: %w", err)
}