mirror of
https://github.com/SigNoz/signoz.git
synced 2025-12-19 08:26:06 +00:00
* chore: update types 1. add partial bool to indicate if the value covers the partial interval 2. add optional unit if present (ex: duration_nano, metrics with units) 3. use pointers wherever necessary 4. add format options for request and remove redundant name in query envelope * chore: fix some gaps 1. make the range as [start, end) 2. provide the logs statement builder with the body column 3. skip the body filter on resource filter statement builder 4. remove unnecessary agg expr rewriter in metrics 5. add ability to skip full text in where clause visitor * chore: add API endpoint for new query range * chore: add bucket cache implementation * chore: add fingerprinting impl and add bucket cache to querier * chore: add provider factory
141 lines
4.1 KiB
Go
141 lines
4.1 KiB
Go
package signozquerier
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/SigNoz/signoz/pkg/cache"
|
|
"github.com/SigNoz/signoz/pkg/factory"
|
|
"github.com/SigNoz/signoz/pkg/prometheus"
|
|
"github.com/SigNoz/signoz/pkg/querier"
|
|
"github.com/SigNoz/signoz/pkg/querybuilder"
|
|
"github.com/SigNoz/signoz/pkg/querybuilder/resourcefilter"
|
|
"github.com/SigNoz/signoz/pkg/telemetrylogs"
|
|
"github.com/SigNoz/signoz/pkg/telemetrymetadata"
|
|
"github.com/SigNoz/signoz/pkg/telemetrymetrics"
|
|
"github.com/SigNoz/signoz/pkg/telemetrystore"
|
|
"github.com/SigNoz/signoz/pkg/telemetrytraces"
|
|
)
|
|
|
|
// NewFactory creates a new factory for the signoz querier provider
|
|
func NewFactory(
|
|
telemetryStore telemetrystore.TelemetryStore,
|
|
prometheus prometheus.Prometheus,
|
|
cache cache.Cache,
|
|
) factory.ProviderFactory[querier.Querier, querier.Config] {
|
|
return factory.NewProviderFactory(
|
|
factory.MustNewName("signoz"),
|
|
func(
|
|
ctx context.Context,
|
|
settings factory.ProviderSettings,
|
|
cfg querier.Config,
|
|
) (querier.Querier, error) {
|
|
return newProvider(ctx, settings, cfg, telemetryStore, prometheus, cache)
|
|
},
|
|
)
|
|
}
|
|
|
|
func newProvider(
|
|
_ context.Context,
|
|
settings factory.ProviderSettings,
|
|
cfg querier.Config,
|
|
telemetryStore telemetrystore.TelemetryStore,
|
|
prometheus prometheus.Prometheus,
|
|
cache cache.Cache,
|
|
) (querier.Querier, error) {
|
|
|
|
// Create telemetry metadata store
|
|
telemetryMetadataStore := telemetrymetadata.NewTelemetryMetaStore(
|
|
settings,
|
|
telemetryStore,
|
|
telemetrytraces.DBName,
|
|
telemetrytraces.TagAttributesV2TableName,
|
|
telemetrytraces.SpanIndexV3TableName,
|
|
telemetrymetrics.DBName,
|
|
telemetrymetrics.AttributesMetadataTableName,
|
|
telemetrylogs.DBName,
|
|
telemetrylogs.LogsV2TableName,
|
|
telemetrylogs.TagAttributesV2TableName,
|
|
telemetrymetadata.DBName,
|
|
telemetrymetadata.AttributesMetadataLocalTableName,
|
|
)
|
|
|
|
// Create trace statement builder
|
|
traceFieldMapper := telemetrytraces.NewFieldMapper()
|
|
traceConditionBuilder := telemetrytraces.NewConditionBuilder(traceFieldMapper)
|
|
|
|
resourceFilterFieldMapper := resourcefilter.NewFieldMapper()
|
|
resourceFilterConditionBuilder := resourcefilter.NewConditionBuilder(resourceFilterFieldMapper)
|
|
resourceFilterStmtBuilder := resourcefilter.NewTraceResourceFilterStatementBuilder(
|
|
resourceFilterFieldMapper,
|
|
resourceFilterConditionBuilder,
|
|
telemetryMetadataStore,
|
|
)
|
|
|
|
traceAggExprRewriter := querybuilder.NewAggExprRewriter(nil, traceFieldMapper, traceConditionBuilder, "", nil)
|
|
traceStmtBuilder := telemetrytraces.NewTraceQueryStatementBuilder(
|
|
settings,
|
|
telemetryMetadataStore,
|
|
traceFieldMapper,
|
|
traceConditionBuilder,
|
|
resourceFilterStmtBuilder,
|
|
traceAggExprRewriter,
|
|
)
|
|
|
|
// Create log statement builder
|
|
logFieldMapper := telemetrylogs.NewFieldMapper()
|
|
logConditionBuilder := telemetrylogs.NewConditionBuilder(logFieldMapper)
|
|
logResourceFilterStmtBuilder := resourcefilter.NewLogResourceFilterStatementBuilder(
|
|
resourceFilterFieldMapper,
|
|
resourceFilterConditionBuilder,
|
|
telemetryMetadataStore,
|
|
)
|
|
logAggExprRewriter := querybuilder.NewAggExprRewriter(
|
|
telemetrylogs.DefaultFullTextColumn,
|
|
logFieldMapper,
|
|
logConditionBuilder,
|
|
telemetrylogs.BodyJSONStringSearchPrefix,
|
|
telemetrylogs.GetBodyJSONKey,
|
|
)
|
|
logStmtBuilder := telemetrylogs.NewLogQueryStatementBuilder(
|
|
settings,
|
|
telemetryMetadataStore,
|
|
logFieldMapper,
|
|
logConditionBuilder,
|
|
logResourceFilterStmtBuilder,
|
|
logAggExprRewriter,
|
|
telemetrylogs.DefaultFullTextColumn,
|
|
telemetrylogs.BodyJSONStringSearchPrefix,
|
|
telemetrylogs.GetBodyJSONKey,
|
|
)
|
|
|
|
// Create metric statement builder
|
|
metricFieldMapper := telemetrymetrics.NewFieldMapper()
|
|
metricConditionBuilder := telemetrymetrics.NewConditionBuilder(metricFieldMapper)
|
|
metricStmtBuilder := telemetrymetrics.NewMetricQueryStatementBuilder(
|
|
settings,
|
|
telemetryMetadataStore,
|
|
metricFieldMapper,
|
|
metricConditionBuilder,
|
|
)
|
|
|
|
// Create bucket cache
|
|
bucketCache := querier.NewBucketCache(
|
|
settings,
|
|
cache,
|
|
cfg.CacheTTL,
|
|
cfg.FluxInterval,
|
|
)
|
|
|
|
// Create and return the querier
|
|
return querier.New(
|
|
settings,
|
|
telemetryStore,
|
|
telemetryMetadataStore,
|
|
prometheus,
|
|
traceStmtBuilder,
|
|
logStmtBuilder,
|
|
metricStmtBuilder,
|
|
bucketCache,
|
|
), nil
|
|
}
|