From 3a4519db772afbba0a52ab218a76a7c41f7bb006 Mon Sep 17 00:00:00 2001 From: Katie Knister Date: Thu, 19 Feb 2015 11:43:34 -0800 Subject: [PATCH] Added an oomwatcher function to manager --- manager/manager.go | 26 ++++++++++++++++++++++++++ utils/oomparser/oomparser.go | 4 +++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/manager/manager.go b/manager/manager.go index 85485233a88..62a60c611f2 100644 --- a/manager/manager.go +++ b/manager/manager.go @@ -28,9 +28,11 @@ import ( "github.com/golang/glog" "github.com/google/cadvisor/container" "github.com/google/cadvisor/container/docker" + "github.com/google/cadvisor/events" "github.com/google/cadvisor/info" "github.com/google/cadvisor/storage/memory" "github.com/google/cadvisor/utils/cpuload" + "github.com/google/cadvisor/utils/oomparser" "github.com/google/cadvisor/utils/sysfs" ) @@ -623,3 +625,27 @@ func (self *manager) watchForNewContainers(quit chan error) error { }() return nil } + +func (self *manager) watchForNewOoms() error { + outStream := make(chan *oomparser.OomInstance, 10) + oomLog, err := oomparser.New() + if err != nil { + return err + } + err = oomLog.StreamOoms(outStream) + if err != nil { + glog.Errorf("error streaming OOMs: %v", err) + } + go func() { + for oomInstance := range outStream { + newEvent := &events.Event{ + ContainerName: oomInstance.ContainerName, + Timestamp: oomInstance.TimeOfDeath, + EventType: events.TypeOom, + EventData: oomInstance, + } + glog.V(1).Infof("Created an oom event: %v", newEvent) + } + } () + return nil +} diff --git a/utils/oomparser/oomparser.go b/utils/oomparser/oomparser.go index ad1f5318ab2..9e331b791b1 100644 --- a/utils/oomparser/oomparser.go +++ b/utils/oomparser/oomparser.go @@ -162,7 +162,9 @@ func (self *OomParser) StreamOoms(outStream chan *OomInstance) error { if err != nil { return err } - go self.analyzeLines(file, outStream) + go func() { + self.analyzeLines(file, outStream) + }() return nil }