Documentation ¶
Index ¶
- Constants
- func AggregateData(data []interface{}, trackAllPaths bool, ignoreTagPrefixList []string, ...) map[string]AnalyticsRecordAggregate
- func AggregateUptimeData(data []UptimeReportData) map[string]UptimeReportAggregate
- func OnConflictAssignments(tableName string, tempTable string) map[string]interface{}
- func OnConflictUptimeAssignments(tableName string, tempTable string) map[string]interface{}
- func TrimTag(thisTag string) string
- type AnalyticsFilters
- type AnalyticsRecord
- func (a *AnalyticsRecord) GetFieldNames() []string
- func (a *AnalyticsRecord) GetGeo(ipStr string, GeoIPDB *maxminddb.Reader)
- func (a *AnalyticsRecord) GetLineValues() []string
- func (a *AnalyticsRecord) SetExpiry(expiresInSeconds int64)
- func (ar *AnalyticsRecord) TableName() string
- func (a *AnalyticsRecord) TimeStampFromProto(protoRecord analyticsproto.AnalyticsRecord)
- func (a *AnalyticsRecord) TimestampToProto(newRecord *analyticsproto.AnalyticsRecord)
- func (a *AnalyticsRecord) TrimRawData(size int)
- type AnalyticsRecordAggregate
- func (f *AnalyticsRecordAggregate) AsChange() (newUpdate bson.M)
- func (f *AnalyticsRecordAggregate) AsTimeUpdate() bson.M
- func (f *AnalyticsRecordAggregate) Dimensions() (dimensions []Dimension)
- func (f *AnalyticsRecordAggregate) DiscardAggregations(fields []string)
- func (f AnalyticsRecordAggregate) New() AnalyticsRecordAggregate
- func (f *AnalyticsRecordAggregate) SetErrorList(parent, thisUnit string, counter *Counter, newUpdate bson.M)
- type City
- type Code
- type Counter
- type Country
- type Dimension
- type ErrorData
- type GeoData
- type Latency
- type Location
- type NetworkStats
- type SQLAnalyticsRecordAggregate
- type UptimeReportAggregate
- type UptimeReportAggregateSQL
- type UptimeReportData
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 OnConflictUptimeAssignments ¶ added in v1.5.0
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"` ApiSchema string `json:"api_schema" bson:"-" gorm:"-"` }
AnalyticsRecord encodes the details of a request
func (*AnalyticsRecord) GetFieldNames ¶
func (a *AnalyticsRecord) GetFieldNames() []string
func (*AnalyticsRecord) GetGeo ¶ added in v1.6.0
func (a *AnalyticsRecord) GetGeo(ipStr string, GeoIPDB *maxminddb.Reader)
func (*AnalyticsRecord) GetLineValues ¶
func (a *AnalyticsRecord) GetLineValues() []string
func (*AnalyticsRecord) SetExpiry ¶ added in v1.6.0
func (a *AnalyticsRecord) SetExpiry(expiresInSeconds int64)
func (*AnalyticsRecord) TableName ¶ added in v1.5.0
func (ar *AnalyticsRecord) TableName() string
func (*AnalyticsRecord) TimeStampFromProto ¶ added in v1.6.0
func (a *AnalyticsRecord) TimeStampFromProto(protoRecord analyticsproto.AnalyticsRecord)
func (*AnalyticsRecord) TimestampToProto ¶ added in v1.6.0
func (a *AnalyticsRecord) TimestampToProto(newRecord *analyticsproto.AnalyticsRecord)
TimestampToProto will process timestamps and assign them to the proto record protobuf converts all timestamps to UTC so we need to ensure that we keep the same original location, in order to do so, we store the location
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 (f AnalyticsRecordAggregate) New() AnalyticsRecordAggregate
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
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 GeoData ¶
type GeoData struct { Country Country `maxminddb:"country" json:"country"` City City `maxminddb:"city" json:"city"` Location Location `maxminddb:"location" json:"location"` }
func GeoIPLookup ¶ added in v1.6.0
func (*GeoData) GetFieldNames ¶ added in v1.3.0
func (*GeoData) GetLineValues ¶ added in v1.3.0
type Latency ¶
func (*Latency) GetFieldNames ¶ added in v1.3.0
func (*Latency) GetLineValues ¶ added in v1.3.0
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) Flush ¶ added in v1.6.0
func (n *NetworkStats) Flush() NetworkStats
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
func (u UptimeReportAggregate) New() UptimeReportAggregate
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"` }
Click to show internal directories.
Click to hide internal directories.