/
monitor.go
41 lines (36 loc) 路 1.12 KB
/
monitor.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package main
import (
"context"
"fmt"
"time"
"github.com/MixinNetwork/mixin/logger"
"github.com/MixinNetwork/tip/messenger"
"github.com/MixinNetwork/trusted-group/mvm/machine"
)
func RunMonitor(ctx context.Context, messenger messenger.Messenger, store machine.Store) {
startedAt := time.Now()
for {
msg, err := bundleMachineState(ctx, store, startedAt)
if err != nil {
logger.Verbosef("Monitor.bundleMachineState() => %v", err)
continue
}
err = messenger.BroadcastPlainMessage(ctx, msg)
logger.Verbosef("Monitor.BroadcastPlainMessage(%x) => %v", msg, err)
time.Sleep(30 * time.Minute)
}
}
func bundleMachineState(ctx context.Context, store machine.Store, startedAt time.Time) (string, error) {
state := fmt.Sprintf("鈴诧笍 Run time :%s\n", time.Now().Sub(startedAt).String())
procs, err := store.ListProcesses()
if err != nil {
return "", err
}
state = state + fmt.Sprintf("馃巻 Total processes count: %d\n", len(procs))
events, err := store.ListPendingGroupEvents(100)
if err != nil {
return "", err
}
state = state + fmt.Sprintf("馃毚 Pending group events count: %d", len(events))
return state, nil
}