cloudflared-mirror/proxy/metrics.go

65 lines
1.6 KiB
Go

package proxy
import (
"github.com/prometheus/client_golang/prometheus"
"github.com/cloudflare/cloudflared/connection"
)
// Metrics uses connection.MetricsNamespace(aka cloudflared) as namespace and connection.TunnelSubsystem
// (tunnel) as subsystem to keep them consistent with the previous qualifier.
var (
totalRequests = prometheus.NewCounter(
prometheus.CounterOpts{
Namespace: connection.MetricsNamespace,
Subsystem: connection.TunnelSubsystem,
Name: "total_requests",
Help: "Amount of requests proxied through all the tunnels",
},
)
concurrentRequests = prometheus.NewGauge(
prometheus.GaugeOpts{
Namespace: connection.MetricsNamespace,
Subsystem: connection.TunnelSubsystem,
Name: "concurrent_requests_per_tunnel",
Help: "Concurrent requests proxied through each tunnel",
},
)
responseByCode = prometheus.NewCounterVec(
prometheus.CounterOpts{
Namespace: connection.MetricsNamespace,
Subsystem: connection.TunnelSubsystem,
Name: "response_by_code",
Help: "Count of responses by HTTP status code",
},
[]string{"status_code"},
)
requestErrors = prometheus.NewCounter(
prometheus.CounterOpts{
Namespace: connection.MetricsNamespace,
Subsystem: connection.TunnelSubsystem,
Name: "request_errors",
Help: "Count of error proxying to origin",
},
)
)
func init() {
prometheus.MustRegister(
totalRequests,
concurrentRequests,
responseByCode,
requestErrors,
)
}
func incrementRequests() {
totalRequests.Inc()
concurrentRequests.Inc()
}
func decrementConcurrentRequests() {
concurrentRequests.Dec()
}