producer:
	rimuove tutti i record tranne il primo ( il piu' recente )
	lrange(1, -1)
main:
options:
xymon:
	manda stato a xymon
This commit is contained in:
Miki 2015-12-18 17:16:51 +01:00
parent 4c160678b3
commit a0753ca9ea
6 changed files with 89 additions and 12 deletions

View file

@ -117,15 +117,15 @@ func consumer(id int) {
log.Printf("%+v - %+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)
// }
}
// 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))

View file

@ -11,7 +11,7 @@ import (
)
const (
_VERSION = "v2.3.1"
_VERSION = "v2.4.0"
)
var (
@ -95,4 +95,8 @@ func main() {
fmt.Printf("Stop %v - user: %d - login: %d - errors: %d - rem: %d - duplicate: %d\n\r", time.Since(start), count.GetUser(), count.GetLog(), count.GetErr(), count.GetRem(), count.GetDup())
log.Printf("Stop %v - user: %d - login: %d - errors: %d - rem: %d - duplicate: %d\n\r", time.Since(start), count.GetUser(), count.GetLog(), count.GetErr(), count.GetRem(), count.GetDup())
if opts.Xymon != "" {
sendStatus()
}
}

15
main_test.go Normal file
View file

@ -0,0 +1,15 @@
// Testmain.go
package main
import (
"flag"
"fmt"
"testing"
)
func TestOptions(t *testing.T) {
flag.Usage = usage
flag.Parse()
fmt.Printf("Config: %+v\n", opts)
}

View file

@ -2,8 +2,10 @@
package main
import (
// "encoding/json"
"flag"
"fmt"
// "io/ioutil"
"log"
"os"
"path"
@ -16,15 +18,18 @@ type Options struct {
CurrentPath string
Exe string
LogFile string
ConfigFile string
Timeout time.Duration
Debug bool
Version bool
Concurrent int
MaxError int
Xymon string
Hostname string
}
func usage() {
fmt.Println("Usage: llmongo -m <mongo uri> -r <redis uri> -t <redis keys ttl> -l <logfile> -b <concurrent thread> -T <running ttl> -v\n")
fmt.Println("Usage: llmongo -m <mongo uri> -r <redis uri> -t <redis keys ttl> -l <logfile> -b <concurrent thread> -T <running ttl> -x <xymon server> -H <hostname> -v\n")
os.Exit(0)
}
@ -39,6 +44,8 @@ func init() {
pid.PIDFile = path.Join(opts.CurrentPath, "run", path.Base(os.Args[0])+".pid")
opts.Exe = path.Base(os.Args[0])
flag.StringVar(&opts.Xymon, "x", "", "xymon server")
flag.StringVar(&opts.Hostname, "H", "", "hostname")
flag.StringVar(&dbs.MongoUri, "m", dbs.MongoUri, "Mongodb")
flag.StringVar(&dbs.RedisUri, "r", dbs.RedisUri, "Redis")
flag.StringVar(&opts.LogFile, "l", opts.LogFile, "Logs filename")

View file

@ -38,7 +38,7 @@ func producer(id int) {
}
// estrae tutti i login dell'utente "user"
logs, err := redis.Strings(conn.Do("lrange", user, "0", "-1"))
logs, err := redis.Strings(conn.Do("lrange", user, "1", "-1"))
if err != nil {
if opts.Debug {
fmt.Printf("LRANGE: %+v - %+v\n", err, logs)

51
xymon.go Normal file
View file

@ -0,0 +1,51 @@
// xymon.go
package main
import (
"fmt"
"log"
"net"
"strings"
)
func sendStatus() {
var msg string
host := strings.Replace(opts.Hostname, ".", ",", -1)
if count.GetErr() > 0 {
msg = fmt.Sprintf("status %s.llmongo %s %s %d", host, "yellow", "errors", count.GetErr())
} else {
msg = fmt.Sprintf("status %s.llmongo %s %s %d", host, "green", "logins", count.GetLog())
}
if opts.Debug {
fmt.Println("Sending: ", msg)
}
xymonSend([]byte(msg))
}
func xymonSend(msg []byte) error {
cl, err := net.Dial("tcp", opts.Xymon)
defer cl.Close()
if err != nil {
fmt.Printf("xymon connect error: ", err)
log.Printf("xymon connect error: ", err)
return err
}
// fmt.Printf("xymon: %s - localhost: %s\n", cl.RemoteAddr(), cl.LocalAddr())
_, err = cl.Write(msg)
if err != nil {
fmt.Printf("xymon write error: ", err)
log.Printf("xymon write error: ", err)
return err
}
// fmt.Printf("written: %d\n", tot)
return nil
}