scraper.go 715 B

12345678910111213141516171819202122232425262728293031
  1. package metrics
  2. import (
  3. "github.com/opencost/opencost/modules/collector-source/pkg/metrics/parser"
  4. "github.com/opencost/opencost/modules/collector-source/pkg/metrics/target"
  5. )
  6. // MetricScraper is a struct that is used to scrape and parse a raw metrics `ScrapeTarget.`
  7. type MetricScraper struct {
  8. scrapeTarget target.ScrapeTarget
  9. }
  10. func NewMetricScraper(scrapeTarget target.ScrapeTarget) *MetricScraper {
  11. return &MetricScraper{
  12. scrapeTarget: scrapeTarget,
  13. }
  14. }
  15. func (s *MetricScraper) Scrape() ([]*parser.MetricRecord, error) {
  16. reader, err := s.scrapeTarget.Load()
  17. if err != nil {
  18. return nil, err
  19. }
  20. metrics, err := parser.Parse(reader)
  21. if err != nil {
  22. return nil, err
  23. }
  24. return metrics, nil
  25. }