4f73a8b017
This is accomplished by using the functions from the atomic packages instead of a mutex. benchmark old ns/op new ns/op delta BenchmarkGaugeNoLabels-2 118 9.40 -92.03% BenchmarkGaugeNoLabels 117 9.38 -91.98% BenchmarkGaugeNoLabels-4 117 9.40 -91.97% BenchmarkCounterNoLabels-2 137 16.8 -87.74% BenchmarkCounterNoLabels 136 16.8 -87.65% BenchmarkCounterNoLabels-4 136 16.8 -87.65% BenchmarkGaugeWithLabelValues-4 400 279 -30.25% BenchmarkGaugeWithLabelValues-2 398 279 -29.90% BenchmarkGaugeWithLabelValues 400 283 -29.25% BenchmarkCounterWithLabelValues-4 397 286 -27.96% BenchmarkCounterWithLabelValues-2 396 286 -27.78% BenchmarkCounterWithLabelValues 394 285 -27.66% BenchmarkCounterWithPreparedMappedLabels 587 454 -22.66% BenchmarkCounterWithPreparedMappedLabels-2 581 456 -21.51% BenchmarkCounterWithPreparedMappedLabels-4 654 539 -17.58% BenchmarkCounterWithMappedLabels-2 1441 1218 -15.48% BenchmarkCounterWithMappedLabels 1099 963 -12.37% BenchmarkCounterWithMappedLabels-4 1636 1501 -8.25% |
||
---|---|---|
.. | ||
.gitignore | ||
README.md | ||
benchmark_test.go | ||
collector.go | ||
counter.go | ||
counter_test.go | ||
desc.go | ||
doc.go | ||
example_clustermanager_test.go | ||
example_memstats_test.go | ||
example_selfcollector_test.go | ||
examples_test.go | ||
expvar.go | ||
expvar_test.go | ||
gauge.go | ||
gauge_test.go | ||
go_collector.go | ||
go_collector_test.go | ||
http.go | ||
http_test.go | ||
metric.go | ||
metric_test.go | ||
process_collector.go | ||
process_collector_test.go | ||
registry.go | ||
registry_test.go | ||
summary.go | ||
summary_test.go | ||
untyped.go | ||
value.go | ||
vec.go | ||
vec_test.go |
README.md
Overview
This is the Prometheus telemetric instrumentation client Go client library. It enable authors to define process-space metrics for their servers and expose them through a web service interface for extraction, aggregation, and a whole slew of other post processing techniques.
Installing
$ go get github.com/prometheus/client_golang/prometheus
Example
package main
import (
"net/http"
"github.com/prometheus/client_golang/prometheus"
)
var (
indexed = prometheus.NewCounter(prometheus.CounterOpts{
Namespace: "my_company",
Subsystem: "indexer",
Name: "documents_indexed",
Help: "The number of documents indexed.",
})
size = prometheus.NewGauge(prometheus.GaugeOpts{
Namespace: "my_company",
Subsystem: "storage",
Name: "documents_total_size_bytes",
Help: "The total size of all documents in the storage."}})
)
func main() {
http.Handle("/metrics", prometheus.Handler())
indexed.Inc()
size.Set(5)
http.ListenAndServe(":8080", nil)
}
func init() {
prometheus.MustRegister(indexed)
prometheus.MustRegister(size)
}