Documentation
¶
Overview ¶
Package metrics implements the outreach metrics API
This consists of the Count and Latency functions
Example ¶
package main
import (
"fmt"
"time"
_ "github.com/getoutreach/gobox/pkg/log"
"github.com/getoutreach/gobox/pkg/metrics"
"github.com/prometheus/client_golang/prometheus"
)
func main() {
start := time.Now()
// sleep for 6ms to cross the lower most bucket of 5ms
time.Sleep(6 * time.Millisecond)
latency := float64(time.Since(start)) / float64(time.Second)
metrics.ReportLatency("example_app", "example_call", latency, nil)
got, err := prometheus.DefaultGatherer.Gather()
if err != nil {
fmt.Println("Error:", err)
return
}
for _, metricFamily := range got {
if metricFamily.GetName() == "call_request_seconds" {
for _, metric := range metricFamily.Metric {
found := false
for _, labelPair := range metric.GetLabel() {
if labelPair.GetName() == "status" && labelPair.GetValue() == "ok" {
found = true
}
}
if !found {
continue
}
fmt.Println("name", metricFamily.GetName())
fmt.Println("help", metricFamily.GetHelp())
fmt.Println("type", metricFamily.GetType())
fmt.Println("label", metric.GetLabel())
fmt.Println("summary", metric.GetSummary())
fmt.Println("sample count", metric.GetHistogram().GetSampleCount())
fmt.Println("sample count", metric.GetHistogram().GetBucket())
}
}
}
}
Output: name call_request_seconds help The latency of the call type HISTOGRAM label [name:"app" value:"example_app" name:"call" value:"example_call" name:"kind" value:"internal" name:"status" value:"ok" name:"statuscategory" value:"CategoryOK" name:"statuscode" value:"OK" ] summary <nil> sample count 1 sample count [cumulative_count:0 upper_bound:0.005 cumulative_count:1 upper_bound:0.01 cumulative_count:1 upper_bound:0.025 cumulative_count:1 upper_bound:0.05 cumulative_count:1 upper_bound:0.1 cumulative_count:1 upper_bound:0.25 cumulative_count:1 upper_bound:0.5 cumulative_count:1 upper_bound:1 cumulative_count:1 upper_bound:2.5 cumulative_count:1 upper_bound:5 cumulative_count:1 upper_bound:10 ]
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ReportLatency ¶
func ReportLatency(appName, callName string, latencySeconds float64, err error, options ...ReportLatencyOption)
ReportLatency reports the latency metric for this request
Types ¶
type ReportLatencyOption ¶
type ReportLatencyOption func(*ReportLatencyOptions)
func WithCallKind ¶
func WithCallKind(ck CallKind) ReportLatencyOption
WithCallKind sets the kind of call this was.
func WithExternalCall ¶
func WithExternalCall() ReportLatencyOption
WithExternalCall reports that this call was an external call
type ReportLatencyOptions ¶
type ReportLatencyOptions struct {
// Kind is the type of call that was made
Kind CallKind
}
Click to show internal directories.
Click to hide internal directories.