本文整理汇总了Golang中github.com/projecteru/eru-agent/logs.Info函数的典型用法代码示例。如果您正苦于以下问题:Golang Info函数的具体用法?Golang Info怎么用?Golang Info使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Info函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: monitor
func monitor() {
for event := range events {
switch event.Status {
case common.STATUS_DIE:
logs.Debug("Status", event.Status, event.ID[:12], event.From)
app.Remove(event.ID)
reportContainerDeath(event.ID)
case common.STATUS_START:
logs.Debug("Status", event.Status, event.ID[:12], event.From)
// if not in watching list, just ignore it
if meta := getContainerMeta(event.ID); meta != nil && !app.Valid(event.ID) {
container, err := g.Docker.InspectContainer(event.ID)
if err != nil {
logs.Info("Status inspect docker failed", err)
break
}
eruApp := app.NewEruApp(container, meta)
if eruApp == nil {
logs.Info("Create EruApp failed")
break
}
lenz.Attacher.Attach(&eruApp.Meta)
app.Add(eruApp)
reportContainerCure(event.ID)
}
}
}
}
示例2: ListenAndServe
func ListenAndServe() error {
svrConfig := InitSSHConfig()
listener, err := net.Listen("tcp", g.Config.Bind)
if err != nil {
logs.Assert(err, "net.Listen failed")
}
defer listener.Close()
for {
conn, err := listener.Accept()
if err != nil {
logs.Assert(err, "listen.Accept failed")
}
sshConn := &SSHConn{conn, svrConfig}
go func() {
if err := sshConn.serve(); err != nil {
logs.Info("Error occured while serving", err)
return
}
logs.Info("Connection closed.")
}()
}
}
示例3: setDefaultRoute
func setDefaultRoute(cid, gateway string, pid int) bool {
runtime.LockOSThread()
defer runtime.UnlockOSThread()
origins, err := netns.Get()
if err != nil {
logs.Info("Get orignal namespace failed", err)
return false
}
defer origins.Close()
ns, err := netns.GetFromPid(pid)
if err != nil {
logs.Info("Get container namespace failed", err)
return false
}
netns.Set(ns)
defer ns.Close()
defer netns.Set(origins)
if err := delDefaultRoute(); err != nil {
logs.Info("Delete default routing table failed", err)
return false
}
if err := addDefaultRoute(gateway); err != nil {
logs.Info("Add default route failed", err)
return false
}
logs.Info("Set default route success", cid[:12], gateway)
return true
}
示例4: getContainerMeta
func getContainerMeta(cid string) map[string]interface{} {
conn := g.GetRedisConn()
defer g.ReleaseRedisConn(conn)
containersKey := fmt.Sprintf("eru:agent:%s:containers:meta", g.Config.HostName)
rep, err := gore.NewCommand("HGET", containersKey, cid).Run(conn)
if err != nil {
logs.Info("Status get meta", err)
return nil
}
var result map[string]interface{}
if rep.IsNil() {
return nil
}
if b, err := rep.Bytes(); err != nil {
logs.Info("Status get meta", err)
return nil
} else {
if err := json.Unmarshal(b, &result); err != nil {
logs.Info("Status unmarshal meta", err)
return nil
}
}
return result
}
示例5: addNewContainer
// URL /api/container/add/
func addNewContainer(req *Request) (int, interface{}) {
type Data struct {
Control string `json:"control"`
ContainerID string `json:"container_id"`
Meta map[string]interface{} `json:"meta"`
}
data := &Data{}
decoder := json.NewDecoder(req.Body)
err := decoder.Decode(data)
if err != nil {
return http.StatusBadRequest, JSON{"message": "wrong JSON format"}
}
switch data.Control {
case "+":
if app.Valid(data.ContainerID) {
break
}
logs.Info("API status watch", data.ContainerID)
container, err := g.Docker.InspectContainer(data.ContainerID)
if err != nil {
logs.Info("API status inspect docker failed", err)
break
}
if eruApp := app.NewEruApp(container, data.Meta); eruApp != nil {
lenz.Attacher.Attach(&eruApp.Meta)
app.Add(eruApp)
}
}
return http.StatusOK, JSON{"message": "ok"}
}
示例6: addRoute
func addRoute(cid, CIDR, ifc string, pid int) bool {
runtime.LockOSThread()
defer runtime.UnlockOSThread()
origins, err := netns.Get()
if err != nil {
logs.Info("Get orignal namespace failed", err)
return false
}
defer origins.Close()
ns, err := netns.GetFromPid(pid)
if err != nil {
logs.Info("Get container namespace failed", err)
return false
}
netns.Set(ns)
defer ns.Close()
defer netns.Set(origins)
if err := addRouteByLink(CIDR, ifc); err != nil {
logs.Info("Add route failed", err)
return false
}
logs.Info("Add route success", cid[:12], CIDR, ifc)
return true
}
示例7: Report
func (self *EruApp) Report() {
t := time.NewTicker(self.Step)
defer t.Stop()
defer self.Client.Close()
defer logs.Info(self.Name, self.EntryPoint, self.ID[:12], "metrics report stop")
logs.Info(self.Name, self.EntryPoint, self.ID[:12], "metrics report start")
for {
select {
case now := <-t.C:
go func() {
if info, err := self.UpdateStats(self.ID); err == nil {
if isLimit {
limitChan <- SoftLimit{self.ID, info}
}
rate := self.CalcRate(info, now)
self.SaveLast(info)
go self.Send(rate)
} else {
logs.Info("Update mertic failed", self.ID[:12])
}
}()
case <-self.Stop:
return
}
}
}
示例8: setUpVLan
func setUpVLan(cid, ips string, pid int, veth netlink.Link) bool {
runtime.LockOSThread()
defer runtime.UnlockOSThread()
origns, err := netns.Get()
if err != nil {
logs.Info("Get orignal namespace failed", err)
return false
}
defer origns.Close()
ns, err := netns.GetFromPid(pid)
if err != nil {
logs.Info("Get container namespace failed", err)
return false
}
netns.Set(ns)
defer ns.Close()
defer netns.Set(origns)
if err := BindAndSetup(veth, ips); err != nil {
logs.Info("Bind and setup NIC failed", err)
DelVlan(veth)
return false
}
logs.Info("Add vlan device success", cid[:12])
return true
}
示例9: SetDefaultRoute
func SetDefaultRoute(cid, gateway string) bool {
_, err := g.Docker.InspectContainer(cid)
if err != nil {
logs.Info("VLanSetter inspect docker failed", err)
return false
}
logs.Info("Set default route success", cid, gateway)
return true
}
示例10: AddRoute
func AddRoute(cid, CIDR string, ifc string) bool {
_, err := g.Docker.InspectContainer(cid)
if err != nil {
logs.Info("VLanSetter inspect docker failed", err)
return false
}
logs.Info("Add route success", cid, CIDR, ifc)
return true
}
示例11: AddVlan
func AddVlan(vethName, ips, cid string) bool {
_, err := g.Docker.InspectContainer(cid)
if err != nil {
logs.Info("VLanSetter inspect docker failed", err)
return false
}
logs.Info("Add VLAN device success", cid, vethName)
return true
}
示例12: load
func load() {
containers, err := g.Docker.ListContainers(docker.ListContainersOptions{All: true})
if err != nil {
logs.Assert(err, "List containers")
}
conn := g.GetRedisConn()
defer g.ReleaseRedisConn(conn)
containersKey := fmt.Sprintf("eru:agent:%s:containers:meta", g.Config.HostName)
logs.Debug("Status get targets from", containersKey)
rep, err := gore.NewCommand("HGETALL", containersKey).Run(conn)
if err != nil {
logs.Assert(err, "Status get targets")
}
if rep.IsNil() {
return
}
targets, err := rep.Map()
if err != nil {
logs.Assert(err, "Status load targets")
}
logs.Debug("Status targets:", targets)
logs.Info("Status load container")
for _, container := range containers {
if _, ok := targets[container.ID]; !ok {
continue
}
status := getStatus(container.Status)
if status != common.STATUS_START {
reportContainerDeath(container.ID)
continue
}
var meta map[string]interface{}
if err := json.Unmarshal([]byte(targets[container.ID]), &meta); err != nil {
logs.Info("Status load failed", err)
continue
}
c, err := g.Docker.InspectContainer(container.ID)
if err != nil {
logs.Info("Status inspect docker failed", err)
continue
}
if eruApp := app.NewEruApp(c, meta); eruApp != nil {
lenz.Attacher.Attach(&eruApp.Meta)
app.Add(eruApp)
reportContainerCure(container.ID)
}
}
}
示例13: CloseLenz
func CloseLenz() {
logs.Info("Close all lenz streamer")
routes, err := Router.GetAll()
if err != nil {
logs.Info("Get all lenz route failed", err)
return
}
for _, route := range routes {
if !Router.Remove(route.ID) {
logs.Info("Close lenz route failed", route.ID)
}
}
}
示例14: addCalicoForContainer
// URL /api/container/:container_id/addcalico/
func addCalicoForContainer(req *Request) (int, interface{}) {
type Endpoint struct {
Nid int `json:"nid"`
Profile string `json:"profile"`
IP string `json:"ip"`
Append bool `json:"append"`
}
type Result struct {
Succ int `json:"succ"`
ContainerID string `json:"container_id"`
IP string `json:"ip"`
Err string `json:"err"`
}
if g.Config.VLan.Calico == "" {
return http.StatusBadRequest, JSON{"message": "Agent not enable calico support"}
}
cid := req.URL.Query().Get(":container_id")
env := os.Environ()
env = append(env, fmt.Sprintf("ETCD_AUTHORITY=%s", g.Config.VLan.Calico))
endpoints := []Endpoint{}
decoder := json.NewDecoder(req.Body)
if err := decoder.Decode(&endpoints); err != nil {
return http.StatusBadRequest, JSON{"message": "wrong JSON format"}
}
rv := []Result{}
for seq, endpoint := range endpoints {
vethName := fmt.Sprintf("%s%d.%d", common.VLAN_PREFIX, endpoint.Nid, seq)
if err := network.AddCalico(env, endpoint.Append, cid, vethName, endpoint.IP); err != nil {
rv = append(rv, Result{Succ: 0, ContainerID: cid, IP: endpoint.IP, Err: err.Error()})
logs.Info("API calico add interface failed", err)
continue
}
//TODO remove when eru-core support ACL
// currently only one profile is used
if err := network.BindCalicoProfile(env, cid, endpoint.Profile); err != nil {
rv = append(rv, Result{Succ: 0, ContainerID: cid, IP: endpoint.IP, Err: err.Error()})
logs.Info("API calico add profile failed", err)
continue
}
rv = append(rv, Result{Succ: 1, ContainerID: cid, IP: endpoint.IP})
}
return http.StatusOK, rv
}
示例15: softOOMKill
func softOOMKill(cid string, rate float64) {
logs.Debug("OOM killed", cid[:12])
conn := g.GetRedisConn()
defer g.ReleaseRedisConn(conn)
key := fmt.Sprintf("eru:agent:%s:container:reason", cid)
if _, err := gore.NewCommand("SET", key, common.OOM_KILLED).Run(conn); err != nil {
logs.Info("OOM killed set flag", err)
}
if err := g.Docker.StopContainer(cid, 10); err != nil {
logs.Info("OOM killed failed", cid[:12])
return
}
logs.Info("OOM killed success", cid[:12])
}