1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
# client_golang experimental module
Contains experimental utilities and APIs for Prometheus.
The module may be contain breaking changes or be removed in the future.
Packages within this module are listed below.
## Remote
Implements bindings from Prometheus remote APIs (remote write v1 and v2 for now).
Contains flexible method for building API clients, that can send remote write protocol messages.
```go
import (
"github.com/prometheus/client_golang/exp/api/remote"
)
...
remoteAPI, err := remote.NewAPI(
"https://your-remote-endpoint",
remote.WithAPIHTTPClient(httpClient),
remote.WithAPILogger(logger.With("component", "remote_write_api")),
)
...
stats, err := remoteAPI.Write(ctx, remote.WriteV2MessageType, protoWriteReq)
```
Also contains handler methods for applications that would like to handle and store remote write requests.
```go
import (
"net/http"
"log"
"github.com/prometheus/client_golang/exp/api/remote"
)
...
type db {}
func NewStorage() *db {}
func (d *db) Store(ctx context.Context, msgType remote.WriteMessageType, req *http.Request) (*remote.WriteResponse, error) {}
...
mux := http.NewServeMux()
remoteWriteHandler := remote.NewHandler(storage, remote.WithHandlerLogger(logger.With("component", "remote_write_handler")))
mux.Handle("/api/v1/write", remoteWriteHandler)
server := &http.Server{
Addr: ":8080",
Handler: mux,
}
if err := server.ListenAndServe(); err != nil {
log.Fatal(err)
}
```
For more details, see [go doc](https://pkg.go.dev/github.com/prometheus/client_golang/exp/api/remote).
|