2025-06-10 18:26:28 +05:30
|
|
|
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"
|
2025-08-07 16:50:37 +05:30
|
|
|
"github.com/SigNoz/signoz/pkg/telemetrymeter"
|
2025-06-10 18:26:28 +05:30
|
|
|
"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,
|
2025-08-12 18:10:35 +05:30
|
|
|
telemetrytraces.SpanAttributesKeysTblName,
|
2025-06-10 18:26:28 +05:30
|
|
|
telemetrytraces.SpanIndexV3TableName,
|
|
|
|
|
telemetrymetrics.DBName,
|
|
|
|
|
telemetrymetrics.AttributesMetadataTableName,
|
2025-08-07 16:50:37 +05:30
|
|
|
telemetrymeter.DBName,
|
|
|
|
|
telemetrymeter.SamplesAgg1dTableName,
|
2025-06-10 18:26:28 +05:30
|
|
|
telemetrylogs.DBName,
|
|
|
|
|
telemetrylogs.LogsV2TableName,
|
|
|
|
|
telemetrylogs.TagAttributesV2TableName,
|
2025-08-12 18:10:35 +05:30
|
|
|
telemetrylogs.LogAttributeKeysTblName,
|
|
|
|
|
telemetrylogs.LogResourceKeysTblName,
|
2025-06-10 18:26:28 +05:30
|
|
|
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(
|
2025-08-12 18:10:35 +05:30
|
|
|
settings,
|
2025-06-10 18:26:28 +05:30
|
|
|
resourceFilterFieldMapper,
|
|
|
|
|
resourceFilterConditionBuilder,
|
|
|
|
|
telemetryMetadataStore,
|
|
|
|
|
)
|
|
|
|
|
|
2025-08-12 18:10:35 +05:30
|
|
|
traceAggExprRewriter := querybuilder.NewAggExprRewriter(settings, nil, traceFieldMapper, traceConditionBuilder, "", nil)
|
2025-06-10 18:26:28 +05:30
|
|
|
traceStmtBuilder := telemetrytraces.NewTraceQueryStatementBuilder(
|
|
|
|
|
settings,
|
|
|
|
|
telemetryMetadataStore,
|
|
|
|
|
traceFieldMapper,
|
|
|
|
|
traceConditionBuilder,
|
|
|
|
|
resourceFilterStmtBuilder,
|
|
|
|
|
traceAggExprRewriter,
|
2025-06-23 09:39:19 +05:30
|
|
|
telemetryStore,
|
2025-06-10 18:26:28 +05:30
|
|
|
)
|
|
|
|
|
|
2025-09-05 21:07:10 +05:30
|
|
|
// ADD: Create trace operator statement builder
|
|
|
|
|
traceOperatorStmtBuilder := telemetrytraces.NewTraceOperatorStatementBuilder(
|
|
|
|
|
settings,
|
|
|
|
|
telemetryMetadataStore,
|
|
|
|
|
traceFieldMapper,
|
|
|
|
|
traceConditionBuilder,
|
|
|
|
|
traceStmtBuilder, // Pass the regular trace statement builder
|
|
|
|
|
resourceFilterStmtBuilder, // Pass the resource filter statement builder
|
|
|
|
|
traceAggExprRewriter,
|
|
|
|
|
)
|
|
|
|
|
|
2025-06-10 18:26:28 +05:30
|
|
|
// Create log statement builder
|
|
|
|
|
logFieldMapper := telemetrylogs.NewFieldMapper()
|
|
|
|
|
logConditionBuilder := telemetrylogs.NewConditionBuilder(logFieldMapper)
|
|
|
|
|
logResourceFilterStmtBuilder := resourcefilter.NewLogResourceFilterStatementBuilder(
|
2025-08-12 18:10:35 +05:30
|
|
|
settings,
|
2025-06-10 18:26:28 +05:30
|
|
|
resourceFilterFieldMapper,
|
|
|
|
|
resourceFilterConditionBuilder,
|
|
|
|
|
telemetryMetadataStore,
|
2025-07-02 10:39:16 +05:30
|
|
|
telemetrylogs.DefaultFullTextColumn,
|
|
|
|
|
telemetrylogs.BodyJSONStringSearchPrefix,
|
|
|
|
|
telemetrylogs.GetBodyJSONKey,
|
2025-06-10 18:26:28 +05:30
|
|
|
)
|
|
|
|
|
logAggExprRewriter := querybuilder.NewAggExprRewriter(
|
2025-08-12 18:10:35 +05:30
|
|
|
settings,
|
2025-06-10 18:26:28 +05:30
|
|
|
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,
|
|
|
|
|
)
|
|
|
|
|
|
2025-08-07 16:50:37 +05:30
|
|
|
// Create meter statement builder
|
|
|
|
|
meterStmtBuilder := telemetrymeter.NewMeterQueryStatementBuilder(
|
|
|
|
|
settings,
|
|
|
|
|
telemetryMetadataStore,
|
|
|
|
|
metricFieldMapper,
|
|
|
|
|
metricConditionBuilder,
|
|
|
|
|
)
|
|
|
|
|
|
2025-06-10 18:26:28 +05:30
|
|
|
// 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,
|
2025-08-07 16:50:37 +05:30
|
|
|
meterStmtBuilder,
|
2025-09-05 21:07:10 +05:30
|
|
|
traceOperatorStmtBuilder,
|
2025-06-10 18:26:28 +05:30
|
|
|
bucketCache,
|
|
|
|
|
), nil
|
|
|
|
|
}
|