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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
// Main package for the mongotop tool.
package main
import (
"github.com/mongodb/mongo-tools/common/db"
commonopts "github.com/mongodb/mongo-tools/common/options"
"github.com/mongodb/mongo-tools/common/util"
"github.com/mongodb/mongo-tools/mongotop"
"github.com/mongodb/mongo-tools/mongotop/options"
"github.com/mongodb/mongo-tools/mongotop/output"
"strconv"
"time"
)
const (
// the default sleep time, in seconds
DEFAULT_SLEEP_TIME = 1
)
func main() {
// initialize command-line opts
opts := commonopts.New("mongotop", "<options> <sleeptime>")
// add mongotop-specific options
outputOpts := &options.Output{}
opts.AddOptions(outputOpts)
extra, err := opts.Parse()
if err != nil {
util.Panicf("error parsing command line options: %v", err)
}
// print help, if specified
if opts.PrintHelp() {
return
}
// print version, if specified
if opts.PrintVersion() {
return
}
// pull out the sleeptime
// TODO: validate args length
sleeptime := DEFAULT_SLEEP_TIME
if len(extra) > 0 {
sleeptime, err = strconv.Atoi(extra[0])
if err != nil {
util.Panicf("bad sleep time: %v", extra[0])
}
}
// create a session provider to connect to the db
sessionProvider, err := db.InitSessionProvider(*opts)
if err != nil {
util.Panicf("error initializing database session: %v", err)
}
// instantiate a mongotop instance
top := &mongotop.MongoTop{
Options: opts,
OutputOptions: outputOpts,
Outputter: &output.TerminalOutputter{},
SessionProvider: sessionProvider,
Sleeptime: time.Duration(sleeptime) * time.Second,
Once: outputOpts.Once,
}
// kick it off
if err := top.Run(); err != nil {
util.Panicf("error running mongotop: %v", err)
}
}
|