forked from influxdata/influxdb
-
Notifications
You must be signed in to change notification settings - Fork 0
/
influxd.go
125 lines (107 loc) · 2.84 KB
/
influxd.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
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package main
import (
log "code.google.com/p/log4go"
"configuration"
"coordinator"
"flag"
"fmt"
"io/ioutil"
"os"
"path/filepath"
"runtime"
"server"
"strconv"
"time"
)
const (
version = "dev"
gitSha = "HEAD"
)
func setupLogging(loggingLevel, logFile string) {
level := log.DEBUG
switch loggingLevel {
case "info":
level = log.INFO
case "warn":
level = log.WARNING
case "error":
level = log.ERROR
}
for _, filter := range log.Global {
filter.Level = level
}
if logFile == "stdout" {
flw := log.NewConsoleLogWriter()
log.AddFilter("stdout", level, flw)
} else {
logFileDir := filepath.Dir(logFile)
os.MkdirAll(logFileDir, 0744)
flw := log.NewFileLogWriter(logFile, false)
log.AddFilter("file", level, flw)
flw.SetFormat("[%D %T] [%L] (%S) %M")
flw.SetRotate(true)
flw.SetRotateSize(0)
flw.SetRotateLines(0)
flw.SetRotateDaily(true)
}
log.Info("Redirectoring logging to %s", logFile)
}
func main() {
fileName := flag.String("config", "config.toml.sample", "Config file")
wantsVersion := flag.Bool("v", false, "Get version number")
resetRootPassword := flag.Bool("reset-root", false, "Reset root password")
pidFile := flag.String("pidfile", "", "the pid file")
runtime.GOMAXPROCS(runtime.NumCPU())
flag.Parse()
startProfiler()
if wantsVersion != nil && *wantsVersion {
fmt.Printf("InfluxDB v%s (git: %s)\n", version, gitSha)
return
}
config := configuration.LoadConfiguration(*fileName)
setupLogging(config.LogLevel, config.LogFile)
if pidFile != nil && *pidFile != "" {
pid := strconv.Itoa(os.Getpid())
if err := ioutil.WriteFile(*pidFile, []byte(pid), 0644); err != nil {
panic(err)
}
}
if config.BindAddress == "" {
log.Info("Starting Influx Server...")
} else {
log.Info("Starting Influx Server bound to %s ...", config.BindAddress)
}
log.Info(`
+---------------------------------------------+
| _____ __ _ _____ ____ |
| |_ _| / _| | | __ \| _ \ |
| | | _ __ | |_| |_ ___ _| | | | |_) | |
| | | | '_ \| _| | | | \ \/ / | | | _ < |
| _| |_| | | | | | | |_| |> <| |__| | |_) | |
| |_____|_| |_|_| |_|\__,_/_/\_\_____/|____/ |
+---------------------------------------------+
`)
os.MkdirAll(config.RaftDir, 0744)
os.MkdirAll(config.DataDir, 0744)
server, err := server.NewServer(config)
if err != nil {
// sleep for the log to flush
time.Sleep(time.Second)
panic(err)
}
if *resetRootPassword {
// TODO: make this not suck
// This is ghetto as hell, but it'll work for now.
go func() {
time.Sleep(2 * time.Second) // wait for the raft server to join the cluster
log.Warn("Resetting root's password to %s", coordinator.DEFAULT_ROOT_PWD)
if err := server.RaftServer.CreateRootUser(); err != nil {
panic(err)
}
}()
}
err = server.ListenAndServe()
if err != nil {
log.Error("ListenAndServe failed: ", err)
}
}