logs-analyzer/signoz/pkg/query-service/model/queryParams.go

570 lines
15 KiB
Go
Raw Normal View History

2024-09-02 22:47:30 +03:00
package model
import (
"time"
)
type InstantQueryMetricsParams struct {
Time time.Time
Query string
Stats string
}
type QueryRangeParams struct {
Start time.Time
End time.Time
Step time.Duration
Query string
Stats string
}
type MetricQuery struct {
QueryName string `json:"queryName"`
MetricName string `json:"metricName"`
TagFilters *FilterSet `json:"tagFilters,omitempty"`
GroupingTags []string `json:"groupBy,omitempty"`
AggregateOperator AggregateOperator `json:"aggregateOperator"`
Expression string `json:"expression"`
Disabled bool `json:"disabled"`
ReduceTo ReduceToOperator `json:"reduceTo,omitempty"`
}
type ReduceToOperator int
const (
_ ReduceToOperator = iota
RLAST
RSUM
RAVG
RMAX
RMIN
)
type QueryType int
const (
_ QueryType = iota
QUERY_BUILDER
CLICKHOUSE
PROM
)
type PromQuery struct {
Query string `json:"query"`
Stats string `json:"stats,omitempty"`
Disabled bool `json:"disabled"`
}
type ClickHouseQuery struct {
Query string `json:"query"`
Disabled bool `json:"disabled"`
}
type PanelType int
const (
_ PanelType = iota
TIME_SERIES
QUERY_VALUE
)
type CompositeMetricQuery struct {
BuilderQueries map[string]*MetricQuery `json:"builderQueries,omitempty"`
ClickHouseQueries map[string]*ClickHouseQuery `json:"chQueries,omitempty"`
PromQueries map[string]*PromQuery `json:"promQueries,omitempty"`
PanelType PanelType `json:"panelType"`
QueryType QueryType `json:"queryType"`
}
type AggregateOperator int
const (
_ AggregateOperator = iota
NOOP
COUNT
COUNT_DISTINCT
SUM
AVG
MAX
MIN
P05
P10
P20
P25
P50
P75
P90
P95
P99
RATE
SUM_RATE
// leave blank space for possily {AVG, X}_RATE
_
_
_
RATE_SUM
RATE_AVG
RATE_MAX
RATE_MIN
HIST_QUANTILE_50
HIST_QUANTILE_75
HIST_QUANTILE_90
HIST_QUANTILE_95
HIST_QUANTILE_99
)
type DataSource int
const (
_ DataSource = iota
METRICS
TRACES
LOGS
)
const (
StringTagMapCol = "stringTagMap"
NumberTagMapCol = "numberTagMap"
BoolTagMapCol = "boolTagMap"
ResourceTagMapCol = "resourceTagsMap"
)
type QueryRangeParamsV2 struct {
DataSource DataSource `json:"dataSource"`
Start int64 `json:"start"`
End int64 `json:"end"`
Step int64 `json:"step"`
CompositeMetricQuery *CompositeMetricQuery `json:"compositeMetricQuery"`
Variables map[string]interface{} `json:"variables,omitempty"`
NoCache bool `json:"noCache"`
}
type DashboardVars struct {
Query string `json:"query"`
Variables map[string]interface{} `json:"variables,omitempty"`
}
// Metric auto complete types
type metricTags map[string]string
type MetricAutocompleteTagParams struct {
MetricName string
MetricTags metricTags
Match string
TagKey string
}
type GetTopOperationsParams struct {
StartTime string `json:"start"`
EndTime string `json:"end"`
ServiceName string `json:"service"`
Start *time.Time
End *time.Time
Tags []TagQueryParam `json:"tags"`
Limit int `json:"limit"`
}
type RegisterEventParams struct {
EventName string `json:"eventName"`
Attributes map[string]interface{} `json:"attributes"`
RateLimited bool `json:"rateLimited"`
}
type GetUsageParams struct {
StartTime string
EndTime string
ServiceName string
Period string
StepHour int
Start *time.Time
End *time.Time
}
type GetServicesParams struct {
StartTime string `json:"start"`
EndTime string `json:"end"`
Period int
Start *time.Time
End *time.Time
Tags []TagQueryParam `json:"tags"`
}
type GetServiceOverviewParams struct {
StartTime string `json:"start"`
EndTime string `json:"end"`
Period string
Start *time.Time
End *time.Time
Tags []TagQueryParam `json:"tags"`
ServiceName string `json:"service"`
StepSeconds int `json:"step"`
}
type TagQueryParam struct {
Key string `json:"key"`
TagType TagType `json:"tagType"`
StringValues []string `json:"stringValues"`
BoolValues []bool `json:"boolValues"`
NumberValues []float64 `json:"numberValues"`
Operator Operator `json:"operator"`
}
type Operator string
const (
InOperator Operator = "In"
NotInOperator Operator = "NotIn"
EqualOperator Operator = "Equals"
NotEqualOperator Operator = "NotEquals"
ExistsOperator Operator = "Exists"
NotExistsOperator Operator = "NotExists"
ContainsOperator Operator = "Contains"
NotContainsOperator Operator = "NotContains"
LessThanOperator Operator = "LessThan"
GreaterThanOperator Operator = "GreaterThan"
LessThanEqualOperator Operator = "LessThanEquals"
GreaterThanEqualOperator Operator = "GreaterThanEquals"
StartsWithOperator Operator = "StartsWith"
NotStartsWithOperator Operator = "NotStartsWith"
)
type TagType string
const (
ResourceAttributeTagType TagType = "ResourceAttribute"
SpanAttributeTagType TagType = "SpanAttribute"
)
type TagQuery interface {
GetKey() string
GetValues() []interface{}
GetOperator() Operator
GetTagType() TagType
GetTagMapColumn() string
}
type TagQueryString struct {
key string
values []string
operator Operator
tagType TagType
}
func NewTagQueryString(tag TagQueryParam) TagQueryString {
return TagQueryString{
key: tag.Key,
values: tag.StringValues,
operator: tag.Operator,
tagType: tag.TagType,
}
}
func (tqn TagQueryNumber) GetKey() string {
return tqn.key
}
func (tqs TagQueryString) GetValues() []interface{} {
values := make([]interface{}, len(tqs.values))
for i, v := range tqs.values {
values[i] = v
}
return values
}
func (tqs TagQueryString) GetOperator() Operator {
return tqs.operator
}
func (tqs TagQueryString) GetTagType() TagType {
return tqs.tagType
}
func (tqs TagQueryString) GetTagMapColumn() string {
if tqs.GetTagType() == ResourceAttributeTagType {
return ResourceTagMapCol
} else {
return StringTagMapCol
}
}
type TagQueryBool struct {
key string
values []bool
operator Operator
tagType TagType
}
func NewTagQueryBool(tag TagQueryParam) TagQueryBool {
return TagQueryBool{
key: tag.Key,
values: tag.BoolValues,
operator: tag.Operator,
tagType: tag.TagType,
}
}
func (tqb TagQueryBool) GetKey() string {
return tqb.key
}
func (tqb TagQueryBool) GetValues() []interface{} {
values := make([]interface{}, len(tqb.values))
for i, v := range tqb.values {
values[i] = v
}
return values
}
func (tqb TagQueryBool) GetOperator() Operator {
return tqb.operator
}
func (tqb TagQueryBool) GetTagType() TagType {
return tqb.tagType
}
func (tqb TagQueryBool) GetTagMapColumn() string {
return BoolTagMapCol
}
type TagQueryNumber struct {
key string
values []float64
operator Operator
tagType TagType
}
func NewTagQueryNumber(tag TagQueryParam) TagQueryNumber {
return TagQueryNumber{
key: tag.Key,
values: tag.NumberValues,
operator: tag.Operator,
tagType: tag.TagType,
}
}
func (tqs TagQueryString) GetKey() string {
return tqs.key
}
func (tqn TagQueryNumber) GetValues() []interface{} {
values := make([]interface{}, len(tqn.values))
for i, v := range tqn.values {
values[i] = v
}
return values
}
func (tqn TagQueryNumber) GetOperator() Operator {
return tqn.operator
}
func (tqn TagQueryNumber) GetTagType() TagType {
return tqn.tagType
}
func (tqn TagQueryNumber) GetTagMapColumn() string {
return NumberTagMapCol
}
type GetFilteredSpansParams struct {
TraceID []string `json:"traceID"`
ServiceName []string `json:"serviceName"`
Operation []string `json:"operation"`
SpanKind string `json:"spanKind"`
Status []string `json:"status"`
HttpRoute []string `json:"httpRoute"`
HttpUrl []string `json:"httpUrl"`
HttpHost []string `json:"httpHost"`
HttpMethod []string `json:"httpMethod"`
RPCMethod []string `json:"rpcMethod"`
ResponseStatusCode []string `json:"responseStatusCode"`
StartStr string `json:"start"`
EndStr string `json:"end"`
MinDuration string `json:"minDuration"`
MaxDuration string `json:"maxDuration"`
Limit int64 `json:"limit"`
OrderParam string `json:"orderParam"`
Order string `json:"order"`
Offset int64 `json:"offset"`
Tags []TagQueryParam `json:"tags"`
Exclude []string `json:"exclude"`
Start *time.Time
End *time.Time
}
type GetFilteredSpanAggregatesParams struct {
TraceID []string `json:"traceID"`
ServiceName []string `json:"serviceName"`
Operation []string `json:"operation"`
SpanKind string `json:"spanKind"`
Status []string `json:"status"`
HttpRoute []string `json:"httpRoute"`
HttpUrl []string `json:"httpUrl"`
HttpHost []string `json:"httpHost"`
HttpMethod []string `json:"httpMethod"`
RPCMethod []string `json:"rpcMethod"`
ResponseStatusCode []string `json:"responseStatusCode"`
MinDuration string `json:"minDuration"`
MaxDuration string `json:"maxDuration"`
Tags []TagQueryParam `json:"tags"`
StartStr string `json:"start"`
EndStr string `json:"end"`
StepSeconds int `json:"step"`
Dimension string `json:"dimension"`
AggregationOption string `json:"aggregationOption"`
GroupBy string `json:"groupBy"`
Function string `json:"function"`
Exclude []string `json:"exclude"`
Start *time.Time
End *time.Time
}
type SearchTracesParams struct {
TraceID string `json:"traceId"`
LevelUp int `json:"levelUp"`
LevelDown int `json:"levelDown"`
SpanID string `json:"spanId"`
SpansRenderLimit int `json:"spansRenderLimit"`
MaxSpansInTrace int `json:"maxSpansInTrace"`
}
type SpanFilterParams struct {
TraceID []string `json:"traceID"`
Status []string `json:"status"`
ServiceName []string `json:"serviceName"`
SpanKind string `json:"spanKind"`
HttpRoute []string `json:"httpRoute"`
HttpUrl []string `json:"httpUrl"`
HttpHost []string `json:"httpHost"`
HttpMethod []string `json:"httpMethod"`
Operation []string `json:"operation"`
RPCMethod []string `json:"rpcMethod"`
ResponseStatusCode []string `json:"responseStatusCode"`
GetFilters []string `json:"getFilters"`
Exclude []string `json:"exclude"`
MinDuration string `json:"minDuration"`
MaxDuration string `json:"maxDuration"`
StartStr string `json:"start"`
EndStr string `json:"end"`
Start *time.Time
End *time.Time
}
type TagFilterParams struct {
TraceID []string `json:"traceID"`
Status []string `json:"status"`
ServiceName []string `json:"serviceName"`
HttpRoute []string `json:"httpRoute"`
SpanKind string `json:"spanKind"`
HttpUrl []string `json:"httpUrl"`
HttpHost []string `json:"httpHost"`
HttpMethod []string `json:"httpMethod"`
Operation []string `json:"operation"`
RPCMethod []string `json:"rpcMethod"`
ResponseStatusCode []string `json:"responseStatusCode"`
Exclude []string `json:"exclude"`
MinDuration string `json:"minDuration"`
MaxDuration string `json:"maxDuration"`
StartStr string `json:"start"`
EndStr string `json:"end"`
TagKey TagKey `json:"tagKey"`
Limit int `json:"limit"`
Start *time.Time
End *time.Time
}
type TagDataType string
const (
TagTypeString TagDataType = "string"
TagTypeNumber TagDataType = "number"
TagTypeBool TagDataType = "bool"
)
type TagKey struct {
Key string `json:"key"`
Type TagDataType `json:"type"`
}
type TTLParams struct {
Type string // It can be one of {traces, metrics}.
ColdStorageVolume string // Name of the cold storage volume.
ToColdStorageDuration int64 // Seconds after which data will be moved to cold storage.
DelDuration int64 // Seconds after which data will be deleted.
}
type GetTTLParams struct {
Type string
}
type ListErrorsParams struct {
StartStr string `json:"start"`
EndStr string `json:"end"`
Start *time.Time
End *time.Time
Limit int64 `json:"limit"`
OrderParam string `json:"orderParam"`
Order string `json:"order"`
Offset int64 `json:"offset"`
ServiceName string `json:"serviceName"`
ExceptionType string `json:"exceptionType"`
Tags []TagQueryParam `json:"tags"`
}
type CountErrorsParams struct {
StartStr string `json:"start"`
EndStr string `json:"end"`
Start *time.Time
End *time.Time
ServiceName string `json:"serviceName"`
ExceptionType string `json:"exceptionType"`
Tags []TagQueryParam `json:"tags"`
}
type GetErrorParams struct {
GroupID string
ErrorID string
Timestamp *time.Time
}
type FilterItem struct {
Key string `json:"key"`
Value interface{} `json:"value"`
Operator string `json:"op"`
}
type FilterSet struct {
Operator string `json:"op,omitempty"`
Items []FilterItem `json:"items"`
}
type UpdateField struct {
Name string `json:"name"`
DataType string `json:"dataType"`
Type string `json:"type"`
Selected bool `json:"selected"`
IndexType string `json:"index"`
IndexGranularity int `json:"indexGranularity"`
}
type LogsFilterParams struct {
Limit int `json:"limit"`
OrderBy string `json:"orderBy"`
Order string `json:"order"`
Query string `json:"q"`
TimestampStart uint64 `json:"timestampStart"`
TimestampEnd uint64 `json:"timestampEnd"`
IdGt string `json:"idGt"`
IdLT string `json:"idLt"`
}
type LogsAggregateParams struct {
Query string `json:"q"`
TimestampStart uint64 `json:"timestampStart"`
TimestampEnd uint64 `json:"timestampEnd"`
GroupBy string `json:"groupBy"`
Function string `json:"function"`
StepSeconds int `json:"step"`
}