analytics

package
v1.5.2-rc2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 26, 2022 License: MPL-2.0 Imports: 13 Imported by: 4

Documentation

Index

Constants

View Source
const (
	AgggregateMixedCollectionName = "tyk_analytics_aggregates"
	MongoAggregatePrefix          = "mongo-pump-aggregate"
	AggregateSQLTable             = "tyk_aggregated"
)
View Source
const SQLTable = "tyk_analytics"
View Source
const UptimeSQLTable = "tyk_uptime_analytics"

Variables

This section is empty.

Functions

func AggregateData

func AggregateData(data []interface{}, trackAllPaths bool, ignoreTagPrefixList []string, storeAnalyticPerMinute bool) map[string]AnalyticsRecordAggregate

AggregateData calculates aggregated data, returns map orgID => aggregated analytics data

func AggregateUptimeData added in v1.5.0

func AggregateUptimeData(data []UptimeReportData) map[string]UptimeReportAggregate

func OnConflictAssignments added in v1.5.0

func OnConflictAssignments(tableName string, tempTable string) map[string]interface{}

func OnConflictUptimeAssignments added in v1.5.0

func OnConflictUptimeAssignments(tableName string, tempTable string) map[string]interface{}

Types

type AnalyticsFilters added in v1.0.0

type AnalyticsFilters struct {
	// Filters pump data by the whitelisted org_ids.
	OrgsIDs []string `json:"org_ids"`
	// Filters pump data by the whitelisted api_ids.
	APIIDs []string `json:"api_ids"`
	// Filters pump data by the whitelisted response_codes.
	ResponseCodes []int `json:"response_codes"`
	// Filters pump data by the blacklisted org_ids.
	SkippedOrgsIDs []string `json:"skip_org_ids"`
	// Filters pump data by the blacklisted api_ids.
	SkippedAPIIDs []string `json:"skip_api_ids"`
	// Filters pump data by the blacklisted response_codes.
	SkippedResponseCodes []int `json:"skip_response_codes"`
}

func (AnalyticsFilters) HasFilter added in v1.0.0

func (filters AnalyticsFilters) HasFilter() bool

func (AnalyticsFilters) ShouldFilter added in v1.0.0

func (filters AnalyticsFilters) ShouldFilter(record AnalyticsRecord) bool

type AnalyticsRecord

type AnalyticsRecord struct {
	Method        string       `json:"method" gorm:"column:method"`
	Host          string       `json:"host" gorm:"column:host"`
	Path          string       `json:"path" gorm:"column:path"`
	RawPath       string       `json:"raw_path" gorm:"column:rawpath"`
	ContentLength int64        `json:"content_length" gorm:"column:contentlength"`
	UserAgent     string       `json:"user_agent" gorm:"column:useragent"`
	Day           int          `json:"day" sql:"-"`
	Month         time.Month   `json:"month" sql:"-"`
	Year          int          `json:"year" sql:"-"`
	Hour          int          `json:"hour" sql:"-"`
	ResponseCode  int          `json:"response_code" gorm:"column:responsecode;index"`
	APIKey        string       `json:"api_key" gorm:"column:apikey;index"`
	TimeStamp     time.Time    `json:"timestamp" gorm:"column:timestamp;index"`
	APIVersion    string       `json:"api_version" gorm:"column:apiversion"`
	APIName       string       `json:"api_name" sql:"-"`
	APIID         string       `json:"api_id" gorm:"column:apiid;index"`
	OrgID         string       `json:"org_id" gorm:"column:orgid;index"`
	OauthID       string       `json:"oauth_id" gorm:"column:oauthid;index"`
	RequestTime   int64        `json:"request_time" gorm:"column:requesttime"`
	RawRequest    string       `json:"raw_request" gorm:"column:rawrequest"`
	RawResponse   string       `json:"raw_response" gorm:"column:rawresponse"`
	IPAddress     string       `json:"ip_address" gorm:"column:ipaddress"`
	Geo           GeoData      `json:"geo" gorm:"embedded"`
	Network       NetworkStats `json:"network"`
	Latency       Latency      `json:"latency"`
	Tags          []string     `json:"tags"`
	Alias         string       `json:"alias"`
	TrackPath     bool         `json:"track_path" gorm:"column:trackpath"`
	ExpireAt      time.Time    `bson:"expireAt" json:"expireAt"`
}

AnalyticsRecord encodes the details of a request

func (*AnalyticsRecord) GetFieldNames

func (a *AnalyticsRecord) GetFieldNames() []string

func (*AnalyticsRecord) GetLineValues

func (a *AnalyticsRecord) GetLineValues() []string

func (*AnalyticsRecord) TableName added in v1.5.0

func (ar *AnalyticsRecord) TableName() string

func (*AnalyticsRecord) TrimRawData added in v1.5.0

func (a *AnalyticsRecord) TrimRawData(size int)

type AnalyticsRecordAggregate

