2015-07-20 14:08:22 +02:00
|
|
|
// lastlogin_consolidate
|
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"flag"
|
|
|
|
"fmt"
|
2015-11-20 17:11:36 +01:00
|
|
|
// "gopkg.in/mgo.v2"
|
2015-11-25 15:08:29 +01:00
|
|
|
// "gopkg.in/mgo.v2/bson"
|
2015-07-20 14:08:22 +02:00
|
|
|
"log"
|
|
|
|
"os"
|
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
2016-04-21 16:11:27 +02:00
|
|
|
_VERSION = "v1.3.1"
|
2015-07-20 14:08:22 +02:00
|
|
|
_tformat = "2006-01-02"
|
2015-07-21 12:04:07 +02:00
|
|
|
_24h = (time.Hour * 23) + (time.Minute * 59) + (time.Second * 59)
|
|
|
|
_10m = (time.Minute * 10)
|
2015-07-21 15:00:46 +02:00
|
|
|
_15m = (time.Minute * 15)
|
2015-07-20 14:08:22 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
|
|
|
opts = Options{
|
2015-07-21 12:30:28 +02:00
|
|
|
MongoSrc: "mongodb://127.0.0.1:27018",
|
|
|
|
LogFile: "log/llconsolidate.log",
|
2015-07-20 14:08:22 +02:00
|
|
|
StartDate: time.Now().Add(-24 * time.Hour).Format(_tformat),
|
2015-07-21 12:04:07 +02:00
|
|
|
Duration: _24h,
|
2015-07-21 15:00:46 +02:00
|
|
|
Interval: _15m,
|
2016-04-15 17:31:00 +02:00
|
|
|
Batch: 10000,
|
2015-07-20 14:08:22 +02:00
|
|
|
}
|
2015-11-26 09:19:16 +01:00
|
|
|
|
|
|
|
dbs = Dbs{}
|
|
|
|
|
2016-04-06 12:05:40 +02:00
|
|
|
idb = InfluxdbOutput{
|
|
|
|
CountTOT: 0,
|
|
|
|
CountOK: 0,
|
|
|
|
Insert: 0,
|
|
|
|
Find: 0,
|
|
|
|
}
|
2015-07-20 14:08:22 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
|
|
|
|
flag.Usage = usage
|
|
|
|
flag.Parse()
|
|
|
|
|
|
|
|
if opts.Version {
|
|
|
|
fmt.Println(os.Args[0], _VERSION)
|
|
|
|
os.Exit(0)
|
|
|
|
}
|
|
|
|
|
2016-02-19 10:48:55 +01:00
|
|
|
if opts.Hostname == "" {
|
|
|
|
var err error
|
|
|
|
opts.Hostname, err = os.Hostname()
|
|
|
|
if err != nil {
|
|
|
|
fmt.Println("Hostname error: ", err.Error())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-07-20 14:08:22 +02:00
|
|
|
fs, err := os.OpenFile(opts.LogFile, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0666)
|
|
|
|
if err != nil {
|
|
|
|
fmt.Println("Log file error: ", err.Error())
|
|
|
|
os.Exit(-4)
|
|
|
|
}
|
|
|
|
|
|
|
|
log.SetOutput(fs)
|
|
|
|
|
|
|
|
start := time.Now()
|
|
|
|
fmt.Printf("Start: %+v\n", opts)
|
|
|
|
log.Printf("Start: %+v\n", opts)
|
|
|
|
|
|
|
|
connectMongo()
|
2015-11-26 09:19:16 +01:00
|
|
|
defer dbs.mdbSrc.Close()
|
2016-04-15 15:28:52 +02:00
|
|
|
defer dbs.mdbDst.Close()
|
2015-07-20 14:08:22 +02:00
|
|
|
|
|
|
|
y, err := time.Parse(_tformat, opts.StartDate)
|
|
|
|
if err != nil {
|
2015-07-21 12:30:28 +02:00
|
|
|
log.Println("Date Error: ", err)
|
2015-07-20 14:08:22 +02:00
|
|
|
os.Exit(-1)
|
|
|
|
}
|
|
|
|
|
2015-11-09 15:54:05 +01:00
|
|
|
// DEBUG
|
|
|
|
//fmt.Printf("Start %+v\n\r", y)
|
2015-07-20 14:08:22 +02:00
|
|
|
|
2016-04-21 16:11:27 +02:00
|
|
|
// var ys []time.Time
|
|
|
|
// var ye []time.Time
|
|
|
|
var ys time.Time
|
|
|
|
var ye time.Time
|
2015-07-21 12:04:07 +02:00
|
|
|
|
2016-04-15 15:28:52 +02:00
|
|
|
// if opts.Duration <= (time.Hour * 24) {
|
2016-04-21 16:11:27 +02:00
|
|
|
ys = time.Date(y.Year(), y.Month(), y.Day(), 0, 0, 0, 0, time.UTC)
|
|
|
|
ye = ys.Add(opts.Duration)
|
2016-04-15 15:28:52 +02:00
|
|
|
|
|
|
|
/*
|
|
|
|
} else {
|
|
|
|
for i := 0; i <= int(opts.Duration/(time.Hour*24)); i++ {
|
|
|
|
yt := y.Add(time.Hour * time.Duration(24*i))
|
|
|
|
if opts.Debug {
|
|
|
|
fmt.Println(i)
|
|
|
|
fmt.Println(yt)
|
|
|
|
}
|
|
|
|
ys = append(ys, time.Date(yt.Year(), yt.Month(), yt.Day(), 0, 0, 0, 0, time.UTC))
|
|
|
|
ye = append(ye, ys[i].Add(_24h))
|
|
|
|
}
|
2015-07-21 12:04:07 +02:00
|
|
|
}
|
2016-04-15 15:28:52 +02:00
|
|
|
*/
|
2015-07-20 14:08:22 +02:00
|
|
|
|
2015-11-09 15:54:05 +01:00
|
|
|
// DEBUG
|
|
|
|
if opts.Debug {
|
|
|
|
fmt.Printf("Start: %+v, Stop: %+v\n\r", ys, ye)
|
|
|
|
}
|
2015-07-20 14:08:22 +02:00
|
|
|
|
2016-04-21 16:11:27 +02:00
|
|
|
// for i := range ys {
|
2015-07-21 15:45:06 +02:00
|
|
|
|
2016-04-21 16:11:27 +02:00
|
|
|
pStart := time.Now()
|
2015-07-21 15:45:06 +02:00
|
|
|
|
2016-04-21 16:11:27 +02:00
|
|
|
// aggregate(ys[i], ye[i])
|
|
|
|
aggregate(ys, ye)
|
2015-11-09 15:54:05 +01:00
|
|
|
|
2016-04-21 16:11:27 +02:00
|
|
|
fmt.Printf("Stop %s: %s\n", ys, time.Since(pStart))
|
|
|
|
log.Printf("Stop %s: %s\n", ys, time.Since(pStart))
|
|
|
|
|
|
|
|
// fmt.Printf("Stop %s: %s\n", ys[i], time.Since(pStart))
|
|
|
|
// log.Printf("Stop %s: %s\n", ys[i], time.Since(pStart))
|
|
|
|
// }
|
2015-07-20 14:08:22 +02:00
|
|
|
|
2016-04-06 12:05:40 +02:00
|
|
|
idb.Stop = time.Since(start)
|
2016-02-19 10:48:55 +01:00
|
|
|
|
2016-04-06 12:05:40 +02:00
|
|
|
fmt.Printf("Stop: OK: %d - TOT: %d - Time: %s\n\r", idb.CountOK, idb.CountTOT, idb.Stop)
|
|
|
|
log.Printf("Stop: OK: %d - TOT: %d - Time: %s\n\r", idb.CountOK, idb.CountTOT, idb.Stop)
|
2016-02-19 10:48:55 +01:00
|
|
|
|
|
|
|
if opts.Influxdb != "" {
|
2016-04-21 16:11:27 +02:00
|
|
|
writeStats(start, ys)
|
2016-02-19 10:48:55 +01:00
|
|
|
}
|
2015-07-20 14:08:22 +02:00
|
|
|
}
|