65 lines
1.6 KiB
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()
|
|
}
|