amqpclickhouse

package
v0.2.18 Latest Latest
Warning

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

Go to latest
Published: Jun 23, 2023 License: MIT Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DATE_TIME_LAYOUT = "2006-01-02 15:04:05"
	DATE_LAYOUT      = "2006-01-02"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Batch

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

Пачка метрик, отправляемая в ClickHouse через RabbitMQ.

func NewBatch

func NewBatch() Batch

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

func (*Batch) AddMetric

func (b *Batch) AddMetric(metric Metric)

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

func (*Batch) MarshalJSON

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

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

func (*Batch) Reset

func (b *Batch) Reset()

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

func (*Batch) Size

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

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

type ClickHouseService

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

	Exchange       string // обменник, через который будет отправляться метрики
	Queue          string // очередь, в которую будут складываться метрики
	BridgeExchange string // промежуточный обменник между главным обменником и очередью
	RoutingKey     string // ключ маршрутизации (по умолчанию соответствует названию очереди)

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

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

func NewClickHouseService

func NewClickHouseService(ctx context.Context, connection *rabbit.Connection) (*ClickHouseService, error)

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

func (*ClickHouseService) AddMetric

func (chs *ClickHouseService) AddMetric(metric Metric) error

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

func (*ClickHouseService) Collect

func (chs *ClickHouseService) Collect(ctx context.Context) error

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

func (*ClickHouseService) ForceAddMetric

func (chs *ClickHouseService) ForceAddMetric(metric Metric) error

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

func (*ClickHouseService) Shutdown

func (chs *ClickHouseService) Shutdown() error

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

type Metric

type Metric struct {
	Name      string    // название метрики
	CreatedAt time.Time // дата и время создания метрики

	Value         uint64    // целочисленная метрика
	ValueFloat    float64   // дробная метрика
	ValueString   string    // строковая метрика
	ValueDateTime time.Time // временная метрика
	Duration      float64   // длительность выполняемой операции

	ModelType string // тип/класс связанной структуры
	ModelID   string // ID связанной структуры

	UserID    uint64 // ID пользователя, с которым связана метрика
	CompanyID uint64 // ID компании, с которой связана метрика
	DomainID  uint64 // ID домена, с которым связана метрика

	Expirable bool     // метрика протухаемая?
	Labels    []string // доп. лейблы
}

Метрика общего вида.

func NewMetric

func NewMetric(
	name string,
	createdAt *time.Time,
	value uint64,
	valueFloat float64,
	valueString string,
	valueDateTime *time.Time,
	duration float64,
	modelType string,
	modelID string,
	userID uint64,
	domainID uint64,
	companyID uint64,
	expirable bool,
	labels []string,
) Metric

Возвращает новую метрику с предзаполненными полями.

func (*Metric) MarshalJSON

func (m *Metric) MarshalJSON() ([]byte, error)

Jump to

Keyboard shortcuts

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