stats

package
v2.4.3 Latest Latest
Warning

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

Go to latest
Published: Mar 21, 2022 License: AGPL-3.0 Imports: 15 Imported by: 0

Documentation

Overview

Package stats provides primitives for recording metrics across the query path. Statistics are passed through the query context. To start a new query statistics context use:

statsCtx, ctx := stats.NewContext(ctx)

Then you can update statistics by mutating data by using:

statsCtx.Add...(1)

To get the statistic from the current context you can use:

statsCtx := stats.FromContext(ctx)

Finally to get a snapshot of the current query statistic use

statsCtx.Result(time.Since(start))

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInvalidLengthStats = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowStats   = fmt.Errorf("proto: integer overflow")
)

Functions

func ConvertSecondsToNanoseconds

func ConvertSecondsToNanoseconds(seconds float64) time.Duration

ConvertSecondsToNanoseconds converts time.Duration representation of seconds (float64) into time.Duration representation of nanoseconds (int64)

func JoinIngesters

func JoinIngesters(ctx context.Context, inc Ingester)

JoinIngesterResult joins the ingester result statistics in a concurrency-safe manner.

func JoinResults

func JoinResults(ctx context.Context, res Result)

JoinResults merges a Result with the embedded Result in a context in a concurrency-safe manner.

Types

type Chunk

type Chunk struct {
	// Total bytes processed but was already in memory. (found in the headchunk)
	HeadChunkBytes int64 `protobuf:"varint,4,opt,name=headChunkBytes,proto3" json:"headChunkBytes"`
	// Total lines processed but was already in memory. (found in the headchunk)
	HeadChunkLines int64 `protobuf:"varint,5,opt,name=headChunkLines,proto3" json:"headChunkLines"`
	// Total bytes decompressed and processed from chunks.
	DecompressedBytes int64 `protobuf:"varint,6,opt,name=decompressedBytes,proto3" json:"decompressedBytes"`
	// Total lines decompressed and processed from chunks.
	DecompressedLines int64 `protobuf:"varint,7,opt,name=decompressedLines,proto3" json:"decompressedLines"`
	// Total bytes of compressed chunks (blocks) processed.
	CompressedBytes int64 `protobuf:"varint,8,opt,name=compressedBytes,proto3" json:"compressedBytes"`
	// Total duplicates found while processing.
	TotalDuplicates int64 `protobuf:"varint,9,opt,name=totalDuplicates,proto3" json:"totalDuplicates"`
}

func (*Chunk) Descriptor

func (*Chunk) Descriptor() ([]byte, []int)

func (*Chunk) Equal

func (this *Chunk) Equal(that interface{}) bool

func (*Chunk) GetCompressedBytes

func (m *Chunk) GetCompressedBytes() int64

func (*Chunk) GetDecompressedBytes

func (m *Chunk) GetDecompressedBytes() int64

func (*Chunk) GetDecompressedLines

func (m *Chunk) GetDecompressedLines() int64

func (*Chunk) GetHeadChunkBytes

func (m *Chunk) GetHeadChunkBytes() int64

func (*Chunk) GetHeadChunkLines

func (m *Chunk) GetHeadChunkLines() int64

func (*Chunk) GetTotalDuplicates

func (m *Chunk) GetTotalDuplicates() int64

func (*Chunk) GoString

func (this *Chunk) GoString() string

func (*Chunk) Marshal

func (m *Chunk) Marshal() (dAtA []byte, err error)

func (*Chunk) MarshalTo

func (m *Chunk) MarshalTo(dAtA []byte) (int, error)

func (*Chunk) MarshalToSizedBuffer

func (m *Chunk) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*Chunk) ProtoMessage

func (*Chunk) ProtoMessage()

func (*Chunk) Reset

func (m *Chunk) Reset()

func (*Chunk) Size

func (m *Chunk) Size() (n int)

func (*Chunk) String

func (this *Chunk) String() string

