mirror of
https://github.com/tailscale/tailscale.git
synced 2025-08-11 21:27:31 +00:00
usermetric: add initial user-facing metrics
This commit adds a new usermetric package and wires up metrics across the tailscale client. Updates tailscale/corp#22075 Co-authored-by: Anton Tolchanov <anton@tailscale.com> Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
This commit is contained in:

committed by
Kristoffer Dalby

parent
06c31f4e91
commit
a2c42d3cd4
@@ -273,19 +273,28 @@ type sortedKVs struct {
|
||||
//
|
||||
// This will evolve over time, or perhaps be replaced.
|
||||
func Handler(w http.ResponseWriter, r *http.Request) {
|
||||
w.Header().Set("Content-Type", "text/plain;version=0.0.4;charset=utf-8")
|
||||
ExpvarDoHandler(expvarDo)(w, r)
|
||||
}
|
||||
|
||||
s := sortedKVsPool.Get().(*sortedKVs)
|
||||
defer sortedKVsPool.Put(s)
|
||||
s.kvs = s.kvs[:0]
|
||||
expvarDo(func(kv expvar.KeyValue) {
|
||||
s.kvs = append(s.kvs, sortedKV{kv, removeTypePrefixes(kv.Key)})
|
||||
})
|
||||
sort.Slice(s.kvs, func(i, j int) bool {
|
||||
return s.kvs[i].sortKey < s.kvs[j].sortKey
|
||||
})
|
||||
for _, e := range s.kvs {
|
||||
writePromExpVar(w, "", e.KeyValue)
|
||||
// ExpvarDoHandler handler returns a Handler like above, but takes an optional
|
||||
// expvar.Do func allow the usage of alternative containers of metrics, other
|
||||
// than the global expvar.Map.
|
||||
func ExpvarDoHandler(expvarDoFunc func(f func(expvar.KeyValue))) func(http.ResponseWriter, *http.Request) {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
w.Header().Set("Content-Type", "text/plain;version=0.0.4;charset=utf-8")
|
||||
|
||||
s := sortedKVsPool.Get().(*sortedKVs)
|
||||
defer sortedKVsPool.Put(s)
|
||||
s.kvs = s.kvs[:0]
|
||||
expvarDoFunc(func(kv expvar.KeyValue) {
|
||||
s.kvs = append(s.kvs, sortedKV{kv, removeTypePrefixes(kv.Key)})
|
||||
})
|
||||
sort.Slice(s.kvs, func(i, j int) bool {
|
||||
return s.kvs[i].sortKey < s.kvs[j].sortKey
|
||||
})
|
||||
for _, e := range s.kvs {
|
||||
writePromExpVar(w, "", e.KeyValue)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user