creata una struttura DBS per contenere i puntatori delle connessioni al DB
This commit is contained in:
parent
0de9b415b8
commit
494696c336
4 changed files with 24 additions and 18 deletions
|
@ -12,7 +12,7 @@ func aggregate(ys time.Time, ye time.Time) {
|
||||||
|
|
||||||
qStart := time.Now()
|
qStart := time.Now()
|
||||||
|
|
||||||
p := opts.ll.Pipe([]bson.M{{"$match": bson.M{"date": bson.M{"$gte": ys, "$lte": ye}}}, {"$group": bson.M{"_id": "$user"}}, {"$project": bson.M{"user": "$_id"}}})
|
p := dbs.ll.Pipe([]bson.M{{"$match": bson.M{"date": bson.M{"$gte": ys, "$lte": ye}}}, {"$group": bson.M{"_id": "$user"}}, {"$project": bson.M{"user": "$_id"}}})
|
||||||
|
|
||||||
if opts.Debug {
|
if opts.Debug {
|
||||||
fmt.Printf("Aggregate user: %s\n\r", time.Since(qStart))
|
fmt.Printf("Aggregate user: %s\n\r", time.Since(qStart))
|
||||||
|
@ -36,7 +36,7 @@ func aggregate(ys time.Time, ye time.Time) {
|
||||||
}
|
}
|
||||||
|
|
||||||
qStart = time.Now()
|
qStart = time.Now()
|
||||||
nq := opts.ll.Find(bson.M{"date": bson.M{"$gte": ys, "$lte": ye}, "user": ar.User}).Sort("date")
|
nq := dbs.ll.Find(bson.M{"date": bson.M{"$gte": ys, "$lte": ye}, "user": ar.User}).Sort("date")
|
||||||
//fmt.Printf("User: %s -> %s\n\r", ar[u], time.Since(qStart) )
|
//fmt.Printf("User: %s -> %s\n\r", ar[u], time.Since(qStart) )
|
||||||
iter := nq.Iter()
|
iter := nq.Iter()
|
||||||
result := LastLogin{}
|
result := LastLogin{}
|
||||||
|
@ -64,7 +64,7 @@ func aggregate(ys time.Time, ye time.Time) {
|
||||||
}
|
}
|
||||||
ll.IPs = ips
|
ll.IPs = ips
|
||||||
//fmt.Printf("Upsert %+v\n\r", ll)
|
//fmt.Printf("Upsert %+v\n\r", ll)
|
||||||
_, err := opts.lc.Upsert(Index{User: ll.User, Date: ll.Date}, ll)
|
_, err := dbs.lc.Upsert(Index{User: ll.User, Date: ll.Date}, ll)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("Insert error: ", err)
|
log.Println("Insert error: ", err)
|
||||||
}
|
}
|
||||||
|
|
21
dbs.go
21
dbs.go
|
@ -8,6 +8,13 @@ import (
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type Dbs struct {
|
||||||
|
mdbSrc *mgo.Session
|
||||||
|
mdbDst *mgo.Session
|
||||||
|
ll *mgo.Collection
|
||||||
|
lc *mgo.Collection
|
||||||
|
}
|
||||||
|
|
||||||
type LastLogin struct {
|
type LastLogin struct {
|
||||||
User string `json: "user"`
|
User string `json: "user"`
|
||||||
Protocol string `json: "protocol"`
|
Protocol string `json: "protocol"`
|
||||||
|
@ -51,24 +58,24 @@ func connectMongo() {
|
||||||
}
|
}
|
||||||
var err error
|
var err error
|
||||||
//opts.mdbSrc, err = mgo.DialWithTimeout(opts.MongoSrc, time.Minute*5)
|
//opts.mdbSrc, err = mgo.DialWithTimeout(opts.MongoSrc, time.Minute*5)
|
||||||
opts.mdbSrc, err = mgo.Dial(opts.MongoSrc)
|
dbs.mdbSrc, err = mgo.Dial(opts.MongoSrc)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("Mongodb connect Error: ", err.Error())
|
log.Println("Mongodb connect Error: ", err.Error())
|
||||||
os.Exit(-3)
|
os.Exit(-3)
|
||||||
}
|
}
|
||||||
opts.mdbSrc.SetSocketTimeout(0)
|
dbs.mdbSrc.SetSocketTimeout(0)
|
||||||
opts.ll = opts.mdbSrc.DB("dovecot").C("lastlogin")
|
dbs.ll = dbs.mdbSrc.DB("dovecot").C("lastlogin")
|
||||||
|
|
||||||
if opts.MongoDst == "" {
|
if opts.MongoDst == "" {
|
||||||
opts.mdbDst = opts.mdbSrc
|
dbs.mdbDst = dbs.mdbSrc
|
||||||
opts.lc = opts.mdbSrc.DB("dovecot").C("lastlogin_day")
|
dbs.lc = dbs.mdbSrc.DB("dovecot").C("lastlogin_day")
|
||||||
} else {
|
} else {
|
||||||
opts.mdbDst, err = mgo.Dial(opts.MongoDst)
|
dbs.mdbDst, err = mgo.Dial(opts.MongoDst)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("Mongodb connect Error: ", err.Error())
|
log.Println("Mongodb connect Error: ", err.Error())
|
||||||
os.Exit(-3)
|
os.Exit(-3)
|
||||||
}
|
}
|
||||||
opts.lc = opts.mdbDst.DB("dovecot").C("lastlogin_day")
|
dbs.lc = dbs.mdbDst.DB("dovecot").C("lastlogin_day")
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
_VERSION = "v1.1.0"
|
_VERSION = "v1.1.1"
|
||||||
_tformat = "2006-01-02"
|
_tformat = "2006-01-02"
|
||||||
_24h = (time.Hour * 23) + (time.Minute * 59) + (time.Second * 59)
|
_24h = (time.Hour * 23) + (time.Minute * 59) + (time.Second * 59)
|
||||||
_10m = (time.Minute * 10)
|
_10m = (time.Minute * 10)
|
||||||
|
@ -27,6 +27,9 @@ var (
|
||||||
Duration: _24h,
|
Duration: _24h,
|
||||||
Interval: _15m,
|
Interval: _15m,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dbs = Dbs{}
|
||||||
|
|
||||||
countTOT = 0
|
countTOT = 0
|
||||||
countOK = 0
|
countOK = 0
|
||||||
)
|
)
|
||||||
|
@ -54,8 +57,8 @@ func main() {
|
||||||
log.Printf("Start: %+v\n", opts)
|
log.Printf("Start: %+v\n", opts)
|
||||||
|
|
||||||
connectMongo()
|
connectMongo()
|
||||||
defer opts.mdbSrc.Close()
|
defer dbs.mdbSrc.Close()
|
||||||
defer opts.mdbDst.Clone()
|
defer dbs.mdbDst.Clone()
|
||||||
|
|
||||||
y, err := time.Parse(_tformat, opts.StartDate)
|
y, err := time.Parse(_tformat, opts.StartDate)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -4,7 +4,7 @@ package main
|
||||||
import (
|
import (
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"gopkg.in/mgo.v2"
|
// "gopkg.in/mgo.v2"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
|
@ -15,10 +15,6 @@ import (
|
||||||
type Options struct {
|
type Options struct {
|
||||||
MongoSrc string
|
MongoSrc string
|
||||||
MongoDst string
|
MongoDst string
|
||||||
mdbSrc *mgo.Session
|
|
||||||
mdbDst *mgo.Session
|
|
||||||
ll *mgo.Collection
|
|
||||||
lc *mgo.Collection
|
|
||||||
StartDate string
|
StartDate string
|
||||||
Duration time.Duration
|
Duration time.Duration
|
||||||
Interval time.Duration
|
Interval time.Duration
|
||||||
|
|
Loading…
Add table
Reference in a new issue