diff --git a/api/cache.go b/api/cache.go index edf8ba1f..27abaa3f 100644 --- a/api/cache.go +++ b/api/cache.go @@ -2,6 +2,7 @@ package api import ( "fmt" + "strconv" "strings" "github.com/flanksource/commons/logger" @@ -56,6 +57,11 @@ func (t *TempCache) Find(ctx ScrapeContext, lookup v1.ExternalID) (*models.Confi } if _, ok := t.notFound[lookup.Key()]; ok { + ctx.Counter("temp_cache_missing_hit", + "scraper_id", ctx.ScraperID(), + "incremental", strconv.FormatBool(ctx.IsIncrementalScrape()), + "query_type", "external_id", + ).Add(1) return nil, nil } @@ -68,6 +74,12 @@ func (t *TempCache) Find(ctx ScrapeContext, lookup v1.ExternalID) (*models.Confi return t.Get(ctx, alias) } + ctx.Counter("temp_cache_miss", + "scraper_id", ctx.ScraperID(), + "incremental", strconv.FormatBool(ctx.IsIncrementalScrape()), + "query_type", "external_id", + ).Add(1) + var result models.ConfigItem if err := lookup.Find(ctx.DB()).Find(&result).Error; err != nil { return nil, err @@ -116,13 +128,29 @@ func (t *TempCache) Get(ctx ScrapeContext, id string, opts ...CacheOption) (*mod }) if _, notFound := t.notFound[id]; notFound && !optMap[IgnoreNotFound] { + ctx.Counter("temp_cache_missing_hit", + "scraper_id", ctx.ScraperID(), + "incremental", strconv.FormatBool(ctx.IsIncrementalScrape()), + "query_type", "id", + ).Add(1) return nil, nil } if item, ok := t.items[id]; ok { + ctx.Counter("temp_cache_hit", + "scraper_id", ctx.ScraperID(), + "incremental", strconv.FormatBool(ctx.IsIncrementalScrape()), + "query_type", "id", + ).Add(1) return &item, nil } + ctx.Counter("temp_cache_miss", + "scraper_id", ctx.ScraperID(), + "incremental", strconv.FormatBool(ctx.IsIncrementalScrape()), + "query_type", "id", + ).Add(1) + result := models.ConfigItem{} if uuid.Validate(id) == nil { diff --git a/db/config.go b/db/config.go index a003bd7e..54a0367c 100644 --- a/db/config.go +++ b/db/config.go @@ -41,13 +41,6 @@ func GetConfigItem(ctx api.ScrapeContext, extType, extID string) (*models.Config return &ci, nil } -// GetConfigItemFromID returns a single config item result -func GetConfigItemFromID(ctx api.ScrapeContext, id string) (*models.ConfigItem, error) { - var ci models.ConfigItem - err := ctx.DB().Limit(1).Omit("config").Find(&ci, "id = ?", id).Error - return &ci, dutydb.ErrorDetails(err) -} - // CreateConfigItem inserts a new config item row in the db func CreateConfigItem(ctx api.ScrapeContext, ci *models.ConfigItem) error { if err := ctx.DB().Clauses(clause.OnConflict{UpdateAll: true}).Create(ci).Error; err != nil { diff --git a/go.mod b/go.mod index bd3cdf00..eb515433 100644 --- a/go.mod +++ b/go.mod @@ -115,10 +115,8 @@ require ( github.com/asecurityteam/rolling v2.0.4+incompatible // indirect github.com/aws/aws-sdk-go-v2/config v1.27.29 // indirect github.com/aws/aws-sdk-go-v2/credentials v1.17.29 // indirect - github.com/bahlo/generic-list-go v0.2.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bmatcuk/doublestar/v4 v4.7.1 // indirect - github.com/buger/jsonparser v1.1.1 // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/cert-manager/cert-manager v1.9.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect @@ -160,7 +158,6 @@ require ( github.com/hashicorp/hcl/v2 v2.21.0 // indirect github.com/henvic/httpretty v0.1.3 // indirect github.com/hirochachacha/go-smb2 v1.1.0 // indirect - github.com/invopop/jsonschema v0.12.0 // indirect github.com/itchyny/gojq v0.12.16 // indirect github.com/itchyny/timefmt-go v0.1.6 // indirect github.com/jackc/pgerrcode v0.0.0-20240316143900-6e2875d9b438 // indirect @@ -204,11 +201,7 @@ require ( github.com/vadimi/go-http-ntlm v1.0.3 // indirect github.com/vadimi/go-http-ntlm/v2 v2.4.1 // indirect github.com/vadimi/go-ntlm v1.2.1 // indirect - github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect - github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect - github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect - github.com/xeipuuv/gojsonschema v1.2.0 // indirect github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect github.com/yuin/gopher-lua v1.1.1 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect diff --git a/go.sum b/go.sum index f464456f..18744c97 100644 --- a/go.sum +++ b/go.sum @@ -403,8 +403,6 @@ github.com/aws/aws-sdk-go-v2/service/support v1.24.3 h1:Bbesu6YZvEYACyydELMwUTYY github.com/aws/aws-sdk-go-v2/service/support v1.24.3/go.mod h1:NvXUhACskXZ2tiXzECpC/97xKzyY7/Wcc1ug5rla7kY= github.com/aws/smithy-go v1.22.1 h1:/HPHZQ0g7f4eUeK6HKglFz8uwVfZKgoI25rb/J+dnro= github.com/aws/smithy-go v1.22.1/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= -github.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk= -github.com/bahlo/generic-list-go v0.2.0/go.mod h1:2KvAjgMlE5NNynlg/5iLrrCCZ2+5xWbdbCW3pNTGyYg= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= @@ -421,8 +419,6 @@ github.com/bmatcuk/doublestar/v4 v4.7.1 h1:fdDeAqgT47acgwd9bd9HxJRDmc9UAmPpc+2m0 github.com/bmatcuk/doublestar/v4 v4.7.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA= github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0= -github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= -github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/cactus/go-statsd-client/statsd v0.0.0-20200423205355-cb0885a1018c/go.mod h1:l/bIBLeOl9eX+wxJAzxS4TveKRtAqlyDpHjhkfO0MEI= github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= @@ -838,8 +834,6 @@ github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+h github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/invopop/jsonschema v0.12.0 h1:6ovsNSuvn9wEQVOyc72aycBMVQFKz7cPdMJn10CvzRI= -github.com/invopop/jsonschema v0.12.0/go.mod h1:ffZ5Km5SWWRAIN6wbDXItl95euhFz2uON45H2qjYt+0= github.com/itchyny/gojq v0.12.16 h1:yLfgLxhIr/6sJNVmYfQjTIv0jGctu6/DgDoivmxTr7g= github.com/itchyny/gojq v0.12.16/go.mod h1:6abHbdC2uB9ogMS38XsErnfqJ94UlngIJGlRAIj4jTM= github.com/itchyny/timefmt-go v0.1.6 h1:ia3s54iciXDdzWzwaVKXZPbiXzxxnv1SPGFfM/myJ5Q= @@ -1241,16 +1235,8 @@ github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6Kllzaw github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo= github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= -github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc= -github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= -github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xhit/go-str2duration v1.2.0/go.mod h1:3cPSlfZlUHVlneIVfePFWcJZsuwf+P1v2SRTV4cUmp4= github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo= diff --git a/scrapers/run_test.go b/scrapers/run_test.go index d7a795b7..37803809 100644 --- a/scrapers/run_test.go +++ b/scrapers/run_test.go @@ -485,7 +485,7 @@ var _ = Describe("Scrapers test", Ordered, func() { Expect(err).To(BeNil()) Expect(configItemID).ToNot(BeNil()) - storedConfigItem, err = db.GetConfigItemFromID(ctx, configItemID.ID) + storedConfigItem, err = GetConfigItemFromID(ctx, configItemID.ID) Expect(err).To(BeNil()) Expect(storedConfigItem).ToNot(BeNil()) }) @@ -517,7 +517,7 @@ var _ = Describe("Scrapers test", Ordered, func() { Expect(err).To(BeNil()) Expect(configItemID).ToNot(BeNil()) - configItem, err := db.GetConfigItemFromID(ctx, configItemID.ID) + configItem, err := GetConfigItemFromID(ctx, configItemID.ID) Expect(err).To(BeNil()) Expect(storedConfigItem).ToNot(BeNil()) @@ -693,3 +693,10 @@ func createRandomConfigMap(name string) *apiv1.ConfigMap { return cm1 } + +// GetConfigItemFromID returns a single config item result +func GetConfigItemFromID(ctx api.ScrapeContext, id string) (*models.ConfigItem, error) { + var ci models.ConfigItem + err := ctx.DB().Limit(1).Omit("config").Find(&ci, "id = ?", id).Error + return &ci, err +}