Added an oomwatcher function to manager
This commit is contained in:
parent
d3d4bb8dbc
commit
3856690715
@ -28,9 +28,11 @@ import (
|
|||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
"github.com/google/cadvisor/container"
|
"github.com/google/cadvisor/container"
|
||||||
"github.com/google/cadvisor/container/docker"
|
"github.com/google/cadvisor/container/docker"
|
||||||
|
"github.com/google/cadvisor/events"
|
||||||
"github.com/google/cadvisor/info"
|
"github.com/google/cadvisor/info"
|
||||||
"github.com/google/cadvisor/storage/memory"
|
"github.com/google/cadvisor/storage/memory"
|
||||||
"github.com/google/cadvisor/utils/cpuload"
|
"github.com/google/cadvisor/utils/cpuload"
|
||||||
|
"github.com/google/cadvisor/utils/oomparser"
|
||||||
"github.com/google/cadvisor/utils/sysfs"
|
"github.com/google/cadvisor/utils/sysfs"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -623,3 +625,27 @@ func (self *manager) watchForNewContainers(quit chan error) error {
|
|||||||
}()
|
}()
|
||||||
return nil
|
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 {
|
||||||
|
return 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
|
||||||
|
}
|
||||||
|
@ -162,7 +162,9 @@ func (self *OomParser) StreamOoms(outStream chan *OomInstance) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
go self.analyzeLines(file, outStream)
|
go func() {
|
||||||
|
self.analyzeLines(file, outStream)
|
||||||
|
}()
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user