ing
This commit is contained in:
parent
7f0c37578e
commit
3424503357
|
@ -8,6 +8,7 @@ import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -34,7 +35,7 @@ func CallAdd() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func CallInit2(address string, cpm *map[string][]string) bool {
|
func CallInit2(address string, paths *[]string) bool {
|
||||||
conn, err := grpc.Dial(address, grpc.WithInsecure())
|
conn, err := grpc.Dial(address, grpc.WithInsecure())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("did not connect: %v", err)
|
log.Fatalf("did not connect: %v", err)
|
||||||
|
@ -44,14 +45,22 @@ func CallInit2(address string, cpm *map[string][]string) bool {
|
||||||
|
|
||||||
cc := g.NewConfigClient(conn)
|
cc := g.NewConfigClient(conn)
|
||||||
|
|
||||||
in := &g.Init{}
|
|
||||||
|
|
||||||
in.Path = "/home/snoop/develop/path/go/src/loafle.com/overflow/crawler_go/config/"
|
|
||||||
//in.Name = g.Crawlers(g.Crawlers_value[""])
|
|
||||||
in.Name = g.Crawlers_HEALTH_REDIS
|
|
||||||
|
|
||||||
inArr := &g.InputArray{}
|
inArr := &g.InputArray{}
|
||||||
inArr.In = append(inArr.In, in)
|
base := "HEALTH_"
|
||||||
|
for _, path := range *paths {
|
||||||
|
|
||||||
|
in := &g.Init{}
|
||||||
|
in.Path = "/home/snoop/develop/path/go/src/loafle.com/overflow/crawler_go/config/"
|
||||||
|
//in.Path = path
|
||||||
|
bcn := filepath.Base(path)
|
||||||
|
bcn = strings.ToUpper(bcn)
|
||||||
|
|
||||||
|
log.Println("cn:" + base+bcn)
|
||||||
|
|
||||||
|
//in.Name = g.Crawlers(g.Crawlers_value[base+bcn])
|
||||||
|
in.Name = g.Crawlers(g.Crawlers_value[g.Crawlers_HEALTH_REDIS.String()]) //test
|
||||||
|
inArr.In = append(inArr.In, in)
|
||||||
|
}
|
||||||
|
|
||||||
outInit, errInit := cc.Init(context.Background(), inArr)
|
outInit, errInit := cc.Init(context.Background(), inArr)
|
||||||
if errInit != nil {
|
if errInit != nil {
|
||||||
|
|
|
@ -3,7 +3,7 @@ package crawler_manager
|
||||||
import (
|
import (
|
||||||
|
|
||||||
|
|
||||||
g "loafle.com/overflow/crawler_go/grpc"
|
|
||||||
|
|
||||||
"loafle.com/overflow/crawler_go/config"
|
"loafle.com/overflow/crawler_go/config"
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ import (
|
||||||
|
|
||||||
const (
|
const (
|
||||||
address = "localhost:"
|
address = "localhost:"
|
||||||
defaultPort = 80
|
defaultPort = 50000
|
||||||
|
|
||||||
rootFolder = "/home/cm/"
|
rootFolder = "/home/cm/"
|
||||||
ConfigFolder = rootFolder + "/config/"
|
ConfigFolder = rootFolder + "/config/"
|
||||||
|
@ -30,24 +30,18 @@ type crawler_manager struct {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var currentPort = defaultPort
|
var currentPort = defaultPort
|
||||||
|
|
||||||
var pidMap map[string]int
|
var pidMap map[string]int
|
||||||
var exeMap map[string]string
|
|
||||||
var portMap map[string]string
|
var portMap map[string]string
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
|
||||||
pidMap = make(map[string]int)
|
pidMap = make(map[string]int)
|
||||||
exeMap = make(map[string]string)
|
|
||||||
portMap = make(map[string]string)
|
portMap = make(map[string]string)
|
||||||
|
|
||||||
//pidMap["HEALTH_REDIS"] = 18281
|
|
||||||
|
|
||||||
exeMap[g.Crawlers_HEALTH_REDIS.String()] = "/home/snoop/develop/path/go/src/loafle.com/overflow/tnc";
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func ReadConfig(path string ) *config.Config {
|
func ReadConfig(path string ) *config.Config {
|
||||||
|
@ -67,32 +61,6 @@ func ReadConfig(path string ) *config.Config {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func AddConfig(path string) {
|
|
||||||
|
|
||||||
c := ReadConfig(path)
|
|
||||||
|
|
||||||
exePath := exeMap[c.Crawler.Name]
|
|
||||||
|
|
||||||
cs := c.Crawler.Name
|
|
||||||
|
|
||||||
pid := pidMap[cs]
|
|
||||||
|
|
||||||
if pid > 0 {
|
|
||||||
b := IsAlive(pid)
|
|
||||||
if b == false {
|
|
||||||
ExeCrawler(c.Crawler.Name, exePath)
|
|
||||||
CallInit(c.Crawler.Name, path)
|
|
||||||
} else {
|
|
||||||
CallAdd()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
} else {
|
|
||||||
ExeCrawler(c.Crawler.Name, exePath)
|
|
||||||
CallInit(c.Crawler.Name, path)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
func InitContainer() {
|
func InitContainer() {
|
||||||
|
@ -108,11 +76,6 @@ func InitContainer() {
|
||||||
RunContainer(&c, &cpm)
|
RunContainer(&c, &cpm)
|
||||||
}
|
}
|
||||||
|
|
||||||
//startContainer
|
|
||||||
//isPid
|
|
||||||
|
|
||||||
//
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func IsStartContainer() []string {
|
func IsStartContainer() []string {
|
||||||
|
|
|
@ -13,10 +13,6 @@ import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestManageCrawler(t *testing.T) {
|
|
||||||
AddConfig("/home/snoop/develop/path/go/src/loafle.com/overflow/crawler_manager_go/config/example.json")
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestAdd(t *testing.T) {
|
func TestAdd(t *testing.T) {
|
||||||
|
|
||||||
|
|
||||||
|
@ -100,19 +96,6 @@ func TestPipe(t *testing.T) {
|
||||||
t.Log(string(aa))
|
t.Log(string(aa))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestIsAlive(t *testing.T) {
|
|
||||||
|
|
||||||
IsAlive(15538)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestIsState(t *testing.T) {
|
|
||||||
|
|
||||||
b := IsState(225931)
|
|
||||||
t.Log(b)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestCom(t *testing.T) {
|
func TestCom(t *testing.T) {
|
||||||
str:= "Z"
|
str:= "Z"
|
||||||
|
|
||||||
|
@ -160,8 +143,9 @@ func TestCrateDir(t *testing.T) {
|
||||||
|
|
||||||
configPath = append(configPath, ConfigFolder + "/java/mysql/")
|
configPath = append(configPath, ConfigFolder + "/java/mysql/")
|
||||||
configPath = append(configPath, ConfigFolder + "/network/http/")
|
configPath = append(configPath, ConfigFolder + "/network/http/")
|
||||||
configPath = append(configPath, ConfigFolder + "/network/ldap/")
|
|
||||||
configPath = append(configPath, ConfigFolder + "/network/redis/")
|
configPath = append(configPath, ConfigFolder + "/network/redis/")
|
||||||
|
configPath = append(configPath, ConfigFolder + "/network/ldap/")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var containerPath []string;
|
var containerPath []string;
|
||||||
|
@ -210,5 +194,18 @@ func TestDirs(t *testing.T) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSplitPath(t *testing.T) {
|
||||||
|
|
||||||
|
ff :="/home/snoop/develop/path/go/src/loafle.com/overflow/crawler_go/config/ffff"
|
||||||
|
a := filepath.Dir(ff)
|
||||||
|
t.Log(a)
|
||||||
|
a = filepath.Clean(a)
|
||||||
|
t.Log(a)
|
||||||
|
a = filepath.Base(a)
|
||||||
|
|
||||||
|
t.Log(a)
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -7,7 +7,9 @@ import (
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"time"
|
"time"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
|
||||||
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -25,14 +27,18 @@ func RunContainer(container *string, cpm *map[string][]string) {
|
||||||
|
|
||||||
time.Sleep(time.Duration( time.Second * 2))
|
time.Sleep(time.Duration( time.Second * 2))
|
||||||
|
|
||||||
b := CallInit2("localhost:" + strconv.Itoa(currentPort), cpm)
|
paths := (*cpm)[*container]
|
||||||
|
b := CallInit2("localhost:" + strconv.Itoa(currentPort), &paths)
|
||||||
log.Println("current Port:" , currentPort)
|
log.Println("current Port:" , currentPort)
|
||||||
if b == false {
|
if b == false {
|
||||||
currentPort++
|
currentPort++
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
log.Println(*container + " run success port:" , currentPort , "pid:", cmd.Process.Pid )
|
log.Println(*container + " run success port:" , currentPort , "pid:", cmd.Process.Pid )
|
||||||
|
//write pid file container_pid_port
|
||||||
|
ioutil.WriteFile(PidFolder+*container+"_"+strconv.Itoa(cmd.Process.Pid)+ "_"+strconv.Itoa(currentPort), []byte(""), os.ModePerm)
|
||||||
currentPort++
|
currentPort++
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,93 +50,3 @@ func getRunCommand(container *string ) string {
|
||||||
return BinaryFolder + "/" + *container + "/" + runFile
|
return BinaryFolder + "/" + *container + "/" + runFile
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//FIXME:: process check!!!!!!
|
|
||||||
func ExeCrawler(crawlerName string, exePath string) {
|
|
||||||
log.Println("Run Crawler")
|
|
||||||
|
|
||||||
for {
|
|
||||||
pArg := "-Port=" + strconv.Itoa(currentPort)
|
|
||||||
cmd := exec.Command(exePath, pArg)
|
|
||||||
|
|
||||||
err := cmd.Start()
|
|
||||||
if err != nil {
|
|
||||||
log.Println(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
time.Sleep(time.Duration( time.Second * 2))
|
|
||||||
|
|
||||||
log.Println("current Pid : " , cmd.Process.Pid)
|
|
||||||
|
|
||||||
if IsAlive(cmd.Process.Pid) == false || IsState(cmd.Process.Pid) == false {
|
|
||||||
log.Println("run fail port:",currentPort)
|
|
||||||
currentPort++
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
portMap[crawlerName] = strconv.Itoa(currentPort)
|
|
||||||
log.Println("current port:", currentPort)
|
|
||||||
//FIXME::remove
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func IsAlive(pid int) bool {
|
|
||||||
if pid < 0 {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
ps := exec.Command("ps", "-aux")
|
|
||||||
awk := exec.Command("awk", "{print $2}")
|
|
||||||
grep := exec.Command("grep", strconv.Itoa(pid))
|
|
||||||
|
|
||||||
awk.Stdin, _ = ps.StdoutPipe()
|
|
||||||
grep.Stdin,_ = awk.StdoutPipe()
|
|
||||||
|
|
||||||
ps.Start()
|
|
||||||
awk.Start()
|
|
||||||
|
|
||||||
byt, _ := grep.Output()
|
|
||||||
|
|
||||||
str := strconv.Itoa(pid)
|
|
||||||
|
|
||||||
if len(str) +1 == len(byt) {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func IsState(pid int) bool {
|
|
||||||
ps := exec.Command("ps", "-aux")
|
|
||||||
awk := exec.Command("awk", "{print $2, $8}")
|
|
||||||
grep := exec.Command("grep", strconv.Itoa(pid))
|
|
||||||
awk2 := exec.Command("awk", "{print $2}")
|
|
||||||
|
|
||||||
awk.Stdin, _ = ps.StdoutPipe()
|
|
||||||
grep.Stdin,_ = awk.StdoutPipe()
|
|
||||||
awk2.Stdin,_ = grep.StdoutPipe()
|
|
||||||
|
|
||||||
ps.Start()
|
|
||||||
awk.Start()
|
|
||||||
grep.Start()
|
|
||||||
|
|
||||||
byt, _ := awk2.Output()
|
|
||||||
|
|
||||||
if len(byt) <= 0 {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
str := string(byt)
|
|
||||||
str = strings.TrimSpace(str)
|
|
||||||
|
|
||||||
log.Println(str)
|
|
||||||
idx := strings.Index(str, "Z")
|
|
||||||
if idx >= 0 {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user