 9bdcbe0447
			
		
	
	9bdcbe0447
	
	
	
		
			
			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>
		
			
				
	
	
		
			118 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package metrics
 | |
| 
 | |
| import (
 | |
| 	pb "github.com/libp2p/go-libp2p-kad-dht/pb"
 | |
| 	"go.opencensus.io/stats"
 | |
| 	"go.opencensus.io/stats/view"
 | |
| 	"go.opencensus.io/tag"
 | |
| )
 | |
| 
 | |
| var (
 | |
| 	defaultBytesDistribution        = view.Distribution(1024, 2048, 4096, 16384, 65536, 262144, 1048576, 4194304, 16777216, 67108864, 268435456, 1073741824, 4294967296)
 | |
| 	defaultMillisecondsDistribution = view.Distribution(0.01, 0.05, 0.1, 0.3, 0.6, 0.8, 1, 2, 3, 4, 5, 6, 8, 10, 13, 16, 20, 25, 30, 40, 50, 65, 80, 100, 130, 160, 200, 250, 300, 400, 500, 650, 800, 1000, 2000, 5000, 10000, 20000, 50000, 100000)
 | |
| )
 | |
| 
 | |
| // Keys
 | |
| var (
 | |
| 	KeyMessageType, _ = tag.NewKey("message_type")
 | |
| 	KeyPeerID, _      = tag.NewKey("peer_id")
 | |
| 	// KeyInstanceID identifies a dht instance by the pointer address.
 | |
| 	// Useful for differentiating between different dhts that have the same peer id.
 | |
| 	KeyInstanceID, _ = tag.NewKey("instance_id")
 | |
| )
 | |
| 
 | |
| // UpsertMessageType is a convenience upserts the message type
 | |
| // of a pb.Message into the KeyMessageType.
 | |
| func UpsertMessageType(m *pb.Message) tag.Mutator {
 | |
| 	return tag.Upsert(KeyMessageType, m.Type.String())
 | |
| }
 | |
| 
 | |
| // Measures
 | |
| var (
 | |
| 	ReceivedMessages       = stats.Int64("libp2p.io/dht/kad/received_messages", "Total number of messages received per RPC", stats.UnitDimensionless)
 | |
| 	ReceivedMessageErrors  = stats.Int64("libp2p.io/dht/kad/received_message_errors", "Total number of errors for messages received per RPC", stats.UnitDimensionless)
 | |
| 	ReceivedBytes          = stats.Int64("libp2p.io/dht/kad/received_bytes", "Total received bytes per RPC", stats.UnitBytes)
 | |
| 	InboundRequestLatency  = stats.Float64("libp2p.io/dht/kad/inbound_request_latency", "Latency per RPC", stats.UnitMilliseconds)
 | |
| 	OutboundRequestLatency = stats.Float64("libp2p.io/dht/kad/outbound_request_latency", "Latency per RPC", stats.UnitMilliseconds)
 | |
| 	SentMessages           = stats.Int64("libp2p.io/dht/kad/sent_messages", "Total number of messages sent per RPC", stats.UnitDimensionless)
 | |
| 	SentMessageErrors      = stats.Int64("libp2p.io/dht/kad/sent_message_errors", "Total number of errors for messages sent per RPC", stats.UnitDimensionless)
 | |
| 	SentRequests           = stats.Int64("libp2p.io/dht/kad/sent_requests", "Total number of requests sent per RPC", stats.UnitDimensionless)
 | |
| 	SentRequestErrors      = stats.Int64("libp2p.io/dht/kad/sent_request_errors", "Total number of errors for requests sent per RPC", stats.UnitDimensionless)
 | |
| 	SentBytes              = stats.Int64("libp2p.io/dht/kad/sent_bytes", "Total sent bytes per RPC", stats.UnitBytes)
 | |
| 	NetworkSize            = stats.Int64("libp2p.io/dht/kad/network_size", "Network size estimation", stats.UnitDimensionless)
 | |
| )
 | |
| 
 | |
| // Views
 | |
