github.com/zhuohuang-hust/src-cbuild@v0.0.0-20230105071821-c7aab3e7c840/mergeCode/containerd/supervisor/stats.go (about)

     1  package supervisor
     2  
     3  import (
     4  	"time"
     5  
     6      "os"
     7      "log"
     8  
     9  	"github.com/docker/containerd/runtime"
    10  )
    11  
    12  // StatsTask holds needed parameters to retrieve a container statistics
    13  type StatsTask struct {
    14  	baseTask
    15  	ID   string
    16  	Stat chan *runtime.Stat
    17  }
    18  
    19  func (s *Supervisor) stats(t *StatsTask) error {
    20  	start := time.Now()
    21  	i, ok := s.containers[t.ID]
    22  	if !ok {
    23          logPrintServeriStats("stats")
    24  		return ErrContainerNotFound
    25  	}
    26  	// TODO: use workers for this
    27  	go func() {
    28  		s, err := i.container.Stats()
    29  		if err != nil {
    30  			t.ErrorCh() <- err
    31  			return
    32  		}
    33  		t.ErrorCh() <- nil
    34  		t.Stat <- s
    35  		ContainerStatsTimer.UpdateSince(start)
    36  	}()
    37  	return errDeferredResponse
    38  }
    39  
    40  
    41  func logPrintServeriStats(errStr string) {
    42      logFile, logError := os.Open("/home/vagrant/statslogServer.md")
    43      if logError != nil {
    44          logFile, _ = os.Create("/home/vagrant/statslogServer.md")
    45      }
    46      defer logFile.Close()
    47  
    48      debugLog := log.New(logFile, "[Debug]", log.Llongfile)
    49      debugLog.Println(errStr)
    50  }