il log viene salvato nella collection del rispettivo mese/anno

This commit is contained in:
Miki 2016-05-13 12:11:52 +02:00
parent d6744fe95d
commit 6271820f33
4 changed files with 30 additions and 70 deletions

View file

@ -28,16 +28,10 @@ func contains(s []Ips, e string) bool {
func consumer(id int) { func consumer(id int) {
// var conn = dbs.rdb.Get()
// defer conn.Close()
for { for {
prod := <-consume[id] prod := <-consume[id]
// wg.Add(1)
// defer wg.Done()
cons := consumed{ cons := consumed{
user: prod.user, user: prod.user,
logins: make([]string, 0), logins: make([]string, 0),
@ -51,9 +45,6 @@ func consumer(id int) {
if login == "" { if login == "" {
log.Println("Login empty: ", prod.user) log.Println("Login empty: ", prod.user)
cons.logins = append(cons.logins, login) cons.logins = append(cons.logins, login)
// retval, _ := conn.Do("lrem", user, "0", login)
// log.Println("LREM retval: ", user, login, retval)
// return
continue continue
} }
sval := strings.Split(login, ":") sval := strings.Split(login, ":")
@ -61,9 +52,6 @@ func consumer(id int) {
if sval[1] == "" { if sval[1] == "" {
log.Println("Login format error: ", login, prod.user) log.Println("Login format error: ", login, prod.user)
cons.logins = append(cons.logins, login) cons.logins = append(cons.logins, login)
// retval, _ := conn.Do("lrem", user, "0", login)
// log.Println("LREM retval: ", user, login, retval)
// return
continue continue
} }
// se il timestamp della riga di login non e' corretto // se il timestamp della riga di login non e' corretto
@ -71,9 +59,6 @@ func consumer(id int) {
if err != nil { if err != nil {
log.Printf("Date Error: %+v - %s - %s\n", err, prod.user, login) log.Printf("Date Error: %+v - %s - %s\n", err, prod.user, login)
cons.logins = append(cons.logins, login) cons.logins = append(cons.logins, login)
// retval, _ := conn.Do("lrem", user, "0", login)
// log.Println("LREM retval: ", user, login, retval)
// return
continue continue
} }
ml := MongoLogin{ ml := MongoLogin{
@ -82,26 +67,20 @@ func consumer(id int) {
Ip: sval[2], Ip: sval[2],
Date: time.Unix(date, 0), Date: time.Unix(date, 0),
} }
// cerca se esiste gia' un documento con gli stessi User & Date
/* if opts.Month != ml.Date.Format("0601") {
docfind := []Ips{} lt := dbs.mdb.DB("lastlogin").C(fmt.Sprintf("lastlogin_%s", ml.Date.Format("0601")))
iter := dbs.ll.Find(bson.M{"user": prod.user, "date": time.Unix(date, 0)}).Select(bson.M{"ip": 1, "_id": 0}).Iter() err = lt.Insert(ml)
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 { if err != nil {
log.Printf("Insert error: %+v - %s\n", err, cons.user) log.Printf("Insert error: %+v - %s - %s\n", err, cons.user, lt.FullName)
count.AddErr() count.AddErr()
cons.error = true cons.error = true
continue continue
} }
if opts.Debug {
log.Printf("%s - %+v\n", lt.FullName, ml)
} }
} else { } else {
*/
// inserisce il login su Mongodb // inserisce il login su Mongodb
err = dbs.ll.Insert(ml) err = dbs.ll.Insert(ml)
if err != nil { if err != nil {
@ -110,29 +89,18 @@ func consumer(id int) {
cons.error = true cons.error = true
continue continue
} }
// }
// iter.Close()
if opts.Debug { if opts.Debug {
log.Printf("%+v - %+v\n", ml) log.Printf("%+v\n", ml)
}
} }
// if i < (len(prod.logins) - 1) {
cons.logins = append(cons.logins, login) 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)) count.AddLog(len(prod.logins))
if opts.Debug { 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()) 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 remove[id] <- cons

15
dbs.go
View file

@ -4,6 +4,7 @@ package main
import ( import (
"github.com/garyburd/redigo/redis" "github.com/garyburd/redigo/redis"
// "github.com/fzzy/radix/redis" // "github.com/fzzy/radix/redis"
"fmt"
"log" "log"
"os" "os"
"time" "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() { func (db *Dbs) connectMongo() {
var err error var err error
db.mdb, err = mgo.Dial(db.MongoUri) db.mdb, err = mgo.Dial(db.MongoUri)
@ -89,6 +79,5 @@ func (db *Dbs) connectMongo() {
log.Println("Mongodb connect Error: ", err.Error()) log.Println("Mongodb connect Error: ", err.Error())
os.Exit(-3) os.Exit(-3)
} }
db.ll = db.mdb.DB("lastlogin").C("lastlogin_" + time.Now().Format("0601")) db.ll = db.mdb.DB("lastlogin").C(fmt.Sprintf("lastlogin_%s", opts.Month))
// db.us = db.mdb.DB("dovecot").C("userlogin")
} }

View file

@ -11,7 +11,7 @@ import (
) )
const ( const (
_VERSION = "v2.6.1" _VERSION = "v2.7.0"
) )
var ( var (
@ -67,6 +67,8 @@ func main() {
fmt.Printf("Start: %+v\n", opts) fmt.Printf("Start: %+v\n", opts)
log.Printf("Start: %+v\n", opts) log.Printf("Start: %+v\n", opts)
opts.Month = start.Format("0601")
dbs.poolRedis() dbs.poolRedis()
defer dbs.rdb.Close() defer dbs.rdb.Close()

View file

@ -27,6 +27,7 @@ type Options struct {
Xymon string Xymon string
Influxdb string Influxdb string
Hostname string Hostname string
Month string
} }
func usage() { func usage() {