mirror of
https://github.com/langhuihui/monibuca.git
synced 2025-10-05 07:06:55 +08:00
72 lines
1.8 KiB
Go
72 lines
1.8 KiB
Go
package plugin_monitor
|
|
|
|
import (
|
|
"encoding/json"
|
|
"m7s.live/m7s/v5"
|
|
"m7s.live/m7s/v5/pkg/task"
|
|
"m7s.live/m7s/v5/plugin/monitor/pb"
|
|
monitor "m7s.live/m7s/v5/plugin/monitor/pkg"
|
|
"os"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
var _ = m7s.InstallPlugin[MonitorPlugin](&pb.Api_ServiceDesc, pb.RegisterApiHandler)
|
|
|
|
type MonitorPlugin struct {
|
|
pb.UnimplementedApiServer
|
|
m7s.Plugin
|
|
session *monitor.Session
|
|
//columnstore *frostdb.ColumnStore
|
|
}
|
|
|
|
func (cfg *MonitorPlugin) OnStop() {
|
|
if cfg.DB != nil {
|
|
//cfg.saveUnDisposeTask(cfg.Plugin.Server)
|
|
cfg.DB.Model(cfg.session).Update("end_time", time.Now())
|
|
}
|
|
}
|
|
|
|
func (cfg *MonitorPlugin) saveTask(task task.ITask) {
|
|
var th monitor.Task
|
|
th.SessionID = cfg.session.ID
|
|
th.TaskID = task.GetTaskID()
|
|
th.ParentID = task.GetParent().GetTaskID()
|
|
th.StartTime = task.GetTask().StartTime
|
|
th.EndTime = time.Now()
|
|
th.OwnerType = task.GetOwnerType()
|
|
th.TaskType = byte(task.GetTaskType())
|
|
th.Reason = task.StopReason().Error()
|
|
th.Level = task.GetLevel()
|
|
b, _ := json.Marshal(task.GetDescriptions())
|
|
th.Description = string(b)
|
|
cfg.DB.Create(&th)
|
|
}
|
|
|
|
func (cfg *MonitorPlugin) OnInit() (err error) {
|
|
//cfg.columnstore, err = frostdb.New()
|
|
//database, _ := cfg.columnstore.DB(cfg, "monitor")
|
|
if cfg.DB != nil {
|
|
session := &monitor.Session{StartTime: time.Now(), PID: os.Getpid(), Args: strings.Join(os.Args, " ")}
|
|
err = cfg.DB.AutoMigrate(session)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
err = cfg.DB.Create(session).Error
|
|
if err != nil {
|
|
return err
|
|
}
|
|
cfg.session = session
|
|
cfg.Info("monitor session start", "session", session.ID)
|
|
err = cfg.DB.AutoMigrate(&monitor.Task{})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
cfg.Plugin.Server.OnBeforeDispose(func() {
|
|
cfg.saveTask(cfg.Plugin.Server)
|
|
})
|
|
cfg.Plugin.Server.OnChildDispose(cfg.saveTask)
|
|
}
|
|
return
|
|
}
|