Documentation
¶
Overview ¶
Package receiver implements the receiver service.
Package receiver provides raw log storage implementations for storing and batching raw log data.
Index ¶
- Constants
- Variables
- func FormatTimestamp(t time.Time) string
- func RawLogDetailPageHandler(rawLogSet storage.Set) func(fctx *fasthttp.RequestCtx)
- func RawLogDetailPageHandlerFromReader(reader RawLogReader) func(fctx *fasthttp.RequestCtx)
- func RawLogMainPageHandler(rawLogIndexSet storage.Set) func(fctx *fasthttp.RequestCtx)
- func RawLogMainPageHandlerFromReader(reader RawLogReader) func(fctx *fasthttp.RequestCtx)
- type BatchingRawlogStorage
- type BatchingStorage
- type HitValidatingRule
- type NoopRawLogStorage
- type RawLogItem
- type RawLogReader
- type RawLogStorage
- type Server
- type Storage
- type StorageSetRawLogStorage
Constants ¶
const ( // HitProtocolMetadataKey is the key used to store the protocol ID in the hit metadata HitProtocolMetadataKey string = "protocol" )
Variables ¶
var ClientIDNotEmpty = NewSimpleHitValidatingRule(func(hit *hits.Hit) error { if hit.ClientID == "" || hit.AuthoritativeClientID == "" { return fmt.Errorf("hit.ClientID and hit.AuthoritativeClientID can not be empty") } return nil })
ClientIDNotEmpty validates that both ClientID and AuthoritativeClientID are not empty.
var EventNameNotEmpty = NewSimpleHitValidatingRule(func(hit *hits.Hit) error { if hit.EventName == "" { return fmt.Errorf("hit.EventName can not be empty") } return nil })
EventNameNotEmpty validates that EventName is not empty.
var HitBodyNotNil = NewSimpleHitValidatingRule(func(hit *hits.Hit) error { if hit.MustParsedRequest().Body == nil { return fmt.Errorf("hit.Body can not be nil") } return nil })
HitBodyNotNil validates that Body is not nil.
var HitHeadersNotEmpty = NewSimpleHitValidatingRule(func(hit *hits.Hit) error { if len(hit.MustParsedRequest().Headers) == 0 { return fmt.Errorf("hit.Headers can not be empty") } return nil })
HitHeadersNotEmpty validates that Headers are not empty.
var HitHostNotEmpty = NewSimpleHitValidatingRule(func(hit *hits.Hit) error { if hit.MustParsedRequest().Host == "" { return fmt.Errorf("hit.Host can not be empty") } return nil })
HitHostNotEmpty validates that Host is not empty.
var HitMethodNotEmpty = NewSimpleHitValidatingRule(func(hit *hits.Hit) error { if hit.MustParsedRequest().Method == "" { return fmt.Errorf("hit.Method can not be empty") } return nil })
HitMethodNotEmpty validates that Method is not empty.
var HitPathNotEmpty = NewSimpleHitValidatingRule(func(hit *hits.Hit) error { if hit.MustParsedRequest().Path == "" { return fmt.Errorf("hit.Path can not be empty") } return nil })
HitPathNotEmpty validates that Path is not empty.
var HitQueryParamsNotNil = NewSimpleHitValidatingRule(func(hit *hits.Hit) error { if hit.MustParsedRequest().QueryParams == nil { return fmt.Errorf("hit.QueryParams can not be nil") } return nil })
HitQueryParamsNotNil validates that QueryParams are not nil.
var PropertyIDNotEmpty = NewSimpleHitValidatingRule(func(hit *hits.Hit) error { if hit.PropertyID == "" { return fmt.Errorf("hit.PropertyID can not be empty") } return nil })
PropertyIDNotEmpty validates that PropertyID is not empty.
Functions ¶
func FormatTimestamp ¶
FormatTimestamp formats a timestamp to a readable ISO format
func RawLogDetailPageHandler ¶
func RawLogDetailPageHandler(rawLogSet storage.Set) func(fctx *fasthttp.RequestCtx)
RawLogDetailPageHandler returns a handler for the detail page showing content of a specific item
func RawLogDetailPageHandlerFromReader ¶
func RawLogDetailPageHandlerFromReader(reader RawLogReader) func(fctx *fasthttp.RequestCtx)
RawLogDetailPageHandlerFromReader returns a handler for the detail page using RawLogReader
func RawLogMainPageHandler ¶
func RawLogMainPageHandler(rawLogIndexSet storage.Set) func(fctx *fasthttp.RequestCtx)
RawLogMainPageHandler returns a handler for the main rawlog page showing all index items
func RawLogMainPageHandlerFromReader ¶
func RawLogMainPageHandlerFromReader(reader RawLogReader) func(fctx *fasthttp.RequestCtx)
RawLogMainPageHandlerFromReader returns a handler for the main rawlog page using RawLogReader
Types ¶
type BatchingRawlogStorage ¶
type BatchingRawlogStorage struct {
// contains filtered or unexported fields
}
BatchingRawlogStorage is a storage that batches raw log buffers and flushes them to a child storage.
func NewBatchingRawlogStorage ¶
func NewBatchingRawlogStorage(child RawLogStorage, batchSize int, timeout time.Duration) *BatchingRawlogStorage
NewBatchingRawlogStorage creates a new BatchingRawlogStorage instance.
func (*BatchingRawlogStorage) Close ¶
func (brs *BatchingRawlogStorage) Close()
Close closes the BatchingRawlogStorage instance.
func (*BatchingRawlogStorage) Flush ¶
func (brs *BatchingRawlogStorage) Flush() error
Flush flushes the buffer to the child storage.
type BatchingStorage ¶
type BatchingStorage struct {
// contains filtered or unexported fields
}
BatchingStorage is a storage that batches hits and flushes them to a child storage.
func NewBatchingStorage ¶
func NewBatchingStorage(child Storage, batchSize int, timeout time.Duration) *BatchingStorage
NewBatchingStorage creates a new BatchingStorage instance.
func (*BatchingStorage) Close ¶
func (bs *BatchingStorage) Close()
Close closes the BatchingStorage instance.
func (*BatchingStorage) Flush ¶
func (bs *BatchingStorage) Flush() error
Flush flushes the buffer to the child storage.
type HitValidatingRule ¶
HitValidatingRule defines the interface for validating hits.
func HitValidatingRuleSet ¶
func HitValidatingRuleSet(maxHitSizeBytes uint32) HitValidatingRule
HitValidatingRuleSet returns a complete set of validation rules for hits.
func NewMultipleHitValidatingRule ¶
func NewMultipleHitValidatingRule(rules ...HitValidatingRule) HitValidatingRule
NewMultipleHitValidatingRule creates a new validating rule that combines multiple rules.
func NewSimpleHitValidatingRule ¶
func NewSimpleHitValidatingRule(rule func(*hits.Hit) error) HitValidatingRule
NewSimpleHitValidatingRule creates a new validating rule from a simple function.
func TotalHitSizeDoesNotExceed ¶ added in v0.17.0
func TotalHitSizeDoesNotExceed(maxHitSizeBytes uint32) HitValidatingRule
TotalHitSizeDoesNotExceed validates that the total size of the hit does not exceed the max allowed size.
type NoopRawLogStorage ¶ added in v0.13.0
type NoopRawLogStorage struct{}
NoopRawLogStorage discards all raw log data.
type RawLogItem ¶
RawLogItem represents a single raw log item with its identifier and timestamp
type RawLogReader ¶
type RawLogReader interface {
// ListItems returns a list of raw log items sorted by timestamp (newest first)
ListItems() ([]RawLogItem, error)
// GetContent returns the content of a specific raw log item by ID
GetContent(itemID string) ([]byte, error)
}
RawLogReader defines the interface for reading raw log data
type RawLogStorage ¶
RawLogStorage defines the interface for storing raw log data
func NewDummyRawLogStorage ¶
func NewDummyRawLogStorage() RawLogStorage
NewDummyRawLogStorage creates a dummy raw log storage that discards all data.
func NewNoopRawLogStorage ¶ added in v0.13.0
func NewNoopRawLogStorage() RawLogStorage
NewNoopRawLogStorage creates a noop raw log storage that discards all data.
type Server ¶ added in v0.17.0
type Server struct {
// contains filtered or unexported fields
}
Server holds all server-related dependencies and configuration
func NewServer ¶ added in v0.17.0
func NewServer( storage Storage, rawLogStorage RawLogStorage, validationRules HitValidatingRule, protocols []protocol.Protocol, port int, ) *Server
NewServer creates a new Server instance with the provided dependencies
type Storage ¶
Storage is a storage interface for storing hits
func NewDropToStdoutStorage ¶
func NewDropToStdoutStorage() Storage
NewDropToStdoutStorage creates a new storage instance that writes hits to stdout
type StorageSetRawLogStorage ¶
type StorageSetRawLogStorage struct {
// contains filtered or unexported fields
}
StorageSetRawLogStorage implements RawLogStorage using a storage.KV backend.
func NewFromStorageSetRawLogStorage ¶
func NewFromStorageSetRawLogStorage(rawlogSet, indexSet storage.Set) *StorageSetRawLogStorage
NewFromStorageSetRawLogStorage creates a new StorageSetRawLogStorage instance.
func (*StorageSetRawLogStorage) GetContent ¶
func (s *StorageSetRawLogStorage) GetContent(itemID string) ([]byte, error)
GetContent implements RawLogReader by loading and joining content for a given item ID.
func (*StorageSetRawLogStorage) ListItems ¶
func (s *StorageSetRawLogStorage) ListItems() ([]RawLogItem, error)
ListItems implements RawLogReader by returning indexed raw log items sorted by timestamp.