client_golang/prometheus
Tomasz Elendt dd4dd69878 Solve "The Proxy Problem" of InstrumentHandler
InstrumentHandler provides proxy object over given http.ResponseWriter
- responseWriterDelegator that only implements the bare minimum
required of an http.ResponseWriter and doesn’t implement any interface
upgrades (http.Flusher, http.Hijacker, etc.). This commit fixes it by
providing fancyResponseWriterDelegator with all the fancy bells and
whistles if standard library http.ResponseWriter is detected.

Heavily inspired by Goji's middleware.

https://avtok.com/2014/11/05/interface-upgrades.html#the-proxy-problem
2015-06-04 23:48:40 +02:00
..
.gitignore Rearrange file and package per convention. 2013-04-04 15:27:09 +02:00
README.md Fix document 2015-02-11 17:35:04 -05:00
benchmark_test.go Add support for histograms to the Go client library. 2015-02-19 15:54:26 +01:00
collector.go Change "Prometheus Team" to "The Prometheus Authors". 2015-02-02 15:14:36 +01:00
counter.go Correct typo in Counter.Set() docstring. 2015-04-30 18:51:33 +02:00
counter_test.go Use non-rewritten Godep imports. 2015-02-27 16:49:40 +01:00
desc.go Make LabelNameRE public. 2015-06-01 15:41:09 +02:00
doc.go Change "Prometheus Team" to "The Prometheus Authors". 2015-02-02 15:14:36 +01:00
example_clustermanager_test.go Change "Prometheus Team" to "The Prometheus Authors". 2015-02-02 15:14:36 +01:00
example_memstats_test.go Change "Prometheus Team" to "The Prometheus Authors". 2015-02-02 15:14:36 +01:00
example_selfcollector_test.go Use non-rewritten Godep imports. 2015-02-27 16:49:40 +01:00
examples_test.go Add examples for const summary/histogram. 2015-05-04 12:22:15 +02:00
expvar.go Change "Prometheus Team" to "The Prometheus Authors". 2015-02-02 15:14:36 +01:00
expvar_test.go Use non-rewritten Godep imports. 2015-02-27 16:49:40 +01:00
gauge.go Change "Prometheus Team" to "The Prometheus Authors". 2015-02-02 15:14:36 +01:00
gauge_test.go Use non-rewritten Godep imports. 2015-02-27 16:49:40 +01:00
go_collector.go Rename process_goroutines to go_goroutines 2015-05-19 15:47:08 -04:00
go_collector_test.go record quantiles as well 2015-05-05 12:33:35 -04:00
histogram.go doc fix: s/DefObjectives/DefBuckets/ 2015-05-30 17:30:45 +02:00
histogram_test.go Use non-rewritten Godep imports. 2015-02-27 16:49:40 +01:00
http.go Solve "The Proxy Problem" of InstrumentHandler 2015-06-04 23:48:40 +02:00
http_test.go Use non-rewritten Godep imports. 2015-02-27 16:49:40 +01:00
metric.go Use non-rewritten Godep imports. 2015-02-27 16:49:40 +01:00
metric_test.go Change "Prometheus Team" to "The Prometheus Authors". 2015-02-02 15:14:36 +01:00
process_collector.go Inline and remove processCollectSupported(). 2015-04-01 01:18:20 +02:00
process_collector_test.go Use non-rewritten Godep imports. 2015-02-27 16:49:40 +01:00
push.go Add functions to push individual collectors to a Pushgateway. 2015-03-15 19:29:57 +01:00
registry.go Purge another trace of ext -> pbutil. 2015-04-07 15:19:47 +02:00
registry_test.go Allow the metric family injection hook to merge with existing metric families. 2015-03-15 16:34:31 +01:00
summary.go Implement constSummary and constHistogram. 2015-05-04 00:32:15 +02:00
summary_test.go Return NaN when summaries have no observations yet. 2015-03-15 16:33:56 +01:00
untyped.go Change "Prometheus Team" to "The Prometheus Authors". 2015-02-02 15:14:36 +01:00
value.go Ensure alignment of struct members used in sync.atomic functions. 2015-05-21 12:19:38 +02:00
vec.go Change "Prometheus Team" to "The Prometheus Authors". 2015-02-02 15:14:36 +01:00
vec_test.go Change "Prometheus Team" to "The Prometheus Authors". 2015-02-02 15:14:36 +01:00

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)
}

Documentation

GoDoc