il log viene salvato nella collection del rispettivo mese/anno
This commit is contained in:
parent
d6744fe95d
commit
6271820f33
4 changed files with 30 additions and 70 deletions
80
consumer.go
80
consumer.go
|
@ -28,16 +28,10 @@ func contains(s []Ips, e string) bool {
|
|||
|
||||
func consumer(id int) {
|
||||
|
||||
// var conn = dbs.rdb.Get()
|
||||
// defer conn.Close()
|
||||
|
||||
for {
|
||||
|
||||
prod := <-consume[id]
|
||||
|
||||
// wg.Add(1)
|
||||
// defer wg.Done()
|
||||
|
||||
cons := consumed{
|
||||
user: prod.user,
|
||||
logins: make([]string, 0),
|
||||
|
@ -51,9 +45,6 @@ func consumer(id int) {
|
|||
if login == "" {
|
||||
log.Println("Login empty: ", prod.user)
|
||||
cons.logins = append(cons.logins, login)
|
||||
// retval, _ := conn.Do("lrem", user, "0", login)
|
||||
// log.Println("LREM retval: ", user, login, retval)
|
||||
// return
|
||||
continue
|
||||
}
|
||||
sval := strings.Split(login, ":")
|
||||
|
@ -61,9 +52,6 @@ func consumer(id int) {
|
|||
if sval[1] == "" {
|
||||
log.Println("Login format error: ", login, prod.user)
|
||||
cons.logins = append(cons.logins, login)
|
||||
// retval, _ := conn.Do("lrem", user, "0", login)
|
||||
// log.Println("LREM retval: ", user, login, retval)
|
||||
// return
|
||||
continue
|
||||
}
|
||||
// se il timestamp della riga di login non e' corretto
|
||||
|
@ -71,9 +59,6 @@ func consumer(id int) {
|
|||
if err != nil {
|
||||
log.Printf("Date Error: %+v - %s - %s\n", err, prod.user, login)
|
||||
cons.logins = append(cons.logins, login)
|
||||
// retval, _ := conn.Do("lrem", user, "0", login)
|
||||
// log.Println("LREM retval: ", user, login, retval)
|
||||
// return
|
||||
continue
|
||||
}
|
||||
ml := MongoLogin{
|
||||
|
@ -82,57 +67,40 @@ func consumer(id int) {
|
|||
Ip: sval[2],
|
||||
Date: time.Unix(date, 0),
|
||||
}
|
||||
// cerca se esiste gia' un documento con gli stessi User & Date
|
||||
/*
|
||||
docfind := []Ips{}
|
||||
iter := dbs.ll.Find(bson.M{"user": prod.user, "date": time.Unix(date, 0)}).Select(bson.M{"ip": 1, "_id": 0}).Iter()
|
||||
iter.All(&docfind)
|
||||
if len(docfind) > 0 {
|
||||
count.AddDuplicate()
|
||||
if !contains(docfind, ml.Ip) {
|
||||
fmt.Printf("Insert != IP for same date: user=%s - date=%s\n - newip=%s - oldip=%s\n", ml.User, ml.Date, docfind, ml.Ip)
|
||||
// inserisce il login su Mongodb se gli IP sono !=
|
||||
err := dbs.ll.Insert(ml)
|
||||
if err != nil {
|
||||
log.Printf("Insert error: %+v - %s\n", err, cons.user)
|
||||
count.AddErr()
|
||||
cons.error = true
|
||||
continue
|
||||
}
|
||||
}
|
||||
} else {
|
||||
*/
|
||||
// inserisce il login su Mongodb
|
||||
err = dbs.ll.Insert(ml)
|
||||
if err != nil {
|
||||
log.Printf("Insert error: %+v - %s\n", err, cons.user)
|
||||
count.AddErr()
|
||||
cons.error = true
|
||||
continue
|
||||
}
|
||||
// }
|
||||
// iter.Close()
|
||||
|
||||
if opts.Debug {
|
||||
log.Printf("%+v - %+v\n", ml)
|
||||
if opts.Month != ml.Date.Format("0601") {
|
||||
lt := dbs.mdb.DB("lastlogin").C(fmt.Sprintf("lastlogin_%s", ml.Date.Format("0601")))
|
||||
err = lt.Insert(ml)
|
||||
if err != nil {
|
||||
log.Printf("Insert error: %+v - %s - %s\n", err, cons.user, lt.FullName)
|
||||
count.AddErr()
|
||||
cons.error = true
|
||||
continue
|
||||
}
|
||||
if opts.Debug {
|
||||
log.Printf("%s - %+v\n", lt.FullName, ml)
|
||||
}
|
||||
} else {
|
||||
// inserisce il login su Mongodb
|
||||
err = dbs.ll.Insert(ml)
|
||||
if err != nil {
|
||||
log.Printf("Insert error: %+v - %s\n", err, cons.user)
|
||||
count.AddErr()
|
||||
cons.error = true
|
||||
continue
|
||||
}
|
||||
if opts.Debug {
|
||||
log.Printf("%+v\n", ml)
|
||||
}
|
||||
}
|
||||
|
||||
// if i < (len(prod.logins) - 1) {
|
||||
cons.logins = append(cons.logins, login)
|
||||
// cancella da Redis la riga di login inserita
|
||||
// retval, _ := conn.Do("lrem", user, "0", login)
|
||||
// if opts.Debug {
|
||||
// log.Println("LREM retval: ", retval, user, login)
|
||||
// fmt.Println("LREM retval: ", retval, user, login)
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
count.AddLog(len(prod.logins))
|
||||
|
||||
if opts.Debug {
|
||||
fmt.Printf("CONS (%d): user=%s logins=%d in %v - active=%d\n", id, prod.user, len(prod.logins), time.Since(start), dbs.rdb.ActiveCount())
|
||||
// log.Printf("CONS (%d): user=%s logins=%d in %v - active=%d\n", id, prod.user, len(prod.logins), time.Since(start), dbs.rdb.ActiveCount())
|
||||
}
|
||||
|
||||
remove[id] <- cons
|
||||
|
|
15
dbs.go
15
dbs.go
|
@ -4,6 +4,7 @@ package main
|
|||
import (
|
||||
"github.com/garyburd/redigo/redis"
|
||||
// "github.com/fzzy/radix/redis"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"time"
|
||||
|
@ -71,17 +72,6 @@ func (db *Dbs) poolRedis() {
|
|||
|
||||
}
|
||||
|
||||
/*
|
||||
func (db *Dbs) connectRedis() {
|
||||
var err error
|
||||
db.rdb, err = redis.Dial("tcp", db.RedisUri)
|
||||
if err != nil {
|
||||
log.Println("Redis connect Error: ", err.Error())
|
||||
os.Exit(-1)
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
func (db *Dbs) connectMongo() {
|
||||
var err error
|
||||
db.mdb, err = mgo.Dial(db.MongoUri)
|
||||
|
@ -89,6 +79,5 @@ func (db *Dbs) connectMongo() {
|
|||
log.Println("Mongodb connect Error: ", err.Error())
|
||||
os.Exit(-3)
|
||||
}
|
||||
db.ll = db.mdb.DB("lastlogin").C("lastlogin_" + time.Now().Format("0601"))
|
||||
// db.us = db.mdb.DB("dovecot").C("userlogin")
|
||||
db.ll = db.mdb.DB("lastlogin").C(fmt.Sprintf("lastlogin_%s", opts.Month))
|
||||
}
|
||||
|
|
4
main.go
4
main.go
|
@ -11,7 +11,7 @@ import (
|
|||
)
|
||||
|
||||
const (
|
||||
_VERSION = "v2.6.1"
|
||||
_VERSION = "v2.7.0"
|
||||
)
|
||||
|
||||
var (
|
||||
|
@ -67,6 +67,8 @@ func main() {
|
|||
fmt.Printf("Start: %+v\n", opts)
|
||||
log.Printf("Start: %+v\n", opts)
|
||||
|
||||
opts.Month = start.Format("0601")
|
||||
|
||||
dbs.poolRedis()
|
||||
defer dbs.rdb.Close()
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ type Options struct {
|
|||
Xymon string
|
||||
Influxdb string
|
||||
Hostname string
|
||||
Month string
|
||||
}
|
||||
|
||||
func usage() {
|
||||
|
|
Loading…
Add table
Reference in a new issue