promred

module
v1.2.0 Latest Latest
Warning

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

Go to latest
Published: Oct 25, 2021 License: Apache-2.0

README

PromRED

CircleCI codecov

This package provides RED Method instrumentation via Prometheus for the following

AWS SNS

Disclaimer: This makes use of V2 of the AWS-SDK-Go

Available methods

  • Publish
How to use
import (
	instrumentation "github.com/jamieaitken/promred/sns"
	"github.com/aws/aws-sdk-go-v2/service/sns"
)

snsClient := sns.New(sns.Options{})

instr := instrumentation.New(snsClient)

out, err := instr.Publish(ctx, &sns.PublishInput{}, nil, "main")
if err != nil {
	return err
}

AWS SQS

Disclaimer: This makes use of V2 of the AWS-SDK-Go

Available methods

  • ReceiveMessage
  • SendMessage
How to use
import (
	instrumentation "github.com/jamieaitken/promred/sqs"
	"github.com/aws/aws-sdk-go-v2/service/sqs"
)

sqsClient := sqs.New(sqs.Options{})

instr := instrumentation.New(sqsClient)

out, err := instr.ReceiveMessage(ctx, &sqs.ReceiveMessageInput{}, nil, "main")
if err != nil {
	return err
}

Doers

A doer performs an HTTP Request and returns either an HTTP Response or an error.

Available methods

  • Do
How to use
import (
	instrumentation "github.com/jamieaitken/promred/doer"
	"net/http"
)

httpClient := &http.Client{}

instr := instrumentation.New(httpClient)

request := http.NewRequestWithContext(context.Background(), http.MethodGet, "https://example.com", nil)

res, err := instr.Do(request)
if err != nil {
	return err
}

Handlers

This provides instrumentation for http.Handlers, more specifically HandlerFunc

Available methods

  • HandleFor
How to use
import (
    instrumentation "github.com/jamieaitken/promred/handler"
    "net/http"
)

instr := instrumentation.New()

router := new(http.ServeMux)

router.HandleFunc("/v1/docs", h.HandleFor(handler.Get))


Kafka

This can provide an instrumented Heartbeater, Reader and Writer from segmentio/kafka-go

Kafka Heartbeater

Available methods

  • Heartbeat
How to use
import (
	instrumentation "github.com/jamieaitken/promred/kafka"
	"github.com/segmentio/kafka-go"
)

client := kafka.Client{}

instr := instrumentation.NewHeartbeater(client)

res, err := instr.Heartbeat(context.Background(), &kafka.HeartbeatRequest{},"main")
if err != nil {
	return err
}
Kafka Reader

Available methods

  • ReadMessage
  • Close
How to use
import (
	instrumentation "github.com/jamieaitken/promred/kafka"
	"github.com/segmentio/kafka-go"
)

reader := kafka.NewReader(kafka.ReaderConfig{})

instr := instrumentation.NewReader(reader)

msg, err := instr.ReadMessage(context.Background(), "main")
if err != nil {
	return err
}
Kafka Writer

Available methods

  • WriteMessages
  • Close
How to use
import (
	instrumentation "github.com/jamieaitken/promred/kafka"
	"github.com/segmentio/kafka-go"
)

writer := kafka.Writer{}

instr := instrumentation.NewWriter(writer)

err := instr.WriteMessages(context.Background(), []kafka.Message{}, "main")
if err != nil {
	return err
}

Redis

This accepts a go-redis client and provides instrumentation for the following methods

Available methods

  • Get
  • HGet
  • MGet
  • MSet
  • Set
  • SetEX
  • Ping
How to use
import (
    "github.com/go-redis/redis/v8"
    instrumentation "github.com/jamieaitken/promred/redis"
)

redisClient := redis.NewClient(&redis.Options{})

instr := instrumentation.New(redisClient)

cmd := instr.Get(context.Background(), "key", "main")
if cmd.Err() != nil {
	return cmd.Err()
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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