Skip to content

Commit

Permalink
add listener
Browse files Browse the repository at this point in the history
  • Loading branch information
AbericYang committed May 25, 2020
1 parent 9ba6822 commit ae51125
Show file tree
Hide file tree
Showing 6 changed files with 104 additions and 7 deletions.
6 changes: 3 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
FROM golang:1.12.3 as builder
FROM golang:1.14.3 as builder
LABEL app="proc" by="aberic"
ENV REPO=$GOPATH/src/github.com/aberic/proc
WORKDIR $REPO
RUN git clone https://github.com/aberic/proc.git ../proc && \
go build -o $REPO/proc $REPO/runner/proc.go
ADD . $REPO
RUN GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build
FROM centos:7
WORKDIR /root/
COPY --from=builder /go/src/github.com/aberic/proc/proc .
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ module github.com/aberic/proc
go 1.14

require (
github.com/aberic/gnomon v0.0.0-20200503093554-f4c947c7b98c
github.com/aberic/gnomon v0.0.0-20200525012111-57caeb86dc36
github.com/davecgh/go-spew v1.1.1 // indirect
golang.org/x/net v0.0.0-20190620200207-3b0461eec859 // indirect
golang.org/x/sys v0.0.0-20200116001909-b77594299b42 // indirect
Expand Down
8 changes: 6 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/aberic/gnomon v0.0.0-20200503093554-f4c947c7b98c h1:+AlM5VYOMbhMgHkXPIFQZ78GH7UrdpmcrbxMb0A3qec=
github.com/aberic/gnomon v0.0.0-20200503093554-f4c947c7b98c/go.mod h1:fzwWf91sV/BDyUa4xrDeG3tMBZ+PK0FkzbI05CvUYSc=
github.com/aberic/gnomon v0.0.0-20200525012111-57caeb86dc36 h1:0Ai5WOOY+1EEY3a8xd33ksLgfUS4lcht3W5ZIHRGXkk=
github.com/aberic/gnomon v0.0.0-20200525012111-57caeb86dc36/go.mod h1:SIWWRAkAjKe55Qoe9osXHDJow+W7zitz1crZwcQc+Vw=
github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII=
github.com/btcsuite/btcd v0.0.0-20190824003749-130ea5bddde3 h1:A/EVblehb75cUgXA5njHPn0kLAsykn6mJGz7rnmW5W0=
github.com/btcsuite/btcd v0.0.0-20190824003749-130ea5bddde3/go.mod h1:3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI=
Expand Down Expand Up @@ -69,13 +69,17 @@ github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1Cpa
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/robfig/cron v1.2.0 h1:ZjScXvvxeQ63Dbyxy76Fj3AT3Ut0aKsyd2/tl3DTMuQ=
github.com/robfig/cron v1.2.0/go.mod h1:JGuDeoQd7Z6yL4zQhZ3OPEVHB7fL6Ka6skscFHfmt2k=
github.com/tjfoc/gmsm v1.3.1 h1:+k3IAlF81c31/TllJmIfuCYnjl8ziMdTWGWJcP9J1uo=
github.com/tjfoc/gmsm v1.3.1/go.mod h1:HaUcFuY0auTiaHB9MHFGCPx5IaLhTUd2atbCFBQXn9w=
github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI=
github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd h1:GGJVjV8waZKRHrgwvtH66z9ZGVurTD1MT0n1Bb+q4aM=
golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20191219195013-becbf705a915 h1:aJ0ex187qoXrJHPo8ZasVTASQB7llQP6YeNzgDALPRk=
golang.org/x/crypto v0.0.0-20191219195013-becbf705a915/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
Expand Down
87 changes: 87 additions & 0 deletions listener.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
package proc

import (
"github.com/aberic/gnomon"
"time"
)

var (
proc *Proc
remote = gnomon.EnvGet(listenAddr)
scheduled *time.Timer // 超时检查对象
delay = time.Second * time.Duration(5)
stop chan struct{} // 释放当前角色chan
)

func init() {
proc = &Proc{}
scheduled = time.NewTimer(delay)
stop = make(chan struct{}, 1)
}

// ListenStart 开启监听发送
func ListenStart() {
if gnomon.StringIsNotEmpty(remote) {
go send()
}
}

func send() {
scheduled.Reset(time.Millisecond * time.Duration(5))
for {
select {
case <-scheduled.C:
proc.run()
_, _ = gnomon.HTTPPostJSON(remote, proc)
scheduled.Reset(delay)
case <-stop:
return
}
}
}

// Proc 监听发送完整对象
type Proc struct {
CPUGroup *CPUGroup
MemInfo *MemInfo
LoadAvg *LoadAvg
Swaps *Swaps
Version *Version
Stat *Stat
CGroup *CGroup
UsageCPU float64
}

func (p *Proc) run() {
cpuGroup := &CPUGroup{CPUArray: []*CPUInfo{}}
if err := cpuGroup.Info(); nil == err {
p.CPUGroup = cpuGroup
}
memInfo := &MemInfo{}
if err := memInfo.Info(); nil == err {
p.MemInfo = memInfo
}
loadAvg := &LoadAvg{}
if err := loadAvg.Info(); nil == err {
p.LoadAvg = loadAvg
}
swaps := &Swaps{}
if err := swaps.Info(); nil == err {
p.Swaps = swaps
}
version := &Version{}
if err := version.Info(); nil == err {
p.Version = version
}
stat := &Stat{}
if err := stat.Info(); nil == err {
p.Stat = stat
}
cGroup := &CGroup{}
if err := cGroup.Info(); nil == err {
p.CGroup = cGroup
}
if usage, err := UsageCPU(); nil == err {
p.UsageCPU = usage
}
}
1 change: 1 addition & 0 deletions runner/proc.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
)

func main() {
proc.ListenStart()
httpServe := grope.NewHTTPServe()
proc.RouterProc(httpServe)
proc.RouterEnhance(httpServe)
Expand Down
7 changes: 6 additions & 1 deletion utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,14 @@ package proc

import "github.com/aberic/gnomon"

const (
procDir = "PROC_DIR"
listenAddr = "LISTEN_ADDR"
)

// FileRootPath 读取文件根路径
func FileRootPath() string {
return gnomon.EnvGetD("PROC_DIR", "/proc")
return gnomon.EnvGetD(procDir, "/proc")
}

const (
Expand Down

0 comments on commit ae51125

Please sign in to comment.