...

Text file src/github.com/prometheus/client_golang/README.md

Documentation: github.com/prometheus/client_golang

     1# Prometheus Go client library
     2
     3[![CI](https://github.com/prometheus/client_golang/actions/workflows/go.yml/badge.svg)](https://github.com/prometheus/client_golang/actions/workflows/ci.yml)
     4[![Go Report Card](https://goreportcard.com/badge/github.com/prometheus/client_golang)](https://goreportcard.com/report/github.com/prometheus/client_golang)
     5[![Go Reference](https://pkg.go.dev/badge/github.com/prometheus/client_golang.svg)](https://pkg.go.dev/github.com/prometheus/client_golang)
     6[![Slack](https://img.shields.io/badge/join%20slack-%23prometheus--client_golang-brightgreen.svg)](https://slack.cncf.io/)
     7
     8This is the [Go](http://golang.org) client library for
     9[Prometheus](http://prometheus.io). It has two separate parts, one for
    10instrumenting application code, and one for creating clients that talk to the
    11Prometheus HTTP API.
    12
    13**This library requires Go1.20 or later.**
    14> The library mandates the use of Go1.20 or subsequent versions. While it has demonstrated functionality with versions as old as Go 1.17, our commitment remains to offer support and rectifications for only the most recent three major releases.
    15
    16## Important note about releases and stability
    17
    18This repository generally follows [Semantic
    19Versioning](https://semver.org/). However, the API client in
    20`prometheus/client_golang/api/…` is still considered experimental. Breaking
    21changes of the API client will _not_ trigger a new major release. The same is
    22true for selected other new features explicitly marked as **EXPERIMENTAL** in
    23CHANGELOG.md.
    24
    25Features that require breaking changes in the stable parts of the repository
    26are being batched up and tracked in the [v2
    27milestone](https://github.com/prometheus/client_golang/milestone/2). The v2
    28development happens in a [separate
    29branch](https://github.com/prometheus/client_golang/tree/dev-v2) for the time
    30being. v2 releases off that branch will happen once sufficient stability is
    31reached. In view of the widespread use of this repository, v1 and v2 will
    32coexist for a while to enable a convenient transition.
    33
    34## Instrumenting applications
    35
    36[![Go Reference](https://pkg.go.dev/badge/github.com/prometheus/client_golang/prometheus.svg)](https://pkg.go.dev/github.com/prometheus/client_golang/prometheus)
    37
    38The
    39[`prometheus` directory](https://github.com/prometheus/client_golang/tree/main/prometheus)
    40contains the instrumentation library. See the
    41[guide](https://prometheus.io/docs/guides/go-application/) on the Prometheus
    42website to learn more about instrumenting applications.
    43
    44The
    45[`examples` directory](https://github.com/prometheus/client_golang/tree/main/examples)
    46contains simple examples of instrumented code.
    47
    48## Client for the Prometheus HTTP API
    49
    50[![Go Reference](https://pkg.go.dev/badge/github.com/prometheus/client_golang/api.svg)](https://pkg.go.dev/github.com/prometheus/client_golang/api)
    51
    52The
    53[`api/prometheus` directory](https://github.com/prometheus/client_golang/tree/main/api/prometheus)
    54contains the client for the
    55[Prometheus HTTP API](http://prometheus.io/docs/querying/api/). It allows you
    56to write Go applications that query time series data from a Prometheus
    57server. It is still in alpha stage.
    58
    59## Where is `model`, `extraction`, and `text`?
    60
    61The `model` packages has been moved to
    62[`prometheus/common/model`](https://github.com/prometheus/common/tree/main/model).
    63
    64The `extraction` and `text` packages are now contained in
    65[`prometheus/common/expfmt`](https://github.com/prometheus/common/tree/main/expfmt).
    66
    67## Contributing and community
    68
    69See the [contributing guidelines](CONTRIBUTING.md) and the
    70[Community section](http://prometheus.io/community/) of the homepage.
    71
    72`client_golang` community is also present on the CNCF Slack `#prometheus-client_golang`.
    73
    74### For Maintainers: Release Process
    75
    76To cut a minor version:
    77
    781. Create a new branch `release-<major>.<minor>` on top of the `main` commit you want to cut the version from and push it.
    792. Create a new branch on top of the release branch, e.g. `<yourname>/cut-<major>.<minor>.<patch>`,
    803. Change the `VERSION` file.
    814. Update `CHANGELOG` (only user-impacting changes to mention).
    825. Create PR, and get it reviewed.
    836. Once merged, create a release with the `release-<major>.<minor>` tag on GitHub with the `<version>` title.
    847. Announce on the prometheus-announce mailing list, slack and Twitter.
    858. Merge the release branch back to the `main` using the "merge without squashing" approach (!).
    86
    87> NOTE: In case of merge conflicts, you can checkout the release branch in a new branch, e.g. `<yourname>/resolve-conflicts`, fix the merge problems there, and then do a PR into main from the new branch. In that way, you still get all the commits in the release branch back into `main`, but leave the release branch alone.
    88
    89To cut the patch version:
    90
    911. Create a branch on top of the release branch you want to use.
    922. Cherry-pick the fixes from the `main` branch (or add new commits) to fix critical bugs for that patch release.
    933. Follow steps 3-8 as above.

View as plain text