type AnalyticsRecordAggregate struct {
	TimeStamp time.Time
	OrgID     string
	TimeID    struct {
		Year  int
		Month int
		Day   int
		Hour  int
	}

	APIKeys map[string]*Counter
	Errors  map[string]*Counter

	Versions map[string]*Counter
	APIID    map[string]*Counter
	OauthIDs map[string]*Counter
	Geo      map[string]*Counter
	Tags     map[string]*Counter

	Endpoints map[string]*Counter

	Lists struct {
		APIKeys       []Counter
		APIID         []Counter
		OauthIDs      []Counter
		Geo           []Counter
		Tags          []Counter
		Errors        []Counter
		Endpoints     []Counter
		KeyEndpoint   map[string][]Counter `bson:"keyendpoints"`
		OauthEndpoint map[string][]Counter `bson:"oauthendpoints"`
		APIEndpoint   []Counter            `bson:"apiendpoints"`
	}

	KeyEndpoint   map[string]map[string]*Counter `bson:"keyendpoints"`
	OauthEndpoint map[string]map[string]*Counter `bson:"oauthendpoints"`
	ApiEndpoint   map[string]*Counter            `bson:"apiendpoints"`

	Total Counter

	ExpireAt time.Time `bson:"expireAt" json:"expireAt"`
	LastTime time.Time
}

func (*AnalyticsRecordAggregate) AsChange

func (f *AnalyticsRecordAggregate) AsChange() (newUpdate bson.M)

func (*AnalyticsRecordAggregate) AsTimeUpdate

func (f *AnalyticsRecordAggregate) AsTimeUpdate() bson.M

func (*AnalyticsRecordAggregate) Dimensions added in v1.5.0

func (f *AnalyticsRecordAggregate) Dimensions() (dimensions []Dimension)

func (*AnalyticsRecordAggregate) DiscardAggregations added in v1.2.0

func (f *AnalyticsRecordAggregate) DiscardAggregations(fields []string)

DiscardAggregations this method discard the aggregations of X field specified in the aggregated pump configuration

func (AnalyticsRecordAggregate) New

func (*AnalyticsRecordAggregate) SetErrorList added in v1.0.0

func (f *AnalyticsRecordAggregate) SetErrorList(parent, thisUnit string, counter *Counter, newUpdate bson.M)

type Code added in v1.5.0

type Code struct {
	Code1x  int `json:"1x" gorm:"1x"`
	Code200 int `json:"200" gorm:"200"`
	Code201 int `json:"201" gorm:"201"`
	Code2x  int `json:"2x" gorm:"2x"`
	Code301 int `json:"301" gorm:"301"`
	Code302 int `json:"302" gorm:"302"`
	Code303 int `json:"303" gorm:"303"`
	Code304 int `json:"304" gorm:"304"`
	Code3x  int `json:"3x" gorm:"3x"`
	Code400 int `json:"400" gorm:"400"`
	Code401 int `json:"401" gorm:"401"`
	Code403 int `json:"403" gorm:"403"`
	Code404 int `json:"404" gorm:"404"`
	Code429 int `json:"429" gorm:"429"`
	Code4x  int `json:"4x" gorm:"4x"`
	Code500 int `json:"500" gorm:"500"`
	Code501 int `json:"501" gorm:"501"`
	Code502 int `json:"502" gorm:"502"`
	Code503 int `json:"503" gorm:"503"`
	Code504 int `json:"504" gorm:"504"`
	Code5x  int `json:"5x" gorm:"5x"`
}

func (*Code) ProcessStatusCodes added in v1.5.0

func (c *Code) ProcessStatusCodes(errorMap map[string]int)

type Counter

type Counter struct {
	Hits                 int       `json:"hits"`
	Success              int       `json:"success"`
	ErrorTotal           int       `json:"error" gorm:"column:error"`
	RequestTime          float64   `json:"request_time"`
	TotalRequestTime     float64   `json:"total_request_time"`
	Identifier           string    `json:"identifier" sql:"-"`
	HumanIdentifier      string    `json:"human_identifier"`
	LastTime             time.Time `json:"last_time"`
	OpenConnections      int64     `json:"open_connections"`
	ClosedConnections    int64     `json:"closed_connections"`
	BytesIn              int64     `json:"bytes_in"`
	BytesOut             int64     `json:"bytes_out"`
	MaxUpstreamLatency   int64     `json:"max_upstream_latency"`
	MinUpstreamLatency   int64     `json:"min_upstream_latency"`
	TotalUpstreamLatency int64     `json:"total_upstream_latency"`
	UpstreamLatency      float64   `json:"upstream_latency"`

	MaxLatency   int64   `json:"max_latency"`
	MinLatency   int64   `json:"min_latency"`
	TotalLatency int64   `json:"total_latency"`
	Latency      float64 `json:"latency"`

	ErrorMap  map[string]int `json:"error_map" sql:"-"`
	ErrorList []ErrorData    `json:"error_list" sql:"-"`
}

