client_golang

The official Prometheus instrumentation library for Go applications.

Library
Go
vv1.25.0
6,043 stars
Apache License 2.0

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
92 /100 Excellent
Development Activity 100
Maintenance 84
Community 84
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
85 /100 Excellent
Architecture 88
Code Quality 90
Innovation 82
Learning Curve 78

client_golang is the official Go client library for Prometheus, providing the core primitives (Counter, Gauge, Histogram, Summary) used to instrument application code, plus a registry for collecting and exposing those metrics. It also ships an HTTP client for querying the Prometheus HTTP API and a Pushgateway push client for batch jobs.

Maintained directly under the prometheus GitHub organization, it is the reference implementation most other language clients follow conceptually, and is the default choice for any Go service that needs to expose /metrics for Prometheus scraping.

What You Get

  • Core metric types — Counter, Gauge, Histogram, Summary — plus their …Vec variants for labeled metrics
  • A Registry/Registerer/Gatherer abstraction for collecting metrics from custom Collector implementations
  • promhttp.Handler() to expose a standard /metrics endpoint in Prometheus text or OpenMetrics exposition format
  • promauto constructors that register metrics automatically at construction time, removing boilerplate MustRegister calls
  • Built-in collectors for Go runtime stats (goroutines, GC, memstats) and process stats (CPU, memory, file descriptors)
  • A push package for sending metrics to a Prometheus Pushgateway from batch/cron jobs
  • testutil helpers (CollectAndCompare, ToFloat64, GatherAndCompare) for asserting on metric values in unit tests

Common Use Cases

  • Exposing a /metrics endpoint on a Go web service or API for Prometheus to scrape
  • Instrumenting request counts, latencies, and error rates with labeled CounterVec/HistogramVec metrics
  • Reporting custom application-level gauges (queue depth, active connections, cache hit ratio)
  • Pushing metrics from short-lived batch jobs or cron tasks via the Pushgateway client
  • Writing unit tests that assert specific metric values were recorded after an operation

Under The Hood

Architecture — The core of the library is prometheus/registry.go, which implements a Registry type satisfying both the Registerer interface (for registering Collectors) and the Gatherer interface (for scraping all registered collectors into a slice of dto.MetricFamily protobuf messages via internal goroutine-fed channels, capMetricChan/capDescChan). Individual metric types (counter.go, gauge.go, histogram.go — the latter alone is over 2,000 lines, covering both classic fixed-bucket histograms and native/sparse exponential histograms) implement the Metric and Collector interfaces so they can be registered directly or embedded inside custom collectors. promhttp/http.go wraps a Gatherer in an http.Handler that negotiates between Prometheus text format and OpenMetrics via content negotiation, applying gzip and error-handling options. promauto/auto.go is a thin factory layer over the same constructors that registers on creation and panics on failure, trading explicitness for reduced boilerplate. Sub-packages (collectors, push, testutil, api/prometheus) are independently importable so consumers only pull in what they use.

Tech Stack — Pure Go (99.3% of the codebase per GitHub’s language breakdown), targeting the two most recent major Go releases per its documented support policy (currently requiring Go 1.25 per go.mod). Dependencies are minimal and deliberately scoped: github.com/prometheus/client_model and google.golang.org/protobuf for the wire format, github.com/prometheus/common for shared exposition-format helpers, github.com/cespare/xxhash/v2 for fast label hashing, github.com/beorn7/perks for streaming quantile estimation in Summaries, and github.com/klauspost/compress for response compression in promhttp. No code generation frameworks or external build tooling beyond a standard Makefile.

Code Quality — Extensive test coverage: 69 _test.go files against 162 total .go files (roughly 43% of files are tests), including dedicated example tests (example_*_test.go) that double as executable documentation, a lint.go/promlint sub-package that validates metric naming conventions, and testutil.go exposing CollectAndCompare/GatherAndCompare specifically so downstream consumers can unit-test their own instrumentation. The .golangci.yml config enforces a strict lint baseline across the module. Error handling is explicit throughout — registration failures return errors (or panic only in the promauto/Must* variants, which is a documented, opt-in tradeoff) rather than failing silently.

