tendermint/tm-monitor/main.go

89 lines
1.7 KiB
Go
Raw Normal View History

2017-02-24 06:54:36 -08:00
package main
import (
"flag"
"fmt"
"os"
"strings"
2017-05-20 14:44:44 -07:00
cmn "github.com/tendermint/tmlibs/common"
"github.com/tendermint/tmlibs/log"
monitor "github.com/tendermint/tools/tm-monitor/monitor"
2017-02-24 06:54:36 -08:00
)
2018-04-03 04:03:31 -07:00
var version = "0.4.0"
2017-03-02 10:03:35 -08:00
var logger = log.NewNopLogger()
2017-02-24 06:54:36 -08:00
func main() {
var listenAddr string
var noton bool
2017-02-24 06:54:36 -08:00
flag.StringVar(&listenAddr, "listen-addr", "tcp://0.0.0.0:26670", "HTTP and Websocket server listen address")
flag.BoolVar(&noton, "no-ton", false, "Do not show ton (table of nodes)")
2017-02-24 06:54:36 -08:00
flag.Usage = func() {
fmt.Println(`Tendermint monitor watches over one or more Tendermint core
applications, collecting and providing various statistics to the user.
Usage:
tm-monitor [-no-ton] [-listen-addr="tcp://0.0.0.0:26670"] [endpoints]
2017-02-24 06:54:36 -08:00
Examples:
# monitor single instance
tm-monitor localhost:26657
2017-02-24 06:54:36 -08:00
# monitor a few instances by providing comma-separated list of RPC endpoints
tm-monitor host1:26657,host2:26657`)
2017-02-24 06:54:36 -08:00
fmt.Println("Flags:")
flag.PrintDefaults()
}
flag.Parse()
if flag.NArg() == 0 {
flag.Usage()
os.Exit(1)
}
if noton {
2017-08-03 13:01:28 -07:00
logger = log.NewTMLogger(log.NewSyncWriter(os.Stdout))
}
2017-02-24 06:54:36 -08:00
m := startMonitor(flag.Arg(0))
startRPC(listenAddr, m, logger)
2017-02-24 06:54:36 -08:00
var ton *Ton
if !noton {
ton = NewTon(m)
ton.Start()
}
2017-02-24 06:54:36 -08:00
cmn.TrapSignal(func() {
if !noton {
ton.Stop()
}
2017-02-24 06:54:36 -08:00
m.Stop()
})
}
func startMonitor(endpoints string) *monitor.Monitor {
m := monitor.NewMonitor()
m.SetLogger(logger.With("component", "monitor"))
2017-02-24 06:54:36 -08:00
for _, e := range strings.Split(endpoints, ",") {
n := monitor.NewNode(e)
n.SetLogger(logger.With("node", e))
if err := m.Monitor(n); err != nil {
panic(err)
2017-02-24 06:54:36 -08:00
}
}
if err := m.Start(); err != nil {
panic(err)
2017-02-24 06:54:36 -08:00
}
return m
}