|
- package vos
-
- import (
- "fmt"
- "math"
- "time"
- )
-
- type JsonFloat float64
-
- func (v JsonFloat) MarshalJSON() ([]byte, error) {
- f := float64(v)
- if math.IsNaN(f) || math.IsInf(f, 0) {
- return []byte("null"), nil
- } else {
- return []byte(fmt.Sprintf("%f", f)), nil
- }
- }
-
- type Point struct {
- Timestamp int64 `json:"t"`
- Value JsonFloat `json:"v"`
- }
-
- func NewPoint(ts int64, val float64) *Point {
- return &Point{Timestamp: ts, Value: JsonFloat(val)}
- }
-
- type DataQueryParam struct {
- Params []DataQueryParamOne `json:"params"`
- Limit int `json:"limit"`
- Start int64 `json:"start"`
- End int64 `json:"end"`
- Step int64 `json:"step"`
- }
-
- type DataQueryInstantParam struct {
- PromeQl string `json:"prome_ql"`
- }
-
- type DataQueryParamOne struct {
- PromeQl string `json:"prome_ql"`
- Idents []string `json:"idents"`
- ClasspathId int64 `json:"classpath_id"`
- ClasspathPrefix int `json:"classpath_prefix"`
- Metric string `json:"metric"`
- TagPairs []*TagPair `json:"tags"`
- DownSamplingFunc string `json:"down_sampling_func"`
- Aggr AggrConf `json:"aggr"`
- Comparisons []int64 `json:"comparisons"` //环比多少时间
- }
-
- type AggrConf struct {
- GroupKey []string `json:"group_key"` //聚合维度
- Func string `json:"func" description:"sum,avg,max,min"` //聚合计算
- }
-
- type DataQueryResp struct {
- Ident string `json:"ident"`
- Metric string `json:"metric"`
- Tags string `json:"tags"`
- Values []*Point `json:"values"`
- Resolution int64 `json:"resolution"`
- PNum int `json:"pNum"`
- }
-
- type DataQueryInstanceResp struct {
- Metric map[string]interface{} `json:"metric"`
- Value []float64 `json:"value"`
- }
-
- type DataQL struct {
- Start int64 `json:"start"`
- End int64 `json:"end"`
- QL string `json:"ql"`
- Step int64 `json:"step"`
- }
-
- type TagKeyQueryParam struct {
- Idents []string `json:"idents"`
- TagKey string `json:"tagkey"`
- TagPairs []*TagPair `json:"tags"`
- Metric string `json:"metric"`
- Start int64 `json:"start" description:"inclusive"`
- End int64 `json:"end" description:"exclusive"`
- StartInclusive time.Time `json:"-"`
- EndExclusive time.Time `json:"-"`
- }
-
- func (p *TagKeyQueryParam) Validate() (err error) {
- p.StartInclusive, p.EndExclusive, err = timeRangeValidate(p.Start, p.End)
- return
- }
-
- type TagKeyQueryResp struct {
- Keys []string `json:"keys"`
- }
-
- type TagValueQueryParam struct {
- TagKey string `json:"tagkey"`
- TagValue string `json:"value"`
- Metric string `json:"metric"`
- Idents []string `json:"idents"`
- Tags []string `json:"tags"`
- Start int64 `json:"start" description:"inclusive"`
- End int64 `json:"end" description:"exclusive"`
- StartInclusive time.Time `json:"-"`
- EndExclusive time.Time `json:"-"`
- }
-
- func (p *TagValueQueryParam) Validate() (err error) {
- p.StartInclusive, p.EndExclusive, err = timeRangeValidate(p.Start, p.End)
- return
- }
-
- type PromQlCheckResp struct {
- ParseError string `json:"parse_error"`
- QlCorrect bool `json:"ql_correct"`
- }
-
- type TagValueQueryResp struct {
- Values []string `json:"values"`
- }
-
- type TagPairQueryParamOne struct {
- Idents []string `json:"idents"`
- Metric string `json:"metric"`
- }
-
- type TagPairQueryParam struct {
- Params []TagPairQueryParamOne `json:"params"`
- TagPairs []*TagPair `json:"tags"`
- Start int64 `json:"start" description:"inclusive"`
- End int64 `json:"end" description:"exclusive"`
- StartInclusive time.Time `json:"-"`
- EndExclusive time.Time `json:"-"`
- Limit int `json:"limit"`
- }
-
- type CommonTagQueryParam struct {
- Params []TagPairQueryParamOne `json:"params"`
- TagPairs []*TagPair `json:"tags"`
- TagKey string `json:"tag_key"` // 查询目标key,或者模糊查询
- TagValue string `json:"tag_value"` // 根据标签key查询value,或者模糊查询
- Start int64 `json:"start" description:"inclusive"`
- End int64 `json:"end" description:"exclusive"`
- StartInclusive time.Time `json:"-"`
- EndExclusive time.Time `json:"-"`
- Search string `json:"search"` // 查询标签组的时候的搜索 str,可以是key 也可以是value
- Limit int `json:"limit"`
- }
-
- func (p *CommonTagQueryParam) Validate() (err error) {
- p.StartInclusive, p.EndExclusive, err = timeRangeValidate(p.Start, p.End)
- return
- }
-
- type TagPairQueryResp struct {
- Idents []string `json:"idents"`
- Metric string `json:"metric"`
- TagPairs []string `json:"tags"`
- }
-
- type MetricQueryParam struct {
- Idents []string `json:"idents"`
- Metric string `json:"metric"`
- TagPairs []*TagPair `json:"tags"`
- Start int64 `json:"start" description:"inclusive"`
- End int64 `json:"end" description:"exclusive"`
- StartInclusive time.Time `json:"-"`
- EndExclusive time.Time `json:"-"`
- Limit int `json:"limit"`
- }
-
- func (p *MetricQueryParam) Validate() (err error) {
- p.StartInclusive, p.EndExclusive, err = timeRangeValidate(p.Start, p.End)
- return
- }
-
- type MetricQueryResp struct {
- Metrics []string `json:"metrics"`
- }
-
- type MetricDesQueryResp struct {
- Metrics []MetricsWithDescription `json:"metrics"`
- }
-
- type MetricsWithDescription struct {
- Name string `json:"name"`
- Description string `json:"description"`
- }
-
- type TagPair struct {
- Key string `json:"key"`
- Value string `json:"value"`
- }
-
- type IndexQueryParam struct {
- Metric string `json:"metric"`
- Idents []string `json:"idents"`
- Include []*TagPair `json:"include"`
- Exclude []*TagPair `json:"exclude"`
- Start int64 `json:"start" description:"inclusive"`
- End int64 `json:"end" description:"exclusive"`
- StartInclusive time.Time `json:"-"`
- EndExclusive time.Time `json:"-"`
- }
-
- func (p *IndexQueryParam) Validate() (err error) {
- p.StartInclusive, p.EndExclusive, err = timeRangeValidate(p.Start, p.End)
- return
- }
-
- type IndexQueryResp struct {
- Metric string `json:"metric"`
- Ident string `json:"ident"`
- Tags map[string]string `json:"tags"`
- }
-
- func timeRangeValidate(start, end int64) (startInclusive, endExclusive time.Time, err error) {
- if end == 0 {
- endExclusive = time.Now()
- } else {
- endExclusive = time.Unix(end, 0)
- }
-
- if start == 0 {
- startInclusive = endExclusive.Add(-time.Hour * 25)
- } else {
- startInclusive = time.Unix(start, 0)
- }
-
- if startInclusive.After(endExclusive) {
- err = fmt.Errorf("start is after end")
- }
-
- return
- }
|