Prometheus
A Crystal client library for Prometheus monitoring system.
This library provides a complete implementation of Prometheus client library guidelines, including support for all metric types (Counter, Gauge, Histogram, Summary), label sets, and thread-safe operations.
Basic Usage
# Create metrics
counter = Prometheus.counter("http_requests_total", "Total HTTP requests")
gauge = Prometheus.gauge("cpu_usage", "CPU usage percentage")
histogram = Prometheus.histogram("response_time", "Response time in seconds", [0.1, 0.5, 1.0])
summary = Prometheus.summary("request_size", "Request size in bytes")
# Add labels
labels = Prometheus::LabelSet.new({"method" => "GET", "path" => "/api"})
requests = Prometheus.counter("http_requests_total", "Total HTTP requests", labels)
# Use metrics
counter.inc
gauge.set(45.2)
histogram.observe(0.25)
summary.observe(1024)
# Get metrics in Prometheus text format
puts Prometheus.collect
Constants
Class methods
Creates and registers a new Gauge metric.
A Gauge is a metric that represents a single numerical value that can arbitrarily go up and down.
gauge = Prometheus.gauge("cpu_usage", "CPU usage percentage")
gauge.set(45.2) # Set to 45.2
gauge.inc(5) # Increase by 5
gauge.dec(3) # Decrease by 3
Parameters:
- name : The name of the gauge metric
- help : Help text describing the metric
- labels : Optional LabelSet for dimensional data
Creates and registers a new Histogram metric.
A Histogram samples observations (usually things like request durations or response sizes) and counts them in configurable buckets.
histogram = Prometheus.histogram(
"response_time",
"Response time in seconds",
[0.1, 0.5, 1.0, 2.0, 5.0]
)
histogram.observe(0.25)
Parameters:
- name : The name of the histogram metric
- help : Help text describing the metric
- buckets : Array of upper bounds for histogram buckets
- labels : Optional LabelSet for dimensional data
Creates and registers a new Counter metric.
A Counter is a cumulative metric that represents a single monotonically increasing counter whose value can only increase or be reset to zero.
counter = Prometheus.counter("http_requests_total", "Total HTTP requests")
counter.inc # Increment by 1
counter.inc(5) # Increment by 5
Parameters:
- name : The name of the counter metric
- help : Help text describing the metric
- labels : Optional LabelSet for dimensional data
Creates and registers a new Summary metric.
A Summary captures individual observations from an event or sample stream and summarizes them in a traditional way, with count and sum.
summary = Prometheus.summary("request_size", "Request size in bytes")
summary.observe(1024)
Parameters:
- name : The name of the summary metric
- help : Help text describing the metric
- labels : Optional LabelSet for dimensional data