G
GillMacedo/seriesdiff
Prometheus metrics diff for pull requests
View on GitHub ↗Link checked 2026-11-12 · HTTP 200 · opens the vendor's own site
Official descriptionPrometheus metrics diff for pull requests. A Claude Code skill and Go CLI that compares /metrics scrapes from the base branch and your change, and lists removed or renamed metrics, type changes, removed labels, bucket changes, ID-like label values and series growth, with the alert rules and dashboar
- Star count
- 0 ★ · GillMacedo/seriesdiff · read from the GitHub search API · (checked 2026-11-13 20:00:50)
- Source
- read directly from its GitHub page · type: open-source project
- Harvest history
- first seen 2026-11-03 · last seen 2026-11-14 · seen 12× · listed by 1 sources
- Score
- score 103 · 1 sources · repo
FAQ (answers come from our records)
Who is it for?
We filed it under these tags: 开源项目. The tags come from the entry itself, not a taxonomy we imposed.
Who maintains it?
repository
GillMacedo/seriesdiff;first catalogued 2026-11-03;last seen 2026-11-14。There is no official certification or quality rating here — we record sources and dates only.# seriesdiff: Prometheus metrics diff for pull requests
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
A Claude Code skill and Go CLI for backend developers and SREs who change instrumented code and want to know, before merging, whether the change breaks Prometheus alerts and Grafana dashboards or blows up metric cardinality. It compares two /metrics scrapes, one from the base branch and one from your change, and lists removed or renamed metrics, type changes, removed labels, changed histogram buckets, label values that look like IDs, lost series and series growth. With --refs it names the alert rules and dashboard lines that use each changed metric.
Renaming a metric, dropping a label or switching a route label from the template to the raw path usually pass code review and CI, because tests rarely check metric names and labels. The first sign is an alert that silently stops firing or a Prometheus server running out of memory. seriesdiff reads the scrape files, so it works with any exporter or client library, and it refuses an empty, garbled or cut-off scrape instead of calling it clean.
## What you can ask Claude
"Does my branch rename or remove any Prometheus metrics our alerts use?"
"Will this change add high-cardinality labels to our metrics?"
"Compare /metrics from main and from my branch and tell me what breaks."
"We upgraded nodeexporter. Which of our dashboards will lose data?"
## Install
As a Claude Code plugin:
claude plugin marketplace add GillMacedo/seriesdiff
claude plugin install seriesdiff@seriesdiff-marketplace
Or as a CLI with Go 1.22 or newer. It has no dependencies:
go run github.com/GillMacedo/seriesdiff/plugin/scripts@latest compare base.prom head.prom
## Example
examples/orders holds three versions of a small made-up HTTP service instrumented with the real clientgolang library. after makes typical pull request mistakes: it labels requests with the raw path instead of the route template, changes the latency buckets, drops the reason label from payment errors, renames a gauge, and turns a counter into a gauge. scripts/scrape-examples.sh builds each version, sends the same requests, and saves /metrics. examples/monitoring holds alert rules and a dashboard written against the before metrics. From a clone of this repo:
$ go run ./plugin/scripts compare --refs examples/monitoring examples/scrapes/orders-before.prom examples/scrapes/orders-after.prom
1 removed metric, 1 type change, 1 removed label, 1 bucket change, 2 labels with ID-like values, 2 metrics that lost series, 2 new metrics
Series: 114 -> 114. Metrics: 45 -> 46.
Removed metrics (queries, alerts and dashboards using them get no data):
orderqueuedepth gauge, 1 series
probably renamed to ordersqueuedepth
used in examples/monitoring/alerts.yml:11, examples/monitoring/dashboards/orders.json:22
Type changed (rate() and histogramquantile() depend on the type):
cacheentries counter -> gauge
used in examples/monitoring/dashboards/orders.json:17
Removed labels (by() and label matchers using them stop matching):
paymenterrorstotal label reason, which had 2 values
used in examples/monitoring/alerts.yml:14, examples/monitoring/dashboards/orders.json:12
Histogram buckets changed (quantiles across the change and le= matchers are affected):
Renaming a metric, dropping a label or switching a route label from the template to the raw path usually pass code review and CI, because tests rarely check metric names and labels. The first sign is an alert that silently stops firing or a Prometheus server running out of memory. seriesdiff reads the scrape files, so it works with any exporter or client library, and it refuses an empty, garbled or cut-off scrape instead of calling it clean.
## What you can ask Claude
"Does my branch rename or remove any Prometheus metrics our alerts use?"
"Will this change add high-cardinality labels to our metrics?"
"Compare /metrics from main and from my branch and tell me what breaks."
"We upgraded nodeexporter. Which of our dashboards will lose data?"
## Install
As a Claude Code plugin:
claude plugin marketplace add GillMacedo/seriesdiff
claude plugin install seriesdiff@seriesdiff-marketplace
Or as a CLI with Go 1.22 or newer. It has no dependencies:
go run github.com/GillMacedo/seriesdiff/plugin/scripts@latest compare base.prom head.prom
## Example
examples/orders holds three versions of a small made-up HTTP service instrumented with the real clientgolang library. after makes typical pull request mistakes: it labels requests with the raw path instead of the route template, changes the latency buckets, drops the reason label from payment errors, renames a gauge, and turns a counter into a gauge. scripts/scrape-examples.sh builds each version, sends the same requests, and saves /metrics. examples/monitoring holds alert rules and a dashboard written against the before metrics. From a clone of this repo:
$ go run ./plugin/scripts compare --refs examples/monitoring examples/scrapes/orders-before.prom examples/scrapes/orders-after.prom
1 removed metric, 1 type change, 1 removed label, 1 bucket change, 2 labels with ID-like values, 2 metrics that lost series, 2 new metrics
Series: 114 -> 114. Metrics: 45 -> 46.
Removed metrics (queries, alerts and dashboards using them get no data):
orderqueuedepth gauge, 1 series
probably renamed to ordersqueuedepth
used in examples/monitoring/alerts.yml:11, examples/monitoring/dashboards/orders.json:22
Type changed (rate() and histogramquantile() depend on the type):
cacheentries counter -> gauge
used in examples/monitoring/dashboards/orders.json:17
Removed labels (by() and label matchers using them stop matching):
paymenterrorstotal label reason, which had 2 values
used in examples/monitoring/alerts.yml:14, examples/monitoring/dashboards/orders.json:12
Histogram buckets changed (quantiles across the change and le= matchers are affected):
Listed badge (optional)
Copy this line into the README if you want the listing mark. Optional, and it does not affect being listed.
[](https://anclum.com/en/s/gillmacedo-seriesdiff/)
- Source
- github · https://github.com/GillMacedo/seriesdiff
- Browse by field
- Open source
- added
- today
More like this
Filed under
Every tag opens the full list for that filter. Counts are the live catalogue figures.