golang 程序监控 gops 监控

Golang · Fecmall · 于 5年前 发布 · 4751 次阅读

github地址: https://github.com/google/gops

1.安装

go get -u github.com/google/gops
go install github.com/google/gops

如果运行install成功,应该生成在%GOPATH%/bin/下面 生成一个gops文件。

2.将被监控的golang程序中加入gops监控代码,也就是在main函数的开头加入

if err := agent.Listen(agent.Options{
		ShutdownCleanup: true, // automatically closes on os.Interrupt
	}); err != nil {
		log.Fatal(err)
	}

下面是一个例子:

package main

import (
	"log"
	"time"

	"github.com/google/gops/agent"
)

func main() {
	if err := agent.Listen(agent.Options{
		ShutdownCleanup: true, // automatically closes on os.Interrupt
	}); err != nil {
		log.Fatal(err)
	}
	time.Sleep(time.Hour)
}

3.运行gops文件

root@ima-ThinkPad-W540:~/go/bin# gops
971   1     snapd                                    unknown Go version /usr/lib/snapd/snapd
25277 25265 docker-containerd                        unknown Go version /usr/bin/docker-containerd
24492 22550 TixId_Middleware_Go                    * go1.9.2            /tmp/go-build125135358/command-line-arguments/_obj/exe/TixId_Middleware_Go
17690 25277 docker-containerd-shim                   unknown Go version /usr/bin/docker-containerd-shim
18849 25277 docker-containerd-shim                   unknown Go version /usr/bin/docker-containerd-shim
17727 25277 docker-containerd-shim                   unknown Go version /usr/bin/docker-containerd-shim
17718 25277 docker-containerd-shim                   unknown Go version /usr/bin/docker-containerd-shim
18046 25277 docker-containerd-shim                   unknown Go version /usr/bin/docker-containerd-shim
18842 25265 docker-proxy                             go1.10.3           /usr/bin/docker-proxy
17974 25265 docker-proxy                             go1.10.3           /usr/bin/docker-proxy
17612 25265 docker-proxy                             go1.10.3           /usr/bin/docker-proxy
26795 8405  gops                                     go1.9.2            /root/go/bin/gops
17680 25265 docker-proxy                             go1.10.3           /usr/bin/docker-proxy
18029 25265 docker-proxy                             go1.10.3           /usr/bin/docker-proxy
17653 25265 docker-proxy                             go1.10.3           /usr/bin/docker-proxy
27663 27579 margo                                    go1.9.2            /home/ima/.config/sublime-text-3/Packages/GoSublime/bin/margo
22550 29232 go                                       go1.9.2            /usr/local/go/bin/go
27735 27579 gosublime.margo_r18.07.22-1_go1.9.2.exe  go1.9.2            /home/ima/.config/sublime-text-3/Packages/User/GoSublime/linux-x64/bin/gosublime.margo_r18.07.22-1_go1.9.2.exe
27693 27663 margo.sublime                            go1.9.2            /root/go/bin/margo.sublime
25265 1     dockerd                                  go1.10.3           /usr/bin/dockerd

上面带有*的,代表程序中加入了gops的监控代码,也就是上面main函数中加入的,譬如上面的* go1.9.2

使用参看:https://github.com/google/gops

gops memstats (<pid>|<addr>)
To print the current memory stats, run the following command:

$ gops memstats (<pid>|<addr>)

譬如:(只有带有*的才能使用下面的命令,譬如* go1.9.2对应PID 24492)

root@ima-ThinkPad-W540:~/go/bin# gops memstats 24492
alloc: 4.24MB (4448880 bytes)
total-alloc: 33.63MB (35259760 bytes)
sys: 16.01MB (16787704 bytes)
lookups: 1079
mallocs: 343056
frees: 321287
heap-alloc: 4.24MB (4448880 bytes)
heap-sys: 11.22MB (11763712 bytes)
heap-idle: 4.91MB (5144576 bytes)
heap-in-use: 6.31MB (6619136 bytes)
heap-released: 176.00KB (180224 bytes)
heap-objects: 21769
stack-in-use: 800.00KB (819200 bytes)
stack-sys: 800.00KB (819200 bytes)
stack-mspan-inuse: 89.51KB (91656 bytes)
stack-mspan-sys: 128.00KB (131072 bytes)
stack-mcache-inuse: 13.56KB (13888 bytes)
stack-mcache-sys: 16.00KB (16384 bytes)
other-sys: 1.90MB (1994640 bytes)
gc-sys: 596.00KB (610304 bytes)
next-gc: when heap-alloc >= 8.49MB (8899696 bytes)
last-gc: 2018-11-20 12:22:23.672900069 +0800 CST
gc-pause-total: 1.358234ms
gc-pause: 111965
num-gc: 13
enable-gc: true
debug-gc: false
root@ima-ThinkPad-W540:~/go/bin# 
共收到 2 条回复
Fecmall#15年前 0 个赞

另外运行go文件的终端和运行gops的终端,需要一个用户,譬如都是root账户,否则将不能按照PID查详细。

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Your Site Analytics