- Quickstart
- Features
- Access Control
- Access Logging
- Authorization
- BGP
- Certificate Stores
- Docker Support
- Dynamic Reloading
- Graceful Shutdown
- GRPC Proxy
- HTTP Compression
- HTTP Header Support
- HTTP Path Prepending
- HTTP Path Stripping
- HTTP Redirects
- HTTPS TCP-SNI Proxy
- HTTPS Upstream
- Metrics
- PROXY Protocol Support
- Server Sent Events (SSE)
- TCP Dynamic Proxy
- TCP Proxy
- TCP-SNI Proxy
- Traffic Shaping
- Vault Support
- Web UI
- Websockets
- Deployment
- Config Language
- Reference
- FAQ
- Contributing
- Code of Conduct
- Contact
Metrics
Fabio collects metrics per route and service instance as well as running totalsto avoid computing large amounts of metrics. The metrics can be sent toCirconus,Graphite,StatsD,DataDog(via statsd - or since v1.6.0 to native protocol with tag support) or stdout. See themetrics.*
options in thefabio.propertiesfile. Prometheus is also possible, but it works the reverse of the other metrics platforms.Instead of pushing data to a metrics server, prometheus expects to poll an endpoint for changes.
Configuring Prometheus Metrics
To configure prometheus metrics, you need to do the following:
- You must specify that prometheus is themetrics.target
- You must configure a listener inproxy.addr with
proto=prometheus
- (optional) override themetrics.prometheus.path,metrics.prometheus.subsystem,andmetrics.prometheus.buckets.
Metrics info (for non-tagged backends, such as circonus and statsd_raw)
Fabio reports the following metrics:
Name | Type | Description |
---|---|---|
{route}.rx | timer | Number of bytes received by fabio for TCP target |
{route}.tx | timer | Number of bytes transmitted by fabio for TCP target |
{route} | timer | Average response time for a route |
http.status.code.{code} | timer | Average response time for all HTTP(S) requests per status code |
notfound | counter | Number of failed HTTP route lookups |
requests | timer | Average response time for all HTTP(S) requests |
grpc.requests | timer | Average response time for all GRPC(S) requests |
grpc.noroute | counter | Number of failed GRPC route lookups |
grpc.conn | counter | Number of established GRPC proxy connections |
grpc.status.{code} | timer | Average response time for all GRPC(S) requests per status code |
tcp.conn | counter | Number of established TCP proxy connections |
tcp.connfail | counter | Number of TCP upstream connection failures |
tcp.noroute | counter | Number of failed TCP upstream route lookups |
tcp_sni.conn | counter | Number of established TCP+SNI proxy connections |
tcp_sni.connfail | counter | Number of failed TCP+SNI proxy connections |
tcp_sni.noroute | counter | Number of failed TCP+SNI upstream route lookups |
ws.conn | gauge | Number of actively open websocket connections |
Legend
timer
A timer counts events and provides an average throughput and latency number.Depending on the metrics provider the aggregation happens either in the metrics library(go-metrics: statsd, graphite) or in the system of the metrics provider (Circonus)
counter
A counter counts events and provides an monotonically increasing value.
gauge
A gauge provides a current value.
{code}
{code}
is the three digit HTTP status code like200
.
{route}
{route}
is a shorthand for the metrics name generated for a routewith themetrics.names
template defined infabio.properties