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
}