func (*Chunk) Unmarshal

func (m *Chunk) Unmarshal(dAtA []byte) error

func (*Chunk) XXX_DiscardUnknown

func (m *Chunk) XXX_DiscardUnknown()

func (*Chunk) XXX_Marshal

func (m *Chunk) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Chunk) XXX_Merge

func (m *Chunk) XXX_Merge(src proto.Message)

func (*Chunk) XXX_Size

func (m *Chunk) XXX_Size() int

func (*Chunk) XXX_Unmarshal

func (m *Chunk) XXX_Unmarshal(b []byte) error

type Component

type Component int64

type Context

type Context struct {
	// contains filtered or unexported fields
}

Context is the statistics context. It is passed through the query path and accumulates statistics.

func FromContext

func FromContext(ctx context.Context) *Context

FromContext returns the statistics context.

func NewContext

func NewContext(ctx context.Context) (*Context, context.Context)

NewContext creates a new statistics context

func (*Context) AddChunksDownloadTime

func (c *Context) AddChunksDownloadTime(i time.Duration)

func (*Context) AddChunksDownloaded

func (c *Context) AddChunksDownloaded(i int64)

func (*Context) AddChunksRef

func (c *Context) AddChunksRef(i int64)

func (*Context) AddCompressedBytes

func (c *Context) AddCompressedBytes(i int64)

func (*Context) AddDecompressedBytes

func (c *Context) AddDecompressedBytes(i int64)

func (*Context) AddDecompressedLines

func (c *Context) AddDecompressedLines(i int64)

func (*Context) AddDuplicates

func (c *Context) AddDuplicates(i int64)

func (*Context) AddHeadChunkBytes

func (c *Context) AddHeadChunkBytes(i int64)

func (*Context) AddHeadChunkLines

func (c *Context) AddHeadChunkLines(i int64)

func (*Context) AddIngesterBatch

func (c *Context) AddIngesterBatch(size int64)

func (*Context) AddIngesterReached

func (c *Context) AddIngesterReached(i int32)

func (*Context) AddIngesterTotalChunkMatched

func (c *Context) AddIngesterTotalChunkMatched(i int64)

func (*Context) Ingester

func (c *Context) Ingester() Ingester

Ingester returns the ingester statistics accumulated so far.

func (*Context) Reset

func (c *Context) Reset()

Reset clears the statistics.

func (*Context) Result

func (c *Context) Result(execTime time.Duration, queueTime time.Duration) Result

Result calculates the summary based on store and ingester data.

type Ingester

type Ingester struct {
	// Total ingester reached for this query.
	TotalReached int32 `protobuf:"varint,1,opt,name=totalReached,proto3" json:"totalReached"`
	// Total of chunks matched by the query from ingesters
	TotalChunksMatched int64 `protobuf:"varint,2,opt,name=totalChunksMatched,proto3" json:"totalChunksMatched"`
	// Total of batches sent from ingesters.
	TotalBatches int64 `protobuf:"varint,3,opt,name=totalBatches,proto3" json:"totalBatches"`
	// Total lines sent by ingesters.
	TotalLinesSent int64 `protobuf:"varint,4,opt,name=totalLinesSent,proto3" json:"totalLinesSent"`
	Store          Store `protobuf:"bytes,5,opt,name=store,proto3" json:"store"`
}

func (*Ingester) Descriptor

func (*Ingester) Descriptor() ([]byte, []int)

func (*Ingester) Equal

func (this *Ingester) Equal(that interface{}) bool

func (*Ingester) GetStore

func (m *Ingester) GetStore() Store

func (*Ingester) GetTotalBatches

func (m *Ingester) GetTotalBatches() int64

func (*Ingester) GetTotalChunksMatched

func (m *Ingester) GetTotalChunksMatched() int64

func (*Ingester) GetTotalLinesSent

func (m *Ingester) GetTotalLinesSent() int64

func (*Ingester) GetTotalReached

func (m *Ingester) GetTotalReached() int32

func (*Ingester) GoString

func (this *Ingester) GoString() string

func (*Ingester) Marshal

func (m *Ingester) Marshal() (dAtA []byte, err error)

func (*Ingester) MarshalTo

func (m *Ingester) MarshalTo(dAtA []byte) (int, error)

func (*Ingester) MarshalToSizedBuffer

func (m *Ingester) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*Ingester) Merge

func (i *Ingester) Merge(m Ingester)

func (*Ingester) ProtoMessage

func (*Ingester) ProtoMessage()

func (*Ingester) Reset

func (m *Ingester) Reset()

func (*Ingester) Size

func (m *Ingester) Size() (n int)

func (*Ingester) String

func (this *Ingester) String() string

func (*Ingester) Unmarshal

func (m *Ingester) Unmarshal(dAtA []byte) error

func (*Ingester) XXX_DiscardUnknown

func (m *Ingester) XXX_DiscardUnknown()

func (*Ingester) XXX_Marshal

func (m *Ingester) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Ingester) XXX_Merge

func (m *Ingester) XXX_Merge(src proto.Message)

func (*Ingester) XXX_Size

func (m *Ingester) XXX_Size() int

func (*Ingester) XXX_Unmarshal

func (m *Ingester) XXX_Unmarshal(b []byte) error

type Querier

type Querier struct {
	Store Store `protobuf:"bytes,1,opt,name=store,proto3" json:"store"`
}

func (*Querier) Descriptor

func (*Querier) Descriptor() ([]byte, []int)

func (*Querier) Equal

func (this *Querier) Equal(that interface{}) bool

func (*Querier) GetStore

func (m *Querier) GetStore() Store

func (*Querier) GoString

func (this *Querier) GoString() string

func (*Querier) Marshal

func (m *Querier) Marshal() (dAtA []byte, err error)

func (*Querier) MarshalTo

func (m *Querier) MarshalTo(dAtA []byte) (int, error)

func (*Querier) MarshalToSizedBuffer

func (m *Querier) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*Querier) Merge

func (q *Querier) Merge(m Querier)

func (*Querier) ProtoMessage

func (*Querier) ProtoMessage()

func (*Querier) Reset

func (m *Querier) Reset()

func (*Querier) Size

func (m *Querier) Size() (n int)

func (*Querier) String

func (this *Querier) String() string

func (*Querier) Unmarshal

func (m *Querier) Unmarshal(dAtA []byte) error

func (*Querier) XXX_DiscardUnknown

func (m *Querier) XXX_DiscardUnknown()

func (*Querier) XXX_Marshal

func (m *Querier) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Querier) XXX_Merge

func (m *Querier) XXX_Merge(src proto.Message)

func (*Querier) XXX_Size

func (m *Querier) XXX_Size() int

func (*Querier) XXX_Unmarshal

func (m *Querier) XXX_Unmarshal(b []byte) error

type Result

type Result struct {
	Summary  Summary  `protobuf:"bytes,1,opt,name=summary,proto3" json:"summary"`
	Querier  Querier  `protobuf:"bytes,2,opt,name=querier,proto3" json:"querier"`
	Ingester Ingester `protobuf:"bytes,3,opt,name=ingester,proto3" json:"ingester"`
}

Result contains LogQL query statistics.

func (Result) ChunksDownloadTime

func (r Result) ChunksDownloadTime() time.Duration

func (*Result) ComputeSummary

func (r *Result) ComputeSummary(execTime time.Duration, queueTime time.Duration)

ComputeSummary compute the summary of the statistics.

func (*Result) Descriptor

func (*Result) Descriptor() ([]byte, []int)

func (*Result) Equal

func (this *Result) Equal(that interface{}) bool

func (*Result) GetIngester

func (m *Result) GetIngester() Ingester

func (*Result) GetQuerier

func (m *Result) GetQuerier() Querier

func (*Result) GetSummary

func (m *Result) GetSummary() Summary

func (*Result) GoString

func (this *Result) GoString() string

func (Result) Log

func (r Result) Log(log log.Logger)

Log logs a query statistics result.

func (*Result) Marshal

func (m *Result) Marshal() (dAtA []byte, err error)

func (*Result) MarshalTo

func (m *Result) MarshalTo(dAtA []byte) (int, error)

func (*Result) MarshalToSizedBuffer

func (m *Result) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*Result) Merge

func (r *Result) Merge(m Result)

Merge merges two results of statistics. This will increase the total number of Subqueries.

func (*Result) ProtoMessage

func (*Result) ProtoMessage()

func (*Result) Reset

func (m *Result) Reset()

func (*Result) Size

func (m *Result) Size() (n int)

func (*Result) String

func (this *Result) String() string

func (Result) TotalChunksDownloaded

func (r Result) TotalChunksDownloaded() int64

func (Result) TotalChunksRef

func (r Result) TotalChunksRef() int64

func (Result) TotalDecompressedBytes

func (r Result) TotalDecompressedBytes() int64

func (Result) TotalDecompressedLines

func (r Result) TotalDecompressedLines() int64

func (Result) TotalDuplicates

func (r Result) TotalDuplicates() int64

func (*Result) Unmarshal

func (m *Result) Unmarshal(dAtA []byte) error

func (*Result) XXX_DiscardUnknown

func (m *Result) XXX_DiscardUnknown()

func (*Result) XXX_Marshal

func (m *Result) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Result) XXX_Merge

func (m *Result) XXX_Merge(src proto.Message)

func (*Result) XXX_Size

func (m *Result) XXX_Size() int

func (*Result) XXX_Unmarshal

func (m *Result) XXX_Unmarshal(b []byte) error

type Store

type Store struct {
	// The total of chunk reference fetched from index.
	TotalChunksRef int64 `protobuf:"varint,1,opt,name=totalChunksRef,proto3" json:"totalChunksRef"`
	// Total number of chunks fetched.
	TotalChunksDownloaded int64 `protobuf:"varint,2,opt,name=totalChunksDownloaded,proto3" json:"totalChunksDownloaded"`
	// Time spent fetching chunks in nanoseconds.
	ChunksDownloadTime int64 `protobuf:"varint,3,opt,name=chunksDownloadTime,proto3" json:"chunksDownloadTime"`
	Chunk              Chunk `protobuf:"bytes,4,opt,name=chunk,proto3" json:"chunk"`
}

func (*Store) Descriptor

func (*Store) Descriptor() ([]byte, []int)

func (*Store) Equal

func (this *Store) Equal(that interface{}) bool

func (*Store) GetChunk

func (m *Store) GetChunk() Chunk

func (*Store) GetChunksDownloadTime

func (m *Store) GetChunksDownloadTime() int64

func (*Store) GetTotalChunksDownloaded

func (m *Store) GetTotalChunksDownloaded() int64

func (*Store) GetTotalChunksRef

func (m *Store) GetTotalChunksRef() int64

func (*Store) GoString

func (this *Store) GoString() string

func (*Store) Marshal

func (m *Store) Marshal() (dAtA []byte, err error)

func (*Store) MarshalTo

func (m *Store) MarshalTo(dAtA []byte) (int, error)

func (*Store) MarshalToSizedBuffer

func (m *Store) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*Store) Merge

func (s *Store) Merge(m Store)

func (*Store) ProtoMessage

func (*Store) ProtoMessage()

func (*Store) Reset

func (m *Store) Reset()

func (*Store) Size

func (m *Store) Size() (n int)

func (*Store) String

func (this *Store) String() string

func (*Store) Unmarshal

func (m *Store) Unmarshal(dAtA []byte) error

func (*Store) XXX_DiscardUnknown

func (m *Store) XXX_DiscardUnknown()

func (*Store) XXX_Marshal

func (m *Store) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Store) XXX_Merge

func (m *Store) XXX_Merge(src proto.Message)

func (*Store) XXX_Size

func (m *Store) XXX_Size() int

func (*Store) XXX_Unmarshal

func (m *Store) XXX_Unmarshal(b []byte) error

type Summary

type Summary struct {
	// Total bytes processed per second.
	BytesProcessedPerSecond int64 `protobuf:"varint,1,opt,name=bytesProcessedPerSecond,proto3" json:"bytesProcessedPerSecond"`
	// Total lines processed per second.
	LinesProcessedPerSecond int64 `protobuf:"varint,2,opt,name=linesProcessedPerSecond,proto3" json:"linesProcessedPerSecond"`
	// Total bytes processed.
	TotalBytesProcessed int64 `protobuf:"varint,3,opt,name=totalBytesProcessed,proto3" json:"totalBytesProcessed"`
	// Total lines processed.
	TotalLinesProcessed int64 `protobuf:"varint,4,opt,name=totalLinesProcessed,proto3" json:"totalLinesProcessed"`
	// Execution time in seconds.
	// In addition to internal calculations this is also returned by the HTTP API.
	// Grafana expects time values to be returned in seconds as float.
	ExecTime float64 `protobuf:"fixed64,5,opt,name=execTime,proto3" json:"execTime"`
	// Queue time in seconds.
	// In addition to internal calculations this is also returned by the HTTP API.
	// Grafana expects time values to be returned in seconds as float.
	QueueTime float64 `protobuf:"fixed64,6,opt,name=queueTime,proto3" json:"queueTime"`
	// Total of subqueries created to fulfill this query.
	Subqueries int64 `protobuf:"varint,7,opt,name=subqueries,proto3" json:"subqueries"`
}

Summary is the summary of a query statistics.

func (*Summary) Descriptor

func (*Summary) Descriptor() ([]byte, []int)

func (*Summary) Equal

func (this *Summary) Equal(that interface{}) bool

func (*Summary) GetBytesProcessedPerSecond

func (m *Summary) GetBytesProcessedPerSecond() int64

func (*Summary) GetExecTime

func (m *Summary) GetExecTime() float64

func (*Summary) GetLinesProcessedPerSecond

func (m *Summary) GetLinesProcessedPerSecond() int64

func (*Summary) GetQueueTime

func (m *Summary) GetQueueTime() float64

func (*Summary) GetSubqueries

func (m *Summary) GetSubqueries() int64

func (*Summary) GetTotalBytesProcessed

func (m *Summary) GetTotalBytesProcessed() int64

func (*Summary) GetTotalLinesProcessed

func (m *Summary) GetTotalLinesProcessed() int64

func (*Summary) GoString

func (this *Summary) GoString() string

func (Summary) Log

func (s Summary) Log(log log.Logger)

func (*Summary) Marshal

func (m *Summary) Marshal() (dAtA []byte, err error)

func (*Summary) MarshalTo

func (m *Summary) MarshalTo(dAtA []byte) (int, error)

func (*Summary) MarshalToSizedBuffer

func (m *Summary) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*Summary) ProtoMessage

func (*Summary) ProtoMessage()

func (*Summary) Reset

func (m *Summary) Reset()

func (*Summary) Size

func (m *Summary) Size() (n int)

func (*Summary) String

func (this *Summary) String() string

func (*Summary) Unmarshal

func (m *Summary) Unmarshal(dAtA []byte) error

func (*Summary) XXX_DiscardUnknown

func (m *Summary) XXX_DiscardUnknown()

func (*Summary) XXX_Marshal

func (m *Summary) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Summary) XXX_Merge

func (m *Summary) XXX_Merge(src proto.Message)

func (*Summary) XXX_Size

func (m *Summary) XXX_Size() int

func (*Summary) XXX_Unmarshal

func (m *Summary) XXX_Unmarshal(b []byte) error

Jump to

Keyboard shortcuts

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