小花狸監控之網路收發
小花狸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("", 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接收訊息,(上面的是密文,下面的是解密後的明文)
兩個星期的七拼八湊,雖然程式碼很亂,自己看著都累..
不過基本的功能算是實現了
初步的網路收發功能如下
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("", 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部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-1477851/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 小花狸監控之MySQLMySql
- 小花狸監控之加密加密
- 小花狸監控之RedisRedis
- 小花狸監控之MongodbMongoDB
- 小花狸監控之安全加固expect備份指令碼指令碼
- 小花狸ITPUB部落格備份工具
- 分散式監控系統之Zabbix網路發現分散式
- 網際網路企業安全之埠監控
- iOS網路效能監控iOS
- 網路監控工具ntopng
- OpManager:網路監控的利器
- 12 個網路監控工具
- 【網路閒情】愛護小花小草
- 網路監控工作模式:旁路映象、埠映象和旁路監控模式
- Android網路效能監控方案Android
- systemtap的網路監控指令碼指令碼
- iptraf:TCP/UDP網路監控工具TCPUDP
- 端到端網路全鏈路監控方案
- Centos使用Cacti監控你的網路CentOS
- 用c#監控網路狀態C#
- LINUX 網路監控命令(netstat)Linux
- mrtg監控網路流量簡單配置
- MongoDB之監控MongoDB
- 伺服器監控之 ping 監控伺服器
- 虛擬網路監控進階之路-DeepFlow
- 網路實時監控工具:PeakHour for macMac
- HTML5繪製網路監控圖HTML
- 7款最好用的網路監控工具
- iftop監控一個埠的網路流量
- 使用oswatcher監控rac的心跳網路
- 談談“無線網路”與“網路監控”那些小事兒
- 乾貨 | 雲解析DNS之網站監控DNS網站
- SpringCloud之斷路器聚合監控(Hystrix Turbine)SpringGCCloud
- 網路分流器-網路分流器-網路流量監控技術及其方法
- 影片監控裝置網路管理解決方案
- 如何實現一個IOS網路監控元件iOS元件
- 監控系統網路視覺化傳輸視覺化
- 在家辦公網路需要更好的監控工具