client_golang

module
v0.0.0-...-77e8f2d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 23, 2018 License: Apache-2.0

README

Prometheus Go client library

Build Status Go Report Card go-doc

This is the Go client library for Prometheus. It has two separate parts, one for instrumenting application code, and one for creating clients that talk to the Prometheus HTTP API.

This library requires Go1.7 or later.

Important note about releases, versioning, tagging, stability, and your favorite Go dependency management tool

While our goal is to follow Semantic Versioning, this repository is still pre-1.0.0. To quote the Semantic Versioning spec: “Anything may change at any time. The public API should not be considered stable.” We know that this is at odds with the widespread use of this library. However, just declaring something 1.0.0 doesn't make it 1.0.0. Instead, we are working towards a 1.0.0 release that actually deserves its major version number.

Having said that, we aim for always keeping the tip of master in a workable state and for only introducing ”mildly” breaking changes up to and including v0.9.0. After that, a number of ”hard” breaking changes are planned, see the v0.10.0 milestone, which should get the library much closer to 1.0.0 state.

Dependency management in Go projects is still in flux, and there are many tools floating around. While dep might develop into the de-facto standard tool, it is still officially experimental. The roadmap for this library has been laid out with a lot of sometimes painful experience in mind. We really cannot adjust it every other month to the needs of the currently most popular or most promising Go dependency management tool. The recommended course of action with dependency management tools is the following:

  • Do not expect strict post-1.0.0 semver semantics prior to the 1.0.0 release. If your dependency management tool expects strict post-1.0.0 semver semantics, you have to wait. Sorry.
  • If you want absolute certainty, please lock to a specific commit. You can also lock to tags, but please don't ask for more tagging. This would suggest some release or stability testing procedure that simply is not in place. As said above, we are aiming for stability of the tip of master, but if we tagged every single commit, locking to tags would be the same as locking to commits.
  • If you want to get the newer features and improvements and are willing to take the minor risk of newly introduced bugs and “mild” breakage, just always update to the tip of master (which is essentially the original idea of Go dependency management). We recommend to not use features marked as deprecated in this case.
  • Once v0.9.0 is out, you could lock to v0.9.x to get bugfixes (and perhaps minor new features) while avoiding the “hard” breakage that will come with post-0.9 features.

Instrumenting applications

code-coverage go-doc

The prometheus directory contains the instrumentation library. See the best practices section of the Prometheus documentation to learn more about instrumenting applications.

The examples directory contains simple examples of instrumented code.

Client for the Prometheus HTTP API

code-coverage go-doc

The api/prometheus directory contains the client for the Prometheus HTTP API. It allows you to write Go applications that query time series data from a Prometheus server. It is still in alpha stage.

Where is model, extraction, and text?

The model packages has been moved to prometheus/common/model.

The extraction and text packages are now contained in prometheus/common/expfmt.

Contributing and community

See the contributing guidelines and the Community section of the homepage.

Directories

Path Synopsis
api
Package api provides clients for the HTTP APIs.
Package api provides clients for the HTTP APIs.
prometheus/v1
Package v1 provides bindings to the Prometheus HTTP API v1: http://prometheus.io/docs/querying/api/
Package v1 provides bindings to the Prometheus HTTP API v1: http://prometheus.io/docs/querying/api/
examples
random
A simple example exposing fictional RPC latencies with different types of random distributions (uniform, normal, and exponential) as Prometheus metrics.
A simple example exposing fictional RPC latencies with different types of random distributions (uniform, normal, and exponential) as Prometheus metrics.
simple
A minimal example of how to include Prometheus instrumentation.
A minimal example of how to include Prometheus instrumentation.
Package prometheus is the core instrumentation package.
Package prometheus is the core instrumentation package.
graphite
Package graphite provides a bridge to push Prometheus metrics to a Graphite server.
Package graphite provides a bridge to push Prometheus metrics to a Graphite server.
promauto
Package promauto provides constructors for the usual Prometheus metrics that return them already registered with the global registry (prometheus.DefaultRegisterer).
Package promauto provides constructors for the usual Prometheus metrics that return them already registered with the global registry (prometheus.DefaultRegisterer).
promhttp
Package promhttp provides tooling around HTTP servers and clients.
Package promhttp provides tooling around HTTP servers and clients.
push
Package push provides functions to push metrics to a Pushgateway.
Package push provides functions to push metrics to a Pushgateway.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL