小花狸V1.0接近完成.
两个星期的七拼八凑,虽然代码很乱,自己看着都累..
不过基本的功能算是实现了
初步的网络收发功能如下
Agent部署在被监控的服务器上,定期发送本机数据
$GOPATH/src/Agent.go
package main
import (
"encoding/json"
"flag"
"io/ioutil"
"log"
"net/http"
"net/url"
"probe/module"
)
func main() {
monitorType := flag.String("type", "host", "Monitor Type")
user := flag.String("user", "", "Service User")
pwd := flag.String("password", "", "Service Password")
port := flag.String("port", "", "Service Port")
path := flag.String("path", "", "Backup Path")
localAddr := flag.String("localAddr", "", "Backup IP")
flag.Parse()
monitorInfo := &MonitorInfo{}
monitorInfo.MonitorType = *monitorType
switch *monitorType {
case "host":
host := &module.Host{}
module.NewHost(host)
host.HostUsage()
result, _ := json.Marshal(*host)
monitorInfo.MonitorInfo = string(result)
case "mysql":
mysqlinfo := module.GetSlaveInfo(*user, *pwd, *port)
result, _ := json.Marshal(*mysqlinfo)
monitorInfo.MonitorInfo = string(result)
case "redis":
redisinfo := module.GetRedisInfo(*port, *pwd)
result, _ := json.Marshal(*redisinfo)
monitorInfo.MonitorInfo = string(result)
case "mongodb":
mongodbinfo := module.GetMongodbInfo(*user, *pwd, *port)
result, _ := json.Marshal(*mongodbinfo)
monitorInfo.MonitorInfo = string(result)
case "backup":
backupinfo := module.NewBackupInfo(*localAddr, *user, *pwd, *path)
result, _ := json.Marshal(*backupinfo)
monitorInfo.MonitorInfo = string(result)
}
result, _ := json.Marshal(*monitorInfo)
data := module.EncryptString(string(result))
resp, _ := http.PostForm("http://127.0.0.1:8080/monitor", url.Values{"m": {data}})
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
log.Println(body)
}
type MonitorInfo struct {
MonitorType string
MonitorInfo string
}
Server部署在集中监控服务器上,接收消息并保存到数据库(入库的功能还未实现)
$GOPATH/src/Server.go
package main
import (
"log"
"net/http"
"probe/module"
)
func main() {
http.HandleFunc("/monitor", monitorHandler)
err := http.ListenAndServe(":8080", nil)
if err != nil {
log.Fatal("ListenAndServe:", err.Error())
}
}
func monitorHandler(w http.ResponseWriter, r *http.Request) {
r.ParseForm()
log.Println(r.Form["m"])
monitorInfo := module.DecryptString(r.Form["m"][0])
log.Println(monitorInfo)
}
Agent发送消息

Server接收消息,(上面的是密文,下面的是解密后的明文)

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29254281/viewspace-1477851/
,如需转载,请注明出处,否则将追究法律责任。