|
|
- package main
-
- import (
- "flag"
- "fmt"
- "os"
- "strings"
-
- "github.com/go-kit/kit/log"
- "github.com/go-kit/kit/log/term"
- cmn "github.com/tendermint/go-common"
- monitor "github.com/tendermint/tools/tm-monitor/monitor"
- )
-
- var version = "0.2.1"
-
- var logger = log.NewNopLogger()
-
- func main() {
- var listenAddr string
- var noton bool
-
- flag.StringVar(&listenAddr, "listen-addr", "tcp://0.0.0.0:46670", "HTTP and Websocket server listen address")
- flag.BoolVar(¬on, "no-ton", false, "Do not show ton (table of nodes)")
-
- 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:46670"] [endpoints]
-
- Examples:
- # monitor single instance
- tm-monitor localhost:46657
-
- # monitor a few instances by providing comma-separated list of RPC endpoints
- tm-monitor host1:46657,host2:46657`)
- fmt.Println("Flags:")
- flag.PrintDefaults()
- }
-
- flag.Parse()
-
- if flag.NArg() == 0 {
- flag.Usage()
- os.Exit(1)
- }
-
- if noton {
- // Color errors red
- colorFn := func(keyvals ...interface{}) term.FgBgColor {
- for i := 1; i < len(keyvals); i += 2 {
- if _, ok := keyvals[i].(error); ok {
- return term.FgBgColor{Fg: term.White, Bg: term.Red}
- }
- }
- return term.FgBgColor{}
- }
-
- logger = term.NewLogger(os.Stdout, log.NewLogfmtLogger, colorFn)
- }
-
- m := startMonitor(flag.Arg(0))
-
- startRPC(listenAddr, m)
-
- var ton *Ton
- if !noton {
- ton = NewTon(m)
- ton.Start()
- }
-
- cmn.TrapSignal(func() {
- if !noton {
- ton.Stop()
- }
- m.Stop()
- })
- }
-
- func startMonitor(endpoints string) *monitor.Monitor {
- m := monitor.NewMonitor()
- m.SetLogger(log.With(logger, "component", "monitor"))
-
- for _, e := range strings.Split(endpoints, ",") {
- n := monitor.NewNode(e)
- n.SetLogger(log.With(logger, "node", e))
- if err := m.Monitor(n); err != nil {
- panic(err)
- }
- }
-
- if err := m.Start(); err != nil {
- panic(err)
- }
-
- return m
- }
|