570 lines
15 KiB
Go
570 lines
15 KiB
Go
|
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"`
|
||
|
}
|