amqprometheus

package
v0.2.8 Latest Latest
Warning

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

Go to latest
Published: Aug 17, 2022 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func PrometheusMiddleware added in v0.2.5

func PrometheusMiddleware(ps *PrometheusService) gin.HandlerFunc

Возвращает обработчик, собирающий метрики с каждого запроса. Типы метрик:

  • http_request_duration - gauge - длительность выполнения запроса
  • http_request_total - counter - кол-во запросов

func StreamServerPrometheusInterceptor

func StreamServerPrometheusInterceptor(prometheus *PrometheusService) grpc.StreamServerInterceptor

Возвращает нового потокового перехватчика, который добавляет метрики о длительности выполнения процедуры.

func UnaryServerPrometheusInterceptor

func UnaryServerPrometheusInterceptor(prometheus *PrometheusService) grpc.UnaryServerInterceptor

Возвращает нового унарного перехватчика, который добавляет метрики о длительности выполнения процедуры.

Types

type Batch added in v0.2.0

type Batch struct {
	MaxSize    int       // максимальный размер пачки
	LastSendAt time.Time // дата и время последней отправки батча
	// contains filtered or unexported fields
}

Батч с метриками.

func NewBatch added in v0.2.0

func NewBatch() Batch

Инициализирует новый батч.

func (*Batch) AddMetric added in v0.2.0

func (b *Batch) AddMetric(metric Metric)

Добавляет метрику в общий пул.

func (*Batch) MarshalJSON added in v0.2.0

func (b *Batch) MarshalJSON() ([]byte, error)

Сериализует список метрик в JSON.

func (*Batch) Reset added in v0.2.0

func (b *Batch) Reset()

Сбрасывает батч до начального состояния.

func (*Batch) Size added in v0.2.0

func (b *Batch) Size() (size int)

Возвращает текущий размер батча.

type Labels added in v0.2.0

type Labels map[string]string

func (Labels) With added in v0.2.0

func (l Labels) With(additional Labels) Labels

Добавляет к исходным лейблам новые. Возвращает новый map с объединенными лейблами.

type Metric added in v0.2.0

type Metric struct {
	Name   string     `json:"n"` // название метрики
	Value  float64    `json:"v"` // значение
	Labels Labels     `json:"l"` // лейблы
	Type   MetricType `json:"t"` // тип метрики
}

Общая структура статистической метрики.

type MetricType added in v0.2.0

type MetricType string
const (
	CounterMetricType MetricType = "counter"
	GaugeMetricType   MetricType = "gauge"
)

type PrometheusService

type PrometheusService struct {
	// Коллектор, запущенный в DRY режиме эмулирует сбор метрики,
	// но никуда их не отправляет.
	// Может быть использовано для dev режима, где нет необходимости в метриках.
	DRY bool

	DefaultLabels Labels // дефолтные лейблы, присваиваемые всем метрикам
	Prefix        string // префикс, добавляемый к названию всех метрик

	Exchange   string // обменник, через который пойдет сообщение
	Queue      string // очередь с метриками
	MessageTTL int    // время жизни сообщения в очереди

	Period    time.Duration // период отправки сообщений в RabbitMQ
	BatchSize int           // размер пакета с метриками
	BatchTTL  time.Duration // время жизни одного батча
	// contains filtered or unexported fields
}

Сервис для общения с Prometheus через RabbitMQ.

func NewPrometheusService

func NewPrometheusService(ctx context.Context, connection *r.Connection) (*PrometheusService, error)

Инициализирует новый сервис для отправки метрик в Prometheus.

func (*PrometheusService) AddMetric

func (ps *PrometheusService) AddMetric(metric Metric) error

Добавляет метрику в батч, который будет отправлен в очередь. Ничего не делает если коллектор запущен в DRY режиме.

func (*PrometheusService) Collect

func (ps *PrometheusService) Collect(ctx context.Context) error

Запускает цикл по обработке метрик. Ничего не делает если коллектор запущен в DRY режиме.

func (*PrometheusService) Counter

func (ps *PrometheusService) Counter(metric string, labels Labels) error

Добавляет counter-метрику в батч, который будет отправлен в Prometheus. Один вызов равняется +1 к метрике.

func (*PrometheusService) Duration

func (ps *PrometheusService) Duration(since time.Time, metric string, labels Labels) error

Добавляет gauge-метрику в батч, который будет отправлен в Prometheus. Рассчитывает метрику длительности выполнения кода. Значение метрики вычисляется в микросекундах.

func (*PrometheusService) ForceAddMetric

func (ps *PrometheusService) ForceAddMetric(metric Metric) error

Добавляет метрику напрямую в RabbitMQ, минуя механизм с батчами. Ничего не делает если коллектор запущен в DRY режиме.

func (*PrometheusService) ForceCounter added in v0.1.14

func (ps *PrometheusService) ForceCounter(metric string, labels Labels)

Добавляет counter-метрику в Prometheus. Один вызов равняется +1 к метрике.

func (*PrometheusService) ForceDuration added in v0.1.14

func (ps *PrometheusService) ForceDuration(since time.Time, metric string, labels Labels) error

Добавляет gauge-метрику в Prometheus. Рассчитывает метрику длительности выполнения кода. Значение метрики вычисляется в микросекундах.

func (*PrometheusService) ForceSystemMetrics added in v0.1.14

func (ps *PrometheusService) ForceSystemMetrics() error

Добавляет системные метрики в Prometheus. В системные метрики входят:

  • CPU, %
  • Memory usage, MB
  • Number of running goroutines

func (*PrometheusService) Init

func (ps *PrometheusService) Init(ctx context.Context) error

Инициализирует очередь, связанную с метриками для Prometheus.

func (*PrometheusService) Shutdown

func (ps *PrometheusService) Shutdown() error

Завершает процесс по отправке метрик в RabbitMQ.

func (*PrometheusService) SystemMetrics

func (ps *PrometheusService) SystemMetrics() error

Добавляет системные метрики батч, который будет отправлен в Prometheus. В системные метрики входят:

  • CPU, %
  • Memory usage, MB
  • Number of running goroutines

Jump to

Keyboard shortcuts

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