Go服务监控

运用Golang能够开宣布高功能的HTTP、GRPC服务。一般项目运转后,咱们也需求监控服务的功能或许进行调试。除了打日志,还有没有其他可视化的计划呢?答案是有的。

本文将会介绍几种常用的监控计划。

pprof

这个是go言语自带的。启用很标签1简标签17单:

_ "net/http/p标签14prof"

仅需显式的在 main 包的 impo标签10rt 里添加上面一行即可。完好运用示例:

package main

import (
"net/http"
_ "net/http/pprof"
)

func main(){
//提供给负载均衡探活以及pprof调试
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("ok"))
})

http.ListenAndServe(":10108", nil)
}

运转之后,在浏览器翻开 http://127.0.0.1:10108/debug/pprof/就能看到监控的一些信Go服务监控息了:

注:出产环境一般不会按上面那么写,都是开个协程:

go http.ListenAndServe(":10108", nil)

怎么发动 PProf 可视化界面?

需求graphviz支标签10持,能够到 http://www.graphviz.org/download/ 下载,并把bin加入到环境变量。Mac能够运用brew装置。

下面以heap为例:

办法一:

go tool pprof -http=:8081 http://localhost:10108/debug/pprof标签10/heap

办法二:

go tool pprof http://localhost:10108/debuGo服务监控g/pprof/heap

然后在交互式命令行输入web即可跳转到默许浏览器:

检查协程信息:

go tool pprof -http=:8081 http://localhost:10108/debug/pprof/goroutine

debugcharts

一个能够实时检查golang程序内存、CPU、GC、协程等改变状况的可视化东西标签11。

跟pprof相同, import引进, 然后开端口监听就行了:

_ "github.com/mkevac/debugcharts"
//省掉其它代码...
http.ListenAndServe(":10108", nil)

运转后,浏览器翻开 http://localhost:10108/debug/charts/ 就能看到了:

prometheus

prometheus是grafana的插件,支撑go监控的可视化。

首要需求代码里引进包:

"github.com/prometheus/client_golang/prometheus/Go服务监控promhttp"

然后添加路由:

//prometheus
http.Handle("/metrics", promhttp.Handler())
http.ListenAndServe(":10108", nil)

装备grafana后,效果图:

一个端口敞开 pprof+charts+prometheus

假如每一个监控都开一个端口就有点糟蹋端口了。能够在一个端口里敞开 pprof+charts+prometheus 。

1、进口文件添加代码:

//监控
go fun标签3c() {
//提供给负载均衡探活
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("ok"))

})

//prometheus
http.Handle("/metrics", promhttp.Handler())

//pprof, go tool pprof -http=:8081 http://$host:$port/debug/pprof/heap
http.ListenAndServGo服务监控e(":10108", nil)
}()

2、import添加

_ "github.com/mkevac/deGo服务监控bugcharts"
"github.com/prometheus/client_golang/proGo服务监控metheus/promhttp"
"net/http"
_ "net/http/pprof"

参阅

1、Golang pprof详解

https://studygolang.com/articles/14519

2、mkevac/debugcharts: Very simple charts with some Go服务监控debug data for Go programs

https://github.c标签20om/mkevac/debugcharts

3、prometheus/client_golang: Prometheus instrumentation library for Go applications

https://github.com/prometheus/client_golang/

(本文完)
本文优先在大众号"飞鸿影的博客(fhyblog)"发布,欢迎重视大众号及时获取最新文章标签10推送!

Write a Comment

电子邮件地址不会被公开。 必填项已用 *标注