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工具包的相关指标,用于跟踪对指标请求的处理。
添加自定义指标:
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)
}
运行:
模拟下在业务中上报接口请求量:
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
调用:/counter接口后,指标数据发生了变化,这样就可以简单实现了接口请求数的统计: