3 Star 13 Fork 11

Ulric Qin/dinp-agent

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
cron.go 1.56 KB
一键复制 编辑 原始数据 按行查看 历史
Ulric Qin 提交于 10年前 . init github version
package cron
import (
"github.com/dinp/agent/g"
"github.com/dinp/common/dock"
"github.com/dinp/common/model"
"github.com/toolkits/nux"
"log"
"time"
)
func Heartbeat() {
duration := time.Duration(g.Config().Interval) * time.Second
for {
heartbeat(duration)
time.Sleep(duration)
}
}
func heartbeat(duration time.Duration) {
mem, err := nux.MemInfo()
if err != nil {
log.Println("[ERROR] get meminfo:", err)
return
}
// use MB
memFree := (mem.MemFree + mem.Buffers + mem.Cached) / 1024 / 1024
localIp := g.Config().LocalIp
containers, err := dock.Containers(g.Config().Docker)
if err != nil {
log.Println("[ERROR] list containers fail:", err)
// this node dead
var resp model.NodeResponse
err = g.RpcClient.Call("NodeState.NodeDown", localIp, &resp)
if err != nil || resp.Code != 0 {
log.Println("[ERROR] call rpc: NodeState.NodeDown fail:", err, "resp:", resp)
} else if g.Config().Debug {
log.Println("[INFO] call rpc: NodeState.NodeDown successfully. I am dead...")
}
for {
time.Sleep(duration)
containers, err = dock.Containers(g.Config().Docker)
if err == nil {
break
} else {
log.Println("[ERROR] list containers fail:", err)
}
}
}
req := model.NodeRequest{
Node: model.Node{
Ip: localIp,
MemFree: memFree,
},
Containers: containers,
}
var resp model.NodeResponse
err = g.RpcClient.Call("NodeState.Push", req, &resp)
if err != nil || resp.Code != 0 {
log.Println("[ERROR] call rpc: NodeState.Push fail:", err, "resp:", resp)
} else if g.Config().Debug {
log.Println("[DEBUG] =>", req)
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/cnperl/dinp-agent.git
git@gitee.com:cnperl/dinp-agent.git
cnperl
dinp-agent
dinp-agent
master

搜索帮助