forked from couchbaselabs/cbfs
/
heartbeat.go
43 lines (39 loc) · 826 Bytes
/
heartbeat.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package main
import (
"log"
"net"
"net/url"
"strings"
"time"
)
func heartbeat() {
for {
u, err := url.Parse(*couchbaseServer)
c, err := net.Dial("tcp", u.Host)
localAddr := ""
if err == nil {
localAddr = strings.Split(c.LocalAddr().String(), ":")[0]
c.Close()
}
aboutMe := map[string]interface{}{
"addr": localAddr,
"type": "storage",
"time": time.Now().UTC(),
"bindaddr": *bindAddr,
"hash": *hashType,
}
intfs, err := net.InterfaceAddrs()
if err == nil {
addrs := []string{}
for _, intf := range intfs {
addrs = append(addrs, intf.String())
}
aboutMe["interfaces"] = addrs
}
err = couchbase.Set("/"+serverIdentifier(), aboutMe)
if err != nil {
log.Printf("Failed to record a heartbeat: %v", err)
}
time.Sleep(5 * time.Second)
}
}