An open API service indexing awesome lists of open source software.

https://github.com/globocom/go-redis-prometheus

go-redis hook to export Prometheus metrics
https://github.com/globocom/go-redis-prometheus

go go-redis golang prometheus redis

Last synced: 4 months ago
JSON representation

go-redis hook to export Prometheus metrics

Awesome Lists containing this project

README

          

# go-redis-prometheus










[go-redis](https://github.com/go-redis/redis) hook that exports Prometheus metrics.

Also check out our lib https://github.com/globocom/go-redis-opentracing.

## Installation

go get github.com/globocom/go-redis-prometheus

## Usage

```golang
package main

import (
"github.com/go-redis/redis/v8"
"github.com/globocom/go-redis-prometheus"
)

func main() {
hook := redisprom.NewHook(
redisprom.WithInstanceName("cache"),
redisprom.WithNamespace("my_namespace"),
redisprom.WithDurationBuckets([]float64{.001, .005, .01}),
)

client := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "",
})
client.AddHook(hook)

// run redis commands...
}
```

## Exported metrics

The hook exports the following metrics:

- Single commands (not pipelined):
- Histogram of commands: `redis_single_commands_bucket{instance="main",command="get"}`
- Counter of errors: `redis_single_errors{instance="main",command="get"}`
- Pipelined commands:
- Counter of commands: `redis_pipelined_commands{instance="main",command="get"}`
- Counter of errors: `redis_pipelined_errors{instance="main",command="get"}`

## Note on pipelines

It isn't possible to measure the duration of individual
pipelined commands, but the duration of the pipeline itself is calculated and
exported as a pseudo-command called "pipeline" under the single command metric.

## API stability

The API is unstable at this point and it might change before `v1.0.0` is released.