mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
backend plugins: improves logging
This commit is contained in:
parent
75a54e85dc
commit
44e485af41
@ -92,7 +92,7 @@ func pluginScenario(desc string, t *testing.T, fn func()) {
|
||||
setting.Cfg = ini.Empty()
|
||||
sec, _ := setting.Cfg.NewSection("plugin.test-app")
|
||||
sec.NewKey("path", "../../tests/test-app")
|
||||
err := Init(context.TODO())
|
||||
err := initPlugins(context.TODO())
|
||||
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
|
@ -18,7 +18,7 @@ func TestPluginDashboards(t *testing.T) {
|
||||
setting.Cfg = ini.Empty()
|
||||
sec, _ := setting.Cfg.NewSection("plugin.test-app")
|
||||
sec.NewKey("path", "../../tests/test-app")
|
||||
err := Init(context.TODO())
|
||||
err := initPlugins(context.TODO())
|
||||
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
|
@ -73,10 +73,12 @@ func buildExecutablePath(pluginDir, executable, os, arch string) string {
|
||||
func (p *DataSourcePlugin) initBackendPlugin(ctx context.Context, log log.Logger) error {
|
||||
p.log = log.New("plugin-id", p.Id)
|
||||
|
||||
p.spawnSubProcess()
|
||||
go p.reattachKilledProcess(ctx)
|
||||
err := p.spawnSubProcess()
|
||||
if err == nil {
|
||||
go p.restartKilledProcess(ctx)
|
||||
}
|
||||
|
||||
return nil
|
||||
return err
|
||||
}
|
||||
|
||||
func (p *DataSourcePlugin) spawnSubProcess() error {
|
||||
@ -109,7 +111,7 @@ func (p *DataSourcePlugin) spawnSubProcess() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *DataSourcePlugin) reattachKilledProcess(ctx context.Context) error {
|
||||
func (p *DataSourcePlugin) restartKilledProcess(ctx context.Context) error {
|
||||
ticker := time.NewTicker(time.Second * 1)
|
||||
|
||||
for {
|
||||
|
@ -23,8 +23,7 @@ var (
|
||||
StaticRoutes []*PluginStaticRoute
|
||||
Apps map[string]*AppPlugin
|
||||
Plugins map[string]*PluginBase
|
||||
//BackendDatasources map[string]*BackendDatasource
|
||||
PluginTypes map[string]interface{}
|
||||
PluginTypes map[string]interface{}
|
||||
|
||||
GrafanaLatestVersion string
|
||||
GrafanaHasUpdate bool
|
||||
@ -43,7 +42,12 @@ type PluginManager struct {
|
||||
}
|
||||
|
||||
func NewPluginManager(ctx context.Context) (*PluginManager, error) {
|
||||
Init(ctx)
|
||||
err := initPlugins(ctx)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &PluginManager{
|
||||
log: log.New("plugins"),
|
||||
}, nil
|
||||
@ -60,14 +64,14 @@ func (p *PluginManager) Run(ctx context.Context) error {
|
||||
return ctx.Err()
|
||||
}
|
||||
|
||||
func Init(ctx context.Context) error {
|
||||
func initPlugins(ctx context.Context) error {
|
||||
plog = log.New("plugins")
|
||||
|
||||
DataSources = make(map[string]*DataSourcePlugin)
|
||||
StaticRoutes = make([]*PluginStaticRoute, 0)
|
||||
Panels = make(map[string]*PanelPlugin)
|
||||
Apps = make(map[string]*AppPlugin)
|
||||
Plugins = make(map[string]*PluginBase)
|
||||
DataSources = map[string]*DataSourcePlugin{}
|
||||
StaticRoutes = []*PluginStaticRoute{}
|
||||
Panels = map[string]*PanelPlugin{}
|
||||
Apps = map[string]*AppPlugin{}
|
||||
Plugins = map[string]*PluginBase{}
|
||||
PluginTypes = map[string]interface{}{
|
||||
"panel": PanelPlugin{},
|
||||
"datasource": DataSourcePlugin{},
|
||||
@ -79,9 +83,8 @@ func Init(ctx context.Context) error {
|
||||
|
||||
// check if plugins dir exists
|
||||
if _, err := os.Stat(setting.PluginsPath); os.IsNotExist(err) {
|
||||
plog.Warn("Plugin dir does not exist", "dir", setting.PluginsPath)
|
||||
if err = os.MkdirAll(setting.PluginsPath, os.ModePerm); err != nil {
|
||||
plog.Warn("Failed to create plugin dir", "dir", setting.PluginsPath, "error", err)
|
||||
plog.Error("Failed to create plugin dir", "dir", setting.PluginsPath, "error", err)
|
||||
} else {
|
||||
plog.Info("Plugin dir created", "dir", setting.PluginsPath)
|
||||
scan(setting.PluginsPath)
|
||||
@ -96,13 +99,18 @@ func Init(ctx context.Context) error {
|
||||
for _, panel := range Panels {
|
||||
panel.initFrontendPlugin()
|
||||
}
|
||||
|
||||
for _, ds := range DataSources {
|
||||
if ds.Backend {
|
||||
ds.initBackendPlugin(ctx, plog)
|
||||
err := ds.initBackendPlugin(ctx, plog)
|
||||
if err != nil {
|
||||
plog.Error("Failed to init plugin.", "error", err, "plugin", ds.Id)
|
||||
}
|
||||
}
|
||||
|
||||
ds.initFrontendPlugin()
|
||||
}
|
||||
|
||||
for _, app := range Apps {
|
||||
app.initApp()
|
||||
}
|
||||
|
@ -15,7 +15,7 @@ func TestPluginScans(t *testing.T) {
|
||||
Convey("When scaning for plugins", t, func() {
|
||||
setting.StaticRootPath, _ = filepath.Abs("../../public/")
|
||||
setting.Cfg = ini.Empty()
|
||||
err := Init(context.TODO())
|
||||
err := initPlugins(context.TODO())
|
||||
|
||||
So(err, ShouldBeNil)
|
||||
So(len(DataSources), ShouldBeGreaterThan, 1)
|
||||
@ -30,7 +30,7 @@ func TestPluginScans(t *testing.T) {
|
||||
setting.Cfg = ini.Empty()
|
||||
sec, _ := setting.Cfg.NewSection("plugin.nginx-app")
|
||||
sec.NewKey("path", "../../tests/test-app")
|
||||
err := Init(context.TODO())
|
||||
err := initPlugins(context.TODO())
|
||||
|
||||
So(err, ShouldBeNil)
|
||||
So(len(Apps), ShouldBeGreaterThan, 0)
|
||||
|
Loading…
Reference in New Issue
Block a user