{"id":15678143,"url":"https://github.com/hairyhenderson/dockerhub_ratelimit_exporter","last_synced_at":"2025-07-28T20:08:55.363Z","repository":{"id":39675331,"uuid":"314132151","full_name":"hairyhenderson/dockerhub_ratelimit_exporter","owner":"hairyhenderson","description":"A Prometheus-format exporter to report on DockerHub per-image rate limits","archived":false,"fork":false,"pushed_at":"2025-07-13T18:24:03.000Z","size":176,"stargazers_count":11,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-28T20:04:09.490Z","etag":null,"topics":["docker","dockerhub","hacktoberfest","prometheus","prometheus-exporter"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hairyhenderson.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"hairyhenderson"}},"created_at":"2020-11-19T04:04:16.000Z","updated_at":"2025-07-13T18:24:05.000Z","dependencies_parsed_at":"2023-02-19T15:35:14.587Z","dependency_job_id":"686b9e3b-e852-4692-b9cd-d0be7200f836","html_url":"https://github.com/hairyhenderson/dockerhub_ratelimit_exporter","commit_stats":{"total_commits":97,"total_committers":2,"mean_commits":48.5,"dds":"0.20618556701030932","last_synced_commit":"327361be6ae230e00c98623e859f9d1eefbfd43a"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hairyhenderson/dockerhub_ratelimit_exporter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hairyhenderson%2Fdockerhub_ratelimit_exporter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hairyhenderson%2Fdockerhub_ratelimit_exporter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hairyhenderson%2Fdockerhub_ratelimit_exporter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hairyhenderson%2Fdockerhub_ratelimit_exporter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hairyhenderson","download_url":"https://codeload.github.com/hairyhenderson/dockerhub_ratelimit_exporter/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hairyhenderson%2Fdockerhub_ratelimit_exporter/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267578003,"owners_count":24110351,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-28T02:00:09.689Z","response_time":68,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","dockerhub","hacktoberfest","prometheus","prometheus-exporter"],"created_at":"2024-10-03T16:17:37.183Z","updated_at":"2025-07-28T20:08:55.344Z","avatar_url":"https://github.com/hairyhenderson.png","language":"Go","funding_links":["https://github.com/sponsors/hairyhenderson"],"categories":[],"sub_categories":[],"readme":"[![Build][gh-actions-build-image]][gh-actions-build-url]\n[![Docker Build][gh-actions-docker-image]][gh-actions-docker-url]\n[![Total Downloads][gh-downloads-image]][gh-downloads-url]\n[![hairyhenderson/dockerhub_ratelimit_exporter on DockerHub][dockerhub-image]][dockerhub-url]\n\n# dockerhub_ratelimit_exporter\n\nA Prometheus-format exporter to report on DockerHub per-image rate limits.\n\nRecently, DockerHub has [introduced rate limiting](https://docs.docker.com/docker-hub/download-rate-limit/)\nfor anonymous and free-tier users. This exporter can help Prometheus users\ntrack the remaining pulls for certain images.\n\n## Status/Roadmap\n\nThis is brand-new, hacked-together over the course of a couple hours. It works,\nbut I'm certain there are bugs.\n\nThis is currently very _thin_ on features. Some things that are missing:\n\n- support for authenticating to DockerHub\n- support for caching auth tokens on a per-repo basis\n- exposing a few more general-purpose metrics\n\n## Usage\n\nThe image name is provided as a query parameter when querying the exporter,\nand Prometheus-format metrics are returned, like this:\n\n```console\n$ curl http://localhost:9766/limits?image=hairyhenderson/gomplate:v3.8.0\n# HELP dockerhub_ratelimits_limit total number of pulls that can be performed during the window\n# TYPE dockerhub_ratelimits_limit gauge\ndockerhub_ratelimits_limit{image=\"hairyhenderson/gomplate:v3.8.0\"} 100\n# HELP dockerhub_ratelimits_remaining number of pulls remaining for the window\n# TYPE dockerhub_ratelimits_remaining gauge\ndockerhub_ratelimits_remaining{image=\"hairyhenderson/gomplate:v3.8.0\"} 100\n# HELP dockerhub_ratelimits_window_seconds the length of the time window\n# TYPE dockerhub_ratelimits_window_seconds gauge\ndockerhub_ratelimits_window_seconds{image=\"hairyhenderson/gomplate:v3.8.0\"} 21600\n```\n\n## Prometheus Configuration\n\nWhen using Prometheus to scrape the exporter, the `image` parameter can be\nprovided like this:\n\n```yaml\nscrape_configs:\n  - job_name: hub-limits\n    scrape_interval: 15s\n    metrics_path: /limits\n    params:\n      image:\n        - busybox\n        - hairyhenderson/gomplate:v3.8.0\n        - prom/prometheus:v2.22.1\n    static_configs:\n      - targets:\n        - localhost:9766\n```\n\n## License\n\n[The MIT License](http://opensource.org/licenses/MIT)\n\nCopyright (c) 2020 Dave Henderson\n\n[gh-actions-build-image]: https://github.com/hairyhenderson/dockerhub_ratelimit_exporter/workflows/Build/badge.svg\n[gh-actions-build-url]: https://github.com/hairyhenderson/dockerhub_ratelimit_exporter/actions?workflow=Build\n\n[gh-actions-docker-image]: https://github.com/hairyhenderson/dockerhub_ratelimit_exporter/workflows/Docker%20Build/badge.svg\n[gh-actions-docker-url]: https://github.com/hairyhenderson/dockerhub_ratelimit_exporter/actions?workflow=Docker%20Build\n\n[gh-downloads-image]: https://img.shields.io/github/downloads/hairyhenderson/dockerhub_ratelimit_exporter/total.svg\n[gh-downloads-url]: https://github.com/hairyhenderson/dockerhub_ratelimit_exporter/releases\n\n[dockerhub-image]: https://img.shields.io/badge/docker-ready-blue.svg\n[dockerhub-url]: https://hub.docker.com/r/hairyhenderson/dockerhub_ratelimit_exporter\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhairyhenderson%2Fdockerhub_ratelimit_exporter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhairyhenderson%2Fdockerhub_ratelimit_exporter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhairyhenderson%2Fdockerhub_ratelimit_exporter/lists"}