from prometheus_client import Counter, Gauge # --------------------------------------------------------------------------- # Gauges — current scrape state, updated after each outcode # --------------------------------------------------------------------------- scrape_state = Gauge( "scrape_state", "Current scrape state as a labeled gauge (1 = active)", ["state"], ) scrape_outcodes_done = Gauge( "scrape_outcodes_done", "Outcodes processed in current channel", ) scrape_outcodes_total = Gauge( "scrape_outcodes_total", "Total outcodes in current channel", ) scrape_properties_total = Gauge( "scrape_properties_total", "Properties found so far", ["channel"], ) scrape_elapsed_seconds = Gauge( "scrape_elapsed_seconds", "Seconds since scrape started", ) # --------------------------------------------------------------------------- # Counters — monotonically increasing # --------------------------------------------------------------------------- http_requests_total = Counter( "http_requests_total", "HTTP requests made by the scraper", ["status", "endpoint"], ) http_errors_total = Counter( "http_errors_total", "HTTP connection/timeout errors", ["type"], ) ip_rotations_total = Counter( "ip_rotations_total", "VPN IP rotation attempts", ["result"], ) scrape_errors_total = Counter( "scrape_errors_total", "Per-outcode scrape errors", )