Tweaked push package
- Moved the Deliverer parameter to the end of the list to mirror Collectors in push.Collectors. - Improved doc comment and added an example for push.Registry.
This commit is contained in:
parent
249069ec01
commit
5a918da56d
|
@ -35,3 +35,22 @@ func ExampleCollectors() {
|
||||||
fmt.Println("Could not push completion time to Pushgateway:", err)
|
fmt.Println("Could not push completion time to Pushgateway:", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ExampleRegistry() {
|
||||||
|
registry := prometheus.NewRegistry()
|
||||||
|
|
||||||
|
completionTime := prometheus.NewGauge(prometheus.GaugeOpts{
|
||||||
|
Name: "db_backup_last_completion_time",
|
||||||
|
Help: "The timestamp of the last succesful completion of a DB backup.",
|
||||||
|
})
|
||||||
|
registry.MustRegister(completionTime)
|
||||||
|
|
||||||
|
completionTime.Set(float64(time.Now().Unix()))
|
||||||
|
if err := push.Registry(
|
||||||
|
"db_backup", push.HostnameGroupingKey(),
|
||||||
|
"http://pushgateway:9091",
|
||||||
|
registry,
|
||||||
|
); err != nil {
|
||||||
|
fmt.Println("Could not push completion time to Pushgateway:", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -44,13 +44,14 @@ import (
|
||||||
|
|
||||||
const contentTypeHeader = "Content-Type"
|
const contentTypeHeader = "Content-Type"
|
||||||
|
|
||||||
// Registry triggers a metric collection by the provided Deliverer and pushes all
|
// Registry triggers a metric collection by the provided Deliverer (which is
|
||||||
// delivered metrics to the Pushgateway specified by url, using the provided job
|
// usually implemented by a prometheus.Registry, thus the name of the function)
|
||||||
// name and the (optional) further grouping labels (the grouping map may be
|
// and pushes all delivered metrics to the Pushgateway specified by url, using
|
||||||
// nil). See the Pushgateway documentation for detailed implications of the job
|
// the provided job name and the (optional) further grouping labels (the
|
||||||
// and other grouping labels. Neither the job name nor any grouping label value
|
// grouping map may be nil). See the Pushgateway documentation for detailed
|
||||||
// may contain a "/". The metrics pushed must not contain a job label of their
|
// implications of the job and other grouping labels. Neither the job name nor
|
||||||
// own nor any of the grouping labels.
|
// any grouping label value may contain a "/". The metrics pushed must not
|
||||||
|
// contain a job label of their own nor any of the grouping labels.
|
||||||
//
|
//
|
||||||
// You can use just host:port or ip:port as url, in which case 'http://' is
|
// You can use just host:port or ip:port as url, in which case 'http://' is
|
||||||
// added automatically. You can also include the schema in the URL. However, do
|
// added automatically. You can also include the schema in the URL. However, do
|
||||||
|
@ -59,18 +60,18 @@ const contentTypeHeader = "Content-Type"
|
||||||
// Note that all previously pushed metrics with the same job and other grouping
|
// Note that all previously pushed metrics with the same job and other grouping
|
||||||
// labels will be replaced with the metrics pushed by this call. (It uses HTTP
|
// labels will be replaced with the metrics pushed by this call. (It uses HTTP
|
||||||
// method 'PUT' to push to the Pushgateway.)
|
// method 'PUT' to push to the Pushgateway.)
|
||||||
func Registry(reg prometheus.Deliverer, job string, grouping map[string]string, url string) error {
|
func Registry(job string, grouping map[string]string, url string, reg prometheus.Deliverer) error {
|
||||||
return push(reg, job, grouping, url, "PUT")
|
return push(job, grouping, url, reg, "PUT")
|
||||||
}
|
}
|
||||||
|
|
||||||
// RegistryAdd works like Registry, but only previously pushed metrics with the
|
// RegistryAdd works like Registry, but only previously pushed metrics with the
|
||||||
// same name (and the same job and other grouping labels) will be replaced. (It
|
// same name (and the same job and other grouping labels) will be replaced. (It
|
||||||
// uses HTTP method 'POST' to push to the Pushgateway.)
|
// uses HTTP method 'POST' to push to the Pushgateway.)
|
||||||
func RegistryAdd(reg prometheus.Deliverer, job string, grouping map[string]string, url string) error {
|
func RegistryAdd(job string, grouping map[string]string, url string, reg prometheus.Deliverer) error {
|
||||||
return push(reg, job, grouping, url, "POST")
|
return push(job, grouping, url, reg, "POST")
|
||||||
}
|
}
|
||||||
|
|
||||||
func push(reg prometheus.Deliverer, job string, grouping map[string]string, pushURL, method string) error {
|
func push(job string, grouping map[string]string, pushURL string, reg prometheus.Deliverer, method string) error {
|
||||||
if !strings.Contains(pushURL, "://") {
|
if !strings.Contains(pushURL, "://") {
|
||||||
pushURL = "http://" + pushURL
|
pushURL = "http://" + pushURL
|
||||||
}
|
}
|
||||||
|
@ -154,7 +155,7 @@ func pushCollectors(job string, grouping map[string]string, url, method string,
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return push(r, job, grouping, url, method)
|
return push(job, grouping, url, r, method)
|
||||||
}
|
}
|
||||||
|
|
||||||
// HostnameGroupingKey returns a label map with the only entry
|
// HostnameGroupingKey returns a label map with the only entry
|
||||||
|
|
|
@ -150,7 +150,7 @@ func TestPush(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Push registry, all good.
|
// Push registry, all good.
|
||||||
if err := Registry(reg, "testjob", HostnameGroupingKey(), pgwOK.URL); err != nil {
|
if err := Registry("testjob", HostnameGroupingKey(), pgwOK.URL, reg); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
if lastMethod != "PUT" {
|
if lastMethod != "PUT" {
|
||||||
|
@ -161,7 +161,7 @@ func TestPush(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// PushAdd registry, all good.
|
// PushAdd registry, all good.
|
||||||
if err := RegistryAdd(reg, "testjob", map[string]string{"a": "x", "b": "y"}, pgwOK.URL); err != nil {
|
if err := RegistryAdd("testjob", map[string]string{"a": "x", "b": "y"}, pgwOK.URL, reg); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
if lastMethod != "POST" {
|
if lastMethod != "POST" {
|
||||||
|
|
Loading…
Reference in New Issue