forked from quic-go/quic-go
add a metric for sent packets
This commit is contained in:
@@ -16,6 +16,7 @@ import (
|
|||||||
var (
|
var (
|
||||||
connections = stats.Int64("quic-go/connections", "number of QUIC connections", stats.UnitDimensionless)
|
connections = stats.Int64("quic-go/connections", "number of QUIC connections", stats.UnitDimensionless)
|
||||||
lostPackets = stats.Int64("quic-go/lost-packets", "number of packets declared lost", stats.UnitDimensionless)
|
lostPackets = stats.Int64("quic-go/lost-packets", "number of packets declared lost", stats.UnitDimensionless)
|
||||||
|
sentPackets = stats.Int64("quic-go/sent-packets", "number of packets sent", stats.UnitDimensionless)
|
||||||
)
|
)
|
||||||
|
|
||||||
// Tags
|
// Tags
|
||||||
@@ -24,6 +25,7 @@ var (
|
|||||||
keyIPVersion, _ = tag.NewKey("ip_version")
|
keyIPVersion, _ = tag.NewKey("ip_version")
|
||||||
keyEncryptionLevel, _ = tag.NewKey("encryption_level")
|
keyEncryptionLevel, _ = tag.NewKey("encryption_level")
|
||||||
keyPacketLossReason, _ = tag.NewKey("packet_loss_reason")
|
keyPacketLossReason, _ = tag.NewKey("packet_loss_reason")
|
||||||
|
keyPacketType, _ = tag.NewKey("packet_type")
|
||||||
)
|
)
|
||||||
|
|
||||||
// Views
|
// Views
|
||||||
@@ -38,12 +40,18 @@ var (
|
|||||||
TagKeys: []tag.Key{keyEncryptionLevel, keyPacketLossReason},
|
TagKeys: []tag.Key{keyEncryptionLevel, keyPacketLossReason},
|
||||||
Aggregation: view.Count(),
|
Aggregation: view.Count(),
|
||||||
}
|
}
|
||||||
|
SentPacketsView = &view.View{
|
||||||
|
Measure: sentPackets,
|
||||||
|
TagKeys: []tag.Key{keyPacketType},
|
||||||
|
Aggregation: view.Count(),
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
// DefaultViews collects all OpenCensus views for metric gathering purposes
|
// DefaultViews collects all OpenCensus views for metric gathering purposes
|
||||||
var DefaultViews = []*view.View{
|
var DefaultViews = []*view.View{
|
||||||
ConnectionsView,
|
ConnectionsView,
|
||||||
LostPacketsView,
|
LostPacketsView,
|
||||||
|
SentPacketsView,
|
||||||
}
|
}
|
||||||
|
|
||||||
type tracer struct{}
|
type tracer struct{}
|
||||||
@@ -98,7 +106,14 @@ func (t *connTracer) StartedConnection(local, _ net.Addr, _ logging.VersionNumbe
|
|||||||
func (t *connTracer) ClosedConnection(logging.CloseReason) {}
|
func (t *connTracer) ClosedConnection(logging.CloseReason) {}
|
||||||
func (t *connTracer) SentTransportParameters(*logging.TransportParameters) {}
|
func (t *connTracer) SentTransportParameters(*logging.TransportParameters) {}
|
||||||
func (t *connTracer) ReceivedTransportParameters(*logging.TransportParameters) {}
|
func (t *connTracer) ReceivedTransportParameters(*logging.TransportParameters) {}
|
||||||
func (t *connTracer) SentPacket(*logging.ExtendedHeader, logging.ByteCount, *logging.AckFrame, []logging.Frame) {
|
func (t *connTracer) SentPacket(hdr *logging.ExtendedHeader, _ logging.ByteCount, _ *logging.AckFrame, _ []logging.Frame) {
|
||||||
|
stats.RecordWithTags(
|
||||||
|
context.Background(),
|
||||||
|
[]tag.Mutator{
|
||||||
|
tag.Upsert(keyPacketType, packetType(logging.PacketTypeFromHeader(&hdr.Header)).String()),
|
||||||
|
},
|
||||||
|
sentPackets.M(1),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
func (t *connTracer) ReceivedVersionNegotiationPacket(*logging.Header, []logging.VersionNumber) {}
|
func (t *connTracer) ReceivedVersionNegotiationPacket(*logging.Header, []logging.VersionNumber) {}
|
||||||
func (t *connTracer) ReceivedRetry(*logging.Header) {}
|
func (t *connTracer) ReceivedRetry(*logging.Header) {}
|
||||||
|
|||||||
@@ -44,3 +44,24 @@ func (r packetLossReason) String() string {
|
|||||||
panic("unknown packet loss reason")
|
panic("unknown packet loss reason")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type packetType logging.PacketType
|
||||||
|
|
||||||
|
func (t packetType) String() string {
|
||||||
|
switch logging.PacketType(t) {
|
||||||
|
case logging.PacketTypeInitial:
|
||||||
|
return "initial"
|
||||||
|
case logging.PacketTypeHandshake:
|
||||||
|
return "handshake"
|
||||||
|
case logging.PacketTypeVersionNegotiation:
|
||||||
|
return "version_negotiation"
|
||||||
|
case logging.PacketTypeRetry:
|
||||||
|
return "retry"
|
||||||
|
case logging.PacketType0RTT:
|
||||||
|
return "0-RTT"
|
||||||
|
case logging.PacketType1RTT:
|
||||||
|
return "1-RTT"
|
||||||
|
default:
|
||||||
|
panic("unknown packet type")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user