diff --git a/pkg/parser/enrich.go b/pkg/parser/enrich.go index e4a47a88673..28b3852951c 100644 --- a/pkg/parser/enrich.go +++ b/pkg/parser/enrich.go @@ -19,6 +19,7 @@ type EnricherCtx struct { Name string Path string //path to .so ? RuntimeCtx interface{} //the internal context of plugin, given back over every call + initiated bool } /* mimic plugin loading */ @@ -40,8 +41,10 @@ func Loadplugin(path string) (EnricherCtx, error) { c.RuntimeCtx, err = c.Init(map[string]string{"datadir": path}) if err != nil { - log.Fatalf("load (fake) plugin load : %v", err) + log.Warningf("load (fake) plugin load : %v", err) + c.initiated = false } + c.initiated = true return c, nil } diff --git a/pkg/parser/enrich_geoip.go b/pkg/parser/enrich_geoip.go index ce04bef4683..b0d9b7f6825 100644 --- a/pkg/parser/enrich_geoip.go +++ b/pkg/parser/enrich_geoip.go @@ -92,18 +92,18 @@ func GeoIpInit(cfg map[string]string) (interface{}, error) { var err error ctx.dbc, err = geoip2.Open(cfg["datadir"] + "/GeoLite2-City.mmdb") if err != nil { - log.Errorf("couldn't open geoip : %v", err) + log.Debugf("couldn't open geoip : %v", err) return nil, err } ctx.dba, err = geoip2.Open(cfg["datadir"] + "/GeoLite2-ASN.mmdb") if err != nil { - log.Errorf("couldn't open geoip : %v", err) + log.Debugf("couldn't open geoip : %v", err) return nil, err } ctx.dbraw, err = maxminddb.Open(cfg["datadir"] + "/GeoLite2-ASN.mmdb") if err != nil { - log.Errorf("couldn't open geoip : %v", err) + log.Debugf("couldn't open geoip : %v", err) return nil, err } diff --git a/pkg/parser/node.go b/pkg/parser/node.go index 20e8cba7b80..13048872118 100644 --- a/pkg/parser/node.go +++ b/pkg/parser/node.go @@ -88,13 +88,13 @@ func (n *Node) validate(pctx *UnixParserCtx) error { } method_found := false for _, enricherCtx := range ECTX { - if _, ok := enricherCtx.Funcs[static.Method]; ok { + if _, ok := enricherCtx.Funcs[static.Method]; ok && enricherCtx.initiated { method_found = true break } } if !method_found { - return fmt.Errorf("the method '%s' doesn't exist", static.Method) + return fmt.Errorf("the method '%s' doesn't exist or the plugin has not been initialized", static.Method) } } else { if static.Meta == "" && static.Parsed == "" && static.TargetByName == "" { diff --git a/pkg/parser/runtime.go b/pkg/parser/runtime.go index 385b23c93fe..743986bd74a 100644 --- a/pkg/parser/runtime.go +++ b/pkg/parser/runtime.go @@ -148,7 +148,7 @@ func ProcessStatics(statics []types.ExtraField, p *types.Event, clog *logrus.Ent processed := false /*still way too hackish, but : inject all the results in enriched, and */ for _, x := range ECTX { - if fptr, ok := x.Funcs[static.Method]; ok { + if fptr, ok := x.Funcs[static.Method]; ok && x.initiated { clog.Tracef("Found method '%s'", static.Method) ret, err := fptr(value, p, x.RuntimeCtx) if err != nil { @@ -165,7 +165,7 @@ func ProcessStatics(statics []types.ExtraField, p *types.Event, clog *logrus.Ent } break } else { - clog.Warningf("method '%s' doesn't exist", static.Method) + clog.Warningf("method '%s' doesn't exist or plugin not initialized", static.Method) } } if !processed {