type Country added in v1.5.0

type Country struct {
	ISOCode string `maxminddb:"iso_code" json:"iso_code"`
}

type Dimension added in v1.5.0

type Dimension struct {
	Name    string
	Value   string
	Counter *Counter
}

type ErrorData added in v1.0.0

type ErrorData struct {
	Code  string
	Count int
}

type GeoData

type GeoData struct {
	Country Country `maxminddb:"country" json:"country"`

	City struct {
		GeoNameID uint              `maxminddb:"geoname_id" json:"geoname_id"`
		Names     map[string]string `maxminddb:"names" json:"names"`
	} `maxminddb:"city" json:"city"`

	Location struct {
		Latitude  float64 `maxminddb:"latitude" json:"latitude"`
		Longitude float64 `maxminddb:"longitude" json:"longitude"`
		TimeZone  string  `maxminddb:"time_zone" json:"time_zone"`
	} `maxminddb:"location" json:"location"`
}

func (*GeoData) GetFieldNames added in v1.3.0

func (g *GeoData) GetFieldNames() []string

func (*GeoData) GetLineValues added in v1.3.0

func (g *GeoData) GetLineValues() []string

type Latency

type Latency struct {
	Total    int64 `json:"total"`
	Upstream int64 `json:"upstream"`
}

func (*Latency) GetFieldNames added in v1.3.0

func (l *Latency) GetFieldNames() []string

func (*Latency) GetLineValues added in v1.3.0

func (l *Latency) GetLineValues() []string

type NetworkStats

type NetworkStats struct {
	OpenConnections  int64 `json:"open_connections"`
	ClosedConnection int64 `json:"closed_connections"`
	BytesIn          int64 `json:"bytes_in"`
	BytesOut         int64 `json:"bytes_out"`
}

func (*NetworkStats) GetFieldNames added in v1.3.0

func (n *NetworkStats) GetFieldNames() []string

func (*NetworkStats) GetLineValues added in v1.3.0

func (n *NetworkStats) GetLineValues() []string

type SQLAnalyticsRecordAggregate added in v1.5.0

type SQLAnalyticsRecordAggregate struct {
	ID string `gorm:"primaryKey"`

	Counter `json:"counter" gorm:"embedded"`

	TimeStamp      int64  `json:"timestamp" gorm:"index:dimension, priority:1"`
	OrgID          string `json:"org_id" gorm:"index:dimension, priority:2"`
	Dimension      string `json:"dimension" gorm:"index:dimension, priority:3"`
	DimensionValue string `json:"dimension_value" gorm:"index:dimension, priority:4"`

	Code `json:"code" gorm:"embedded"`
}

func (*SQLAnalyticsRecordAggregate) TableName added in v1.5.0

func (f *SQLAnalyticsRecordAggregate) TableName() string

type UptimeReportAggregate added in v1.5.0

type UptimeReportAggregate struct {
	TimeStamp time.Time
	OrgID     string
	TimeID    struct {
		Year  int
		Month int
		Day   int
		Hour  int
	}

	URL    map[string]*Counter
	Errors map[string]*Counter

	Total Counter

	ExpireAt time.Time `bson:"expireAt" json:"expireAt"`
	LastTime time.Time
}

func (*UptimeReportAggregate) Dimensions added in v1.5.0

func (u *UptimeReportAggregate) Dimensions() (dimensions []Dimension)

func (UptimeReportAggregate) New added in v1.5.0

type UptimeReportAggregateSQL added in v1.5.0

type UptimeReportAggregateSQL struct {
	ID string `gorm:"primaryKey"`

	Counter `json:"counter" gorm:"embedded"`

	TimeStamp      int64  `json:"timestamp" gorm:"index:dimension, priority:1"`
	OrgID          string `json:"org_id" gorm:"index:dimension, priority:2"`
	Dimension      string `json:"dimension" gorm:"index:dimension, priority:3"`
	DimensionValue string `json:"dimension_value" gorm:"index:dimension, priority:4"`

	Code `json:"code" gorm:"embedded"`
}

func (*UptimeReportAggregateSQL) TableName added in v1.5.0

func (a *UptimeReportAggregateSQL) TableName() string

type UptimeReportData

type UptimeReportData struct {
	URL          string     `json:"url"`
	RequestTime  int64      `json:"request_time"`
	ResponseCode int        `json:"response_code"`
	TCPError     bool       `json:"tcp_error"`
	ServerError  bool       `json:"server_error"`
	Day          int        `json:"day"`
	Month        time.Month `json:"month"`
	Year         int        `json:"year"`
	Hour         int        `json:"hour"`
	Minute       int        `json:"minute"`
	TimeStamp    time.Time  `json:"timestamp"`
	ExpireAt     time.Time  `bson:"expireAt"`
	APIID        string     `json:"api_id"`
	OrgID        string     `json:"org_id"`
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL