Plugins: Adds logging around loading of plugins for better tracking (#76896)

This commit is contained in:
Marcus Efraimsson
2023-10-25 14:01:30 +02:00
committed by GitHub
parent 322a9c0b15
commit 9bf7eb5fbc
3 changed files with 41 additions and 2 deletions

View File

@ -2,6 +2,9 @@ package loader
import (
"context"
"sort"
"strings"
"time"
"github.com/grafana/grafana/pkg/plugins"
"github.com/grafana/grafana/pkg/plugins/log"
@ -34,6 +37,8 @@ func New(discovery discovery.Discoverer, bootstrap bootstrap.Bootstrapper, valid
}
func (l *Loader) Load(ctx context.Context, src plugins.PluginSource) ([]*plugins.Plugin, error) {
end := l.instrumentLoad(ctx, src)
discoveredPlugins, err := l.discovery.Discover(ctx, src)
if err != nil {
return nil, err
@ -54,9 +59,30 @@ func (l *Loader) Load(ctx context.Context, src plugins.PluginSource) ([]*plugins
return nil, err
}
end(initializedPlugins)
return initializedPlugins, nil
}
func (l *Loader) Unload(ctx context.Context, p *plugins.Plugin) (*plugins.Plugin, error) {
return l.termination.Terminate(ctx, p)
}
func (l *Loader) instrumentLoad(ctx context.Context, src plugins.PluginSource) func([]*plugins.Plugin) {
start := time.Now()
sourceLogger := l.log.New("source", src.PluginClass(ctx)).FromContext(ctx)
sourceLogger.Debug("Loading plugin source...")
return func(logger log.Logger, start time.Time) func([]*plugins.Plugin) {
return func(plugins []*plugins.Plugin) {
names := make([]string, len(plugins))
for i, p := range plugins {
names[i] = p.ID
}
sort.Strings(names)
pluginsStr := strings.Join(names, ", ")
logger.Debug("Plugin source loaded", "plugins", pluginsStr, "duration", time.Since(start))
}
}(sourceLogger, start)
}