| var (
 | |
| 	ReceivedMessagesView = &view.View{
 | |
| 		Measure:     ReceivedMessages,
 | |
| 		TagKeys:     []tag.Key{KeyMessageType, KeyPeerID, KeyInstanceID},
 | |
| 		Aggregation: view.Count(),
 | |
| 	}
 | |
| 	ReceivedMessageErrorsView = &view.View{
 | |
| 		Measure:     ReceivedMessageErrors,
 | |
| 		TagKeys:     []tag.Key{KeyMessageType, KeyPeerID, KeyInstanceID},
 | |
| 		Aggregation: view.Count(),
 | |
| 	}
 | |
| 	ReceivedBytesView = &view.View{
 | |
| 		Measure:     ReceivedBytes,
 | |
| 		TagKeys:     []tag.Key{KeyMessageType, KeyPeerID, KeyInstanceID},
 | |
| 		Aggregation: defaultBytesDistribution,
 | |
| 	}
 | |
| 	InboundRequestLatencyView = &view.View{
 | |
| 		Measure:     InboundRequestLatency,
 | |
| 		TagKeys:     []tag.Key{KeyMessageType, KeyPeerID, KeyInstanceID},
 | |
| 		Aggregation: defaultMillisecondsDistribution,
 | |
| 	}
 | |
| 	OutboundRequestLatencyView = &view.View{
 | |
| 		Measure:     OutboundRequestLatency,
 | |
| 		TagKeys:     []tag.Key{KeyMessageType, KeyPeerID, KeyInstanceID},
 | |
| 		Aggregation: defaultMillisecondsDistribution,
 | |
| 	}
 | |
| 	SentMessagesView = &view.View{
 | |
| 		Measure:     SentMessages,
 | |
| 		TagKeys:     []tag.Key{KeyMessageType, KeyPeerID, KeyInstanceID},
 | |
| 		Aggregation: view.Count(),
 | |
| 	}
 | |
| 	SentMessageErrorsView = &view.View{
 | |
| 		Measure:     SentMessageErrors,
 | |
| 		TagKeys:     []tag.Key{KeyMessageType, KeyPeerID, KeyInstanceID},
 | |
| 		Aggregation: view.Count(),
 | |
| 	}
 | |
| 	SentRequestsView = &view.View{
 | |
| 		Measure:     SentRequests,
 | |
| 		TagKeys:     []tag.Key{KeyMessageType, KeyPeerID, KeyInstanceID},
 | |
| 		Aggregation: view.Count(),
 | |
| 	}
 | |
| 	SentRequestErrorsView = &view.View{
 | |
| 		Measure:     SentRequestErrors,
 | |
| 		TagKeys:     []tag.Key{KeyMessageType, KeyPeerID, KeyInstanceID},
 | |
| 		Aggregation: view.Count(),
 | |
| 	}
 | |
| 	SentBytesView = &view.View{
 | |
| 		Measure:     SentBytes,
 | |
| 		TagKeys:     []tag.Key{KeyMessageType, KeyPeerID, KeyInstanceID},
 | |
| 		Aggregation: defaultBytesDistribution,
 | |
| 	}
 | |
| 	NetworkSizeView = &view.View{
 | |
| 		Measure:     NetworkSize,
 | |
| 		TagKeys:     []tag.Key{KeyPeerID, KeyInstanceID},
 | |
| 		Aggregation: view.Count(),
 | |
| 	}
 | |
| )
 | |
| 
 | |
| // DefaultViews with all views in it.
 | |
| var DefaultViews = []*view.View{
 | |
| 	ReceivedMessagesView,
 | |
| 	ReceivedMessageErrorsView,
 | |
| 	ReceivedBytesView,
 | |
| 	InboundRequestLatencyView,
 | |
| 	OutboundRequestLatencyView,
 | |
| 	SentMessagesView,
 | |
| 	SentMessageErrorsView,
 | |
| 	SentRequestsView,
 | |
| 	SentRequestErrorsView,
 | |
| 	SentBytesView,
 | |
| 	NetworkSizeView,
 | |
| }
 |