func()

in cloudflare_exporter.go [240:274]


func (e *exporter) getZoneAnalytics(ctx context.Context, zones map[string]string) error {
	var req = graphQL
	var zoneList []string
	for zoneID := range zones {
		zoneList = append(zoneList, zoneID)
	}
	logger := level.Debug(log.With(e.logger, "event", "get analytics"))
	logger.Log("msg", "starting", "bucket_start_time", e.scrapeBucket.getStartTime(), "bucket_end_time", e.scrapeBucket.getEndTime(), "zones", strings.Join(zoneList, ", "))

	req.Var("zone_in", zoneList)
	req.Var("start_time", e.scrapeBucket.getStartTime())
	req.Var("end_time", e.scrapeBucket.getEndTime())
	var gqlResp cloudflareResp
	if err := e.makeGraphqlRequest(ctx, log.With(e.logger), req, &gqlResp); err != nil {
		return err
	}

	if len(gqlResp.Viewer.Zones) < 1 {
		return fmt.Errorf("expected at lest 1 zone, got %d", len(gqlResp.Viewer.Zones))
	}
	for _, zone := range gqlResp.Viewer.Zones {
		for name, extract := range e.extractors {
			results, err := extract(zone, zones, e.scrapeBucket)
			if err != nil {
				return err
			}
			logger.Log("msg", "finished", "bucket_start_time", e.scrapeBucket.getStartTime(), "bucket_end_time", e.scrapeBucket.getEndTime(), "results", results, "extractor", name)
			if results == apiMaxLimit {
				logger.Log("msg", "Warning. max results reached. Reduce cardinality")
			}
		}
	}

	return nil
}