Ai
19 Star 127 Fork 0

kelvins-io/kelvins

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
elastic_metrics.go 1.08 KB
一键复制 编辑 原始数据 按行查看 历史
cristiane 提交于 2020-08-01 11:49 +08:00 . 初始v1
package metrics_mux
import (
"expvar"
"fmt"
"gitee.com/kelvins-io/common/ptool"
"net/http"
)
var appStats = expvar.NewMap("appstats")
func GetElasticMux(mux *http.ServeMux) *http.ServeMux {
mux.HandleFunc("/debug/vars", metricsHandler)
return mux
}
// metricsHandler print expvar data.
func metricsHandler(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json; charset=utf-8")
appStats.Set("Goroutine", expvar.Func(ptool.GetGoroutineCount))
appStats.Set("Threadcreate", expvar.Func(ptool.GetThreadCreateCount))
appStats.Set("Block", expvar.Func(ptool.GetBlockCount))
appStats.Set("Mutex", expvar.Func(ptool.GetMutexCount))
appStats.Set("Heap", expvar.Func(ptool.GetHeapCount))
first := true
report := func(key string, value interface{}) {
if !first {
fmt.Fprintf(w, ",\n")
}
first = false
if str, ok := value.(string); ok {
fmt.Fprintf(w, "%q: %q", key, str)
} else {
fmt.Fprintf(w, "%q: %v", key, value)
}
}
fmt.Fprintf(w, "{\n")
expvar.Do(func(kv expvar.KeyValue) {
report(kv.Key, kv.Value)
})
fmt.Fprintf(w, "\n}\n")
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/kelvins-io/kelvins.git
git@gitee.com:kelvins-io/kelvins.git
kelvins-io
kelvins
kelvins
v1.7.1

搜索帮助