快捷搜索:  汽车  科技

prometheus 监控磁盘容量:深入浅出监控神器Prometheus

prometheus 监控磁盘容量:深入浅出监控神器Prometheuspackage main import ( "net/http" "github.com/prometheus/client_golang/prometheus/promhttp" ) func main() { http.Handle("/metrics" promhttp.Handler()) http.HandleFunc("/counter" Sayhello) http.ListenAndServe(":8080" nil) }一开始启动时,指标counter是0package main import ( "fmt" "net/http" "github.com/prometheus/c

Summary的百分位数是客户端计算好直接让Prometheus抓取的,不需要 Prometheus计算,直方图是通过内置函数histogram_quantile在 Prometheus服务端计算求出。

(三)指标导出

指标导出有两种方式,一种是使用Prometheus社区提供的定制好的 Exporter对一些组件诸如MySQL,Kafka等的指标作导出,也可以利用社区提供的Client来自定义指标导出。

github.com/prometheus/client_golang/prometheus/promhttp

自定义Prometheus exporter:

package main import ( "net/http" "github.com/prometheus/client_golang/prometheus/promhttp" ) func main() { http.Handle("/metrics" promhttp.Handler()) http.ListenAndServe(":8080" nil) }

访问:http://localhost:8080/metrics,即可看到导出的指标,这里我们没有自定义任何的指标,但是能看到一些内置的Go的运行时指标和promhttp相关的指标,这个Client默认为我们暴露的指标,go_:以 go_ 为前缀的指标是关于Go运行时相关的指标,比如垃圾回收时间、goroutine 数量等,这些都是Go客户端库特有的,其他语言的客户端库可能会暴露各自语言的其他运行时指标。promhttp_:来自promhttp工具包的相关指标,用于跟踪对指标请求的处理。

prometheus 监控磁盘容量:深入浅出监控神器Prometheus(1)

prometheus 监控磁盘容量:深入浅出监控神器Prometheus(2)

添加自定义指标:

package main import ( "net/http" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promhttp" ) func main() { // 1.定义指标(类型,名字,帮助信息) myCounter := prometheus.NewCounter(prometheus.CounterOpts{ Name: "my_counter_total" Help: "自定义counter" }) // 2.注册指标 prometheus.MustRegister(myCounter) // 3.设置指标值 myCounter.Add(23) http.Handle("/metrics" promhttp.Handler()) http.ListenAndServe(":8080" nil) }

运行:

prometheus 监控磁盘容量:深入浅出监控神器Prometheus(3)

模拟下在业务中上报接口请求量:

package main import ( "fmt" "net/http" "github.com/prometheus/client_golang/prometheus" ) var ( MyCounter prometheus.Counter ) // init 注册指标 func init() { // 1.定义指标(类型,名字,帮助信息) MyCounter = prometheus.NewCounter(prometheus.CounterOpts{ Name: "my_counter_total" Help: "自定义counter" }) // 2.注册指标 prometheus.MustRegister(MyCounter) } // Sayhello func Sayhello(w http.ResponseWriter r *http.Request) { // 接口请求量递增 MyCounter.Inc() fmt.Fprintf(w "Hello Wrold!") }

main.go:

package main import ( "net/http" "github.com/prometheus/client_golang/prometheus/promhttp" ) func main() { http.Handle("/metrics" promhttp.Handler()) http.HandleFunc("/counter" Sayhello) http.ListenAndServe(":8080" nil) }

一开始启动时,指标counter是0

prometheus 监控磁盘容量:深入浅出监控神器Prometheus(4)

调用:/counter接口后,指标数据发生了变化,这样就可以简单实现了接口请求数的统计:

prometheus 监控磁盘容量:深入浅出监控神器Prometheus(5)

猜您喜欢: