如何通过 expvar 在 Go 程序中有效暴露运行时指标?
- 内容介绍
- 文章标签
- 相关推荐
本文共计723个文字,预计阅读时间需要3分钟。
获取应用运行指标,以便更好地理解其实际状况。这些指标可对接Prometheus、Zabbix等监控系统,持续检测应用状态,及时发现异常并报警处理。+Pull
与监控系统对接方式有两种,一种是 Pull(拉取),另外一种 Push(推送)。
以 Prometheus 为例,应用程序通过暴露出 HTTP 接口,让 Prometheus 周期性地通过该接口抓取指标,这就是 Pull。而 Push 是应用程序主动将指标推送给 PushGateway, Prometheus 则去 PushGateway 抓取数据。
Go 标准库中有一个名为 expvar 的包,它的名字由 exp 和 var 两部分组合而成,意味着导出变量。
expvar 为公共变量提供了标准化的接口,并通过 HTTP 以 Json 的格式将这些变量暴露出去,很适合采用 Pull 的方式与监控系统进行对接。
使用 expvar 库expvar 是标准库,意味着我们并不要额外的依赖,并且它还提供了一些开箱即用的指标。下面我们来学习一下该库的使用。
当引用了 expvar 库(import "expvar"),以下 init 函数将被自动调用。
func init() { go.dev/ 上统计的公共项目,该库的 import 数量还不足 1万。
相比于其他标准库的 import 数量而言,expvar 的存在感太低了。
本文共计723个文字,预计阅读时间需要3分钟。
获取应用运行指标,以便更好地理解其实际状况。这些指标可对接Prometheus、Zabbix等监控系统,持续检测应用状态,及时发现异常并报警处理。+Pull
与监控系统对接方式有两种,一种是 Pull(拉取),另外一种 Push(推送)。
以 Prometheus 为例,应用程序通过暴露出 HTTP 接口,让 Prometheus 周期性地通过该接口抓取指标,这就是 Pull。而 Push 是应用程序主动将指标推送给 PushGateway, Prometheus 则去 PushGateway 抓取数据。
Go 标准库中有一个名为 expvar 的包,它的名字由 exp 和 var 两部分组合而成,意味着导出变量。
expvar 为公共变量提供了标准化的接口,并通过 HTTP 以 Json 的格式将这些变量暴露出去,很适合采用 Pull 的方式与监控系统进行对接。
使用 expvar 库expvar 是标准库,意味着我们并不要额外的依赖,并且它还提供了一些开箱即用的指标。下面我们来学习一下该库的使用。
当引用了 expvar 库(import "expvar"),以下 init 函数将被自动调用。
func init() { go.dev/ 上统计的公共项目,该库的 import 数量还不足 1万。
相比于其他标准库的 import 数量而言,expvar 的存在感太低了。

