golang 的 expvar 库可用于暴露程序运行时指标并支持自定义监控。1. 默认指标通过 /debug/vars 路径提供,如内存使用、goroutine 数量等,需启动 http server 访问;2. 可通过 expvar.newint 或 expvar.newstring 添加自定义计数器或字符串变量;3. 指标可通过中间件转换为 prometheus 格式,如使用 expvarmon 或 prometheus/client_golang 中的 expvar_collector;4. 注意路径冲突、版本差异及频繁操作性能影响等问题。

Golang 的
expvar

下面我们就来看看怎么用
expvar

expvar
/debug/vars
立即学习“go语言免费学习笔记(深入)”;
memstats
cmdline
goroutine
你可以通过启动一个简单的 HTTP server 来访问这些数据:

import _ "expvar"
import "net/http"
func main() {
go func() {
http.ListenAndServe(":8080", nil)
}()
// 正常业务逻辑...
}然后访问
http://localhost:8080/debug/vars
{
"memstats": {
"Alloc": 1234567,
"TotalAlloc": 987654321,
"Sys": 123456789,
...
},
"goroutine": 12
}这些数据可以用来做基础监控,比如观察内存增长是否异常,或者 goroutine 是否泄露。
除了默认的指标,你还可以注册自己的变量,比如计数器、响应时间、请求次数等。
import "expvar"
var requestCount = expvar.NewInt("myapp_requests_total")
func handleRequest() {
requestCount.Add(1)
// 处理请求...
}上面这段代码中,我们创建了一个名为
myapp_requests_total
/debug/vars
有时候你想记录一些动态配置或状态信息,可以用字符串变量:
var appVersion = expvar.NewString("myapp_version")
appVersion.Set("v1.0.0")这样就可以在接口里看到当前版本号了。
虽然
expvar
如果你不想自己写转换逻辑,可以考虑使用 expvarmon,它能直接读取
expvar
当然,也可以用第三方包,比如
prometheus/client_golang
expvar_collector
/debug/vars
expvar
memstats
.Add()
基本上就这些。用好
expvar
以上就是Golang的expvar库如何暴露运行指标 讲解内存统计与自定义指标监控的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号