redisotel

package module
v0.0.0-...-4635ca7 Latest Latest
Warning

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

Go to latest
Published: Jan 5, 2023 License: MIT Imports: 15 Imported by: 0

README

OpenTelemetry instrumentation metrics for go-redis v8

Installation

go get github.com/panjiang/redisotelv8

Usage

import (
	"time"

	redisotel "github.com/panjiang/redisotelv8"
	"github.com/go-redis/redis/v8"
)

rdb := redis.NewUniversalClient(&redis.UniversalOptions{
    Addrs: []string{"localhost:7000"},
})

if err := redisotel.ExportMetricsForPrometheus(rdb, redisotel.WithSlowDur(time.Second)); err != nil {
    panic(err)
}

Or

import (
	"time"

	redisotel "github.com/panjiang/redisotelv8"
	"github.com/go-redis/redis/v8"
)

rdb := redis.NewUniversalClient(&redis.UniversalOptions{
    Addrs: []string{"localhost:7000"},
})

mp, err := redisotel.NewPrometheusMeterProvider()
if err != nil {
    panic(err)
}

if err := redisotel.InstrumentMetrics(rdb, redisotel.WithMeterProvider(mp)); err != nil {
    panic(err)
}

Metrics

# HELP db_client_connections_idle_min The minimum number of idle open connections allowed
# TYPE db_client_connections_idle_min gauge
db_client_connections_idle_min{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7000"} 0
db_client_connections_idle_min{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7001"} 0
db_client_connections_idle_min{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7002"} 0
# HELP db_client_connections_max The maximum number of open connections allowed
# TYPE db_client_connections_max gauge
db_client_connections_max{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7000"} 40
db_client_connections_max{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7001"} 40
db_client_connections_max{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7002"} 40
# HELP db_client_connections_timeouts The number of connection timeouts that have occurred trying to obtain a connection from the pool
# TYPE db_client_connections_timeouts gauge
db_client_connections_timeouts{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7000"} 0
db_client_connections_timeouts{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7001"} 0
db_client_connections_timeouts{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7002"} 0
# HELP db_client_connections_usage The number of connections that are currently in state described by the state attribute
# TYPE db_client_connections_usage gauge
db_client_connections_usage{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7000",state="idle"} 1
db_client_connections_usage{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7000",state="used"} 0
db_client_connections_usage{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7001",state="idle"} 1
db_client_connections_usage{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7001",state="used"} 1
db_client_connections_usage{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7002",state="idle"} 2
db_client_connections_usage{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7002",state="used"} 0
# HELP db_client_connections_use_time_milliseconds The time between borrowing a connection and returning it to the pool.
# TYPE db_client_connections_use_time_milliseconds histogram
db_client_connections_use_time_milliseconds_bucket{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7000",status="ok",type="command",le="0"} 5
db_client_connections_use_time_milliseconds_bucket{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7000",status="ok",type="command",le="5"} 5
db_client_connections_use_time_milliseconds_bucket{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7000",status="ok",type="command",le="10"} 5
db_client_connections_use_time_milliseconds_bucket{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7000",status="ok",type="command",le="25"} 5
db_client_connections_use_time_milliseconds_bucket{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7000",status="ok",type="command",le="50"} 5
db_client_connections_use_time_milliseconds_bucket{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7000",status="ok",type="command",le="75"} 5
db_client_connections_use_time_milliseconds_bucket{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7000",status="ok",type="command",le="100"} 5
db_client_connections_use_time_milliseconds_bucket{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7000",status="ok",type="command",le="250"} 5
db_client_connections_use_time_milliseconds_bucket{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7000",status="ok",type="command",le="500"} 5
db_client_connections_use_time_milliseconds_bucket{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7000",status="ok",type="command",le="750"} 5
db_client_connections_use_time_milliseconds_bucket{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7000",status="ok",type="command",le="1000"} 5
db_client_connections_use_time_milliseconds_bucket{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7000",status="ok",type="command",le="2500"} 5
db_client_connections_use_time_milliseconds_bucket{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7000",status="ok",type="command",le="5000"} 5
db_client_connections_use_time_milliseconds_bucket{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7000",status="ok",type="command",le="7500"} 5
db_client_connections_use_time_milliseconds_bucket{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7000",status="ok",type="command",le="10000"} 5
db_client_connections_use_time_milliseconds_bucket{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7000",status="ok",type="command",le="+Inf"} 5
db_client_connections_use_time_milliseconds_sum{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7000",status="ok",type="command"} 0
db_client_connections_use_time_milliseconds_count{db_system="redis",otel_scope_name="redisotel",otel_scope_version="8.11.5",pool_name="127.0.0.1:7000",status="ok",type="command"} 5

Refrences

Documentation

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func ExportMetricsForPrometheus

func ExportMetricsForPrometheus(rdb redis.UniversalClient, opts ...MetricsOption) error

Export redis metrics with otel meter for default prometheus register.

Example
rdb := redis.NewUniversalClient(&redis.UniversalOptions{
	Addrs: []string{"localhost:7000"},
})

if err := redisotel.ExportMetricsForPrometheus(rdb, redisotel.WithSlowDur(time.Second)); err != nil {
	panic(err)
}
Output:

func InstrumentMetrics

func InstrumentMetrics(rdb redis.UniversalClient, opts ...MetricsOption) error
Example
rdb := redis.NewUniversalClient(&redis.UniversalOptions{
	Addrs: []string{"localhost:7000"},
})

mp, err := redisotel.NewPrometheusMeterProvider()
if err != nil {
	panic(err)
}

if err := redisotel.InstrumentMetrics(rdb, redisotel.WithMeterProvider(mp)); err != nil {
	panic(err)
}
Output:

func NewPrometheusMeterProvider

func NewPrometheusMeterProvider(opts ...prometheus.Option) (*metric.MeterProvider, error)

Types

type MetricsOption

type MetricsOption interface {
	// contains filtered or unexported methods
}

func WithMeterProvider

func WithMeterProvider(mp metric.MeterProvider) MetricsOption

WithMeterProvider configures a metric.Meter used to create instruments.

type Option

type Option interface {
	// contains filtered or unexported methods
}

func WithAttributes

func WithAttributes(attrs ...attribute.KeyValue) Option

WithAttributes specifies additional attributes to be added to the span.

func WithDBSystem

func WithDBSystem(dbSystem string) Option

func WithSlowDur

func WithSlowDur(dur time.Duration) Option

type TracingOption

type TracingOption interface {
	// contains filtered or unexported methods
}

func WithTracerProvider

func WithTracerProvider(provider trace.TracerProvider) TracingOption

WithTracerProvider specifies a tracer provider to use for creating a tracer. If none is specified, the global provider is used.

Jump to

Keyboard shortcuts

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