Integrate BACKBEAT SDK and resolve KACHING license validation
Major integrations and fixes: - Added BACKBEAT SDK integration for P2P operation timing - Implemented beat-aware status tracking for distributed operations - Added Docker secrets support for secure license management - Resolved KACHING license validation via HTTPS/TLS - Updated docker-compose configuration for clean stack deployment - Disabled rollback policies to prevent deployment failures - Added license credential storage (CHORUS-DEV-MULTI-001) Technical improvements: - BACKBEAT P2P operation tracking with phase management - Enhanced configuration system with file-based secrets - Improved error handling for license validation - Clean separation of KACHING and CHORUS deployment stacks 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
162
vendor/github.com/libp2p/go-libp2p/p2p/host/autonat/metrics.go
generated
vendored
Normal file
162
vendor/github.com/libp2p/go-libp2p/p2p/host/autonat/metrics.go
generated
vendored
Normal file
@@ -0,0 +1,162 @@
|
||||
package autonat
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/libp2p/go-libp2p/core/network"
|
||||
"github.com/libp2p/go-libp2p/p2p/host/autonat/pb"
|
||||
"github.com/libp2p/go-libp2p/p2p/metricshelper"
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
)
|
||||
|
||||
const metricNamespace = "libp2p_autonat"
|
||||
|
||||
var (
|
||||
reachabilityStatus = prometheus.NewGauge(
|
||||
prometheus.GaugeOpts{
|
||||
Namespace: metricNamespace,
|
||||
Name: "reachability_status",
|
||||
Help: "Current node reachability",
|
||||
},
|
||||
)
|
||||
reachabilityStatusConfidence = prometheus.NewGauge(
|
||||
prometheus.GaugeOpts{
|
||||
Namespace: metricNamespace,
|
||||
Name: "reachability_status_confidence",
|
||||
Help: "Node reachability status confidence",
|
||||
},
|
||||
)
|
||||
receivedDialResponseTotal = prometheus.NewCounterVec(
|
||||
prometheus.CounterOpts{
|
||||
Namespace: metricNamespace,
|
||||
Name: "received_dial_response_total",
|
||||
Help: "Count of dial responses for client",
|
||||
},
|
||||
[]string{"response_status"},
|
||||
)
|
||||
outgoingDialResponseTotal = prometheus.NewCounterVec(
|
||||
prometheus.CounterOpts{
|
||||
Namespace: metricNamespace,
|
||||
Name: "outgoing_dial_response_total",
|
||||
Help: "Count of dial responses for server",
|
||||
},
|
||||
[]string{"response_status"},
|
||||
)
|
||||
outgoingDialRefusedTotal = prometheus.NewCounterVec(
|
||||
prometheus.CounterOpts{
|
||||
Namespace: metricNamespace,
|
||||
Name: "outgoing_dial_refused_total",
|
||||
Help: "Count of dial requests refused by server",
|
||||
},
|
||||
[]string{"refusal_reason"},
|
||||
)
|
||||
nextProbeTimestamp = prometheus.NewGauge(
|
||||
prometheus.GaugeOpts{
|
||||
Namespace: metricNamespace,
|
||||
Name: "next_probe_timestamp",
|
||||
Help: "Time of next probe",
|
||||
},
|
||||
)
|
||||
collectors = []prometheus.Collector{
|
||||
reachabilityStatus,
|
||||
reachabilityStatusConfidence,
|
||||
receivedDialResponseTotal,
|
||||
outgoingDialResponseTotal,
|
||||
outgoingDialRefusedTotal,
|
||||
nextProbeTimestamp,
|
||||
}
|
||||
)
|
||||
|
||||
type MetricsTracer interface {
|
||||
ReachabilityStatus(status network.Reachability)
|
||||
ReachabilityStatusConfidence(confidence int)
|
||||
ReceivedDialResponse(status pb.Message_ResponseStatus)
|
||||
OutgoingDialResponse(status pb.Message_ResponseStatus)
|
||||
OutgoingDialRefused(reason string)
|
||||
NextProbeTime(t time.Time)
|
||||
}
|
||||
|
||||
func getResponseStatus(status pb.Message_ResponseStatus) string {
|
||||
var s string
|
||||
switch status {
|
||||
case pb.Message_OK:
|
||||
s = "ok"
|
||||
case pb.Message_E_DIAL_ERROR:
|
||||
s = "dial error"
|
||||
case pb.Message_E_DIAL_REFUSED:
|
||||
s = "dial refused"
|
||||
case pb.Message_E_BAD_REQUEST:
|
||||
s = "bad request"
|
||||
case pb.Message_E_INTERNAL_ERROR:
|
||||
s = "internal error"
|
||||
default:
|
||||
s = "unknown"
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
const (
|
||||
rate_limited = "rate limited"
|
||||
dial_blocked = "dial blocked"
|
||||
no_valid_address = "no valid address"
|
||||
)
|
||||
|
||||
type metricsTracer struct{}
|
||||
|
||||
var _ MetricsTracer = &metricsTracer{}
|
||||
|
||||
type metricsTracerSetting struct {
|
||||
reg prometheus.Registerer
|
||||
}
|
||||
|
||||
type MetricsTracerOption func(*metricsTracerSetting)
|
||||
|
||||
func WithRegisterer(reg prometheus.Registerer) MetricsTracerOption {
|
||||
return func(s *metricsTracerSetting) {
|
||||
if reg != nil {
|
||||
s.reg = reg
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func NewMetricsTracer(opts ...MetricsTracerOption) MetricsTracer {
|
||||
setting := &metricsTracerSetting{reg: prometheus.DefaultRegisterer}
|
||||
for _, opt := range opts {
|
||||
opt(setting)
|
||||
}
|
||||
metricshelper.RegisterCollectors(setting.reg, collectors...)
|
||||
return &metricsTracer{}
|
||||
}
|
||||
|
||||
func (mt *metricsTracer) ReachabilityStatus(status network.Reachability) {
|
||||
reachabilityStatus.Set(float64(status))
|
||||
}
|
||||
|
||||
func (mt *metricsTracer) ReachabilityStatusConfidence(confidence int) {
|
||||
reachabilityStatusConfidence.Set(float64(confidence))
|
||||
}
|
||||
|
||||
func (mt *metricsTracer) ReceivedDialResponse(status pb.Message_ResponseStatus) {
|
||||
tags := metricshelper.GetStringSlice()
|
||||
defer metricshelper.PutStringSlice(tags)
|
||||
*tags = append(*tags, getResponseStatus(status))
|
||||
receivedDialResponseTotal.WithLabelValues(*tags...).Inc()
|
||||
}
|
||||
|
||||
func (mt *metricsTracer) OutgoingDialResponse(status pb.Message_ResponseStatus) {
|
||||
tags := metricshelper.GetStringSlice()
|
||||
defer metricshelper.PutStringSlice(tags)
|
||||
*tags = append(*tags, getResponseStatus(status))
|
||||
outgoingDialResponseTotal.WithLabelValues(*tags...).Inc()
|
||||
}
|
||||
|
||||
func (mt *metricsTracer) OutgoingDialRefused(reason string) {
|
||||
tags := metricshelper.GetStringSlice()
|
||||
defer metricshelper.PutStringSlice(tags)
|
||||
*tags = append(*tags, reason)
|
||||
outgoingDialRefusedTotal.WithLabelValues(*tags...).Inc()
|
||||
}
|
||||
|
||||
func (mt *metricsTracer) NextProbeTime(t time.Time) {
|
||||
nextProbeTimestamp.Set(float64(t.Unix()))
|
||||
}
|
||||
Reference in New Issue
Block a user