-
Notifications
You must be signed in to change notification settings - Fork 230
/
Copy pathmonitor.go
94 lines (80 loc) · 2.54 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
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
//: ----------------------------------------------------------------------------
//: Copyright (C) 2017 Verizon. All Rights Reserved.
//: All Rights Reserved
//:
//: file: monitor.go
//: details: TODO
//: author: Mehrdad Arshad Rad
//: date: 02/01/2017
//:
//: Licensed under the Apache License, Version 2.0 (the "License");
//: you may not use this file except in compliance with the License.
//: You may obtain a copy of the License at
//:
//: http://www.apache.org/licenses/LICENSE-2.0
//:
//: Unless required by applicable law or agreed to in writing, software
//: distributed under the License is distributed on an "AS IS" BASIS,
//: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//: See the License for the specific language governing permissions and
//: limitations under the License.
//: ----------------------------------------------------------------------------
package main
import (
"flag"
"log"
"os"
"github.com/EdgeCast/vflow/monitor/store"
)
type options struct {
DBType string
VFlowHost string
InfluxDBAPI string
InfluxDBName string
TSDBAPI string
Hostname string
}
var opts = options{
DBType: "influxdb",
VFlowHost: "http://localhost:8081",
InfluxDBAPI: "http://localhost:8086",
TSDBAPI: "http://localhost:4242",
InfluxDBName: "vflow",
Hostname: "na",
}
func init() {
flag.StringVar(&opts.DBType, "db-type", opts.DBType, "database type name to ingest")
flag.StringVar(&opts.VFlowHost, "vflow-host", opts.VFlowHost, "vflow host address and port")
flag.StringVar(&opts.InfluxDBAPI, "influxdb-api-addr", opts.InfluxDBAPI, "influxdb api address")
flag.StringVar(&opts.InfluxDBName, "influxdb-db-name", opts.InfluxDBName, "influxdb database name")
flag.StringVar(&opts.TSDBAPI, "tsdb-api-addr", opts.TSDBAPI, "tsdb api address")
flag.StringVar(&opts.Hostname, "hostname", opts.Hostname, "overwrite hostname")
flag.Parse()
}
func main() {
var m = make(map[string]store.Monitor)
var err error
m["influxdb"] = store.InfluxDB{
API: opts.InfluxDBAPI,
DB: opts.InfluxDBName,
VHost: opts.VFlowHost,
}
m["tsdb"] = store.TSDB{
API: opts.TSDBAPI,
VHost: opts.VFlowHost,
}
if _, ok := m[opts.DBType]; !ok {
log.Fatalf("the storage: %s is not available", opts.DBType)
}
if opts.Hostname == "na" {
if opts.Hostname, err = os.Hostname(); err != nil {
log.Println("unknown hostname")
}
}
if err := m[opts.DBType].Netflow(opts.Hostname); err != nil {
log.Println(err)
}
if err := m[opts.DBType].System(opts.Hostname); err != nil {
log.Println(err)
}
}