API Design — The public API is built around small, composable interfaces (Collector, Registerer, Gatherer, Metric) which is idiomatic Go but does require understanding the collector/registry split before writing anything nontrivial — this is the library’s main source of onboarding friction. promauto exists specifically to shortcut that with import-and-call constructors for the common case. Naming is highly consistent (NewCounter/NewCounterVec/NewGauge/NewGaugeVec follow one predictable pattern), and the package-level doc.go includes a complete runnable example. The separation of instrumentation (prometheus), exposition (promhttp), auto-registration (promauto), and testing (testutil) into distinct importable sub-packages keeps each consumer’s dependency footprint minimal.

Used by 72 apps in this directory

Go
79%
Apache 2.0

OpenMeter

Developer Tools · Invoicing Finance

2,401

Open-source metering and billing engine for AI, agentic, and DevTool monetization — ingest usage events in real time and turn them into accurate invoices automatically.

View details
87
Repo Health
81
Technical
66
Dependency
Built with
Go 79%
TypeScript 16%
Updated 1 weeks ago
TypeScript
54%
Other

OpenReplay

Analytics

13,042

Self-hosted session replay and product analytics suite that lets you see exactly what users do on your web app — without sending data to third parties.

View details
91
Repo Health
77
Technical
66
Dependency
Built with
TypeScript 54%
Go 13%
Updated 1 weeks ago
Go
91%
Apache 2.0

Ory Kratos

Authentication

13,933

API-first identity and user management that handles login, registration, MFA, and recovery so your application never has to.

View details
69
Repo Health
78
Technical
65
Dependency
Built with
Go 91%
Updated 3 months ago
TypeScript
51%
ZLIB

Portainer

Devops

38,707

A lightweight, open-source web UI that puts Docker, Kubernetes, and Podman management within reach of any team—no CLI expertise required.

View details
93
Repo Health
79
Technical
65
Dependency
Built with
TypeScript 51%
Go 38%
Updated 1 weeks ago
Python
55%
Other

PostHog

Ab Testing Experimentation · Analytics · Developer Tools

40,397

The all-in-one open source product platform combining analytics, session replay, feature flags, error tracking, AI observability, and a built-in data warehouse in a single self-hostable stack.

View details
92
Repo Health
80
Technical
65
Dependency
Built with
Python 55%
TypeScript 36%
Updated 6 days ago
TypeScript
56%
AGPL 3.0

Prisme Analytics

Analytics

134

A self-hosted, privacy-focused web analytics platform built on Go and ClickHouse, with a ~2KB cookieless tracking script and Grafana-based dashboards for users, teams, and multi-organization access.

View details
38
Repo Health
61
Technical
76
Dependency
Built with
TypeScript 56%
Go 38%
Updated 8 months ago
Go
82%
Other

PrivateCaptcha

Authentication · Security

198

Privacy-first, self-hostable Proof-of-Work CAPTCHA for GDPR-compliant bot protection.

View details
74
Repo Health
78
Technical
74
Dependency
Built with
Go 82%
HTML 10%
Updated 6 days ago
Go
68%
MIT

Probo

Automation · Security

1,476

Open-source GRC platform for engineering and security teams.

View details
87
Repo Health
90
Technical
69
Dependency
Built with
Go 68%
TypeScript 30%
Updated 1 weeks ago
Go
90%
AGPL 3.0

Pyroscope

Developer Tools · Devops · Monitoring

11,703

An open-source, horizontally scalable continuous profiling platform that pinpoints CPU, memory, and I/O bottlenecks down to the exact line of code, built by Grafana Labs alongside Loki, Tempo, and Mimir.

View details
92
Repo Health
89
Technical
65
Dependency
Built with
Go 90%
Updated 6 days ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers