per peer packet metrics

This commit is contained in:
Grant Limberg 2023-05-03 14:40:50 -07:00
parent 289f231677
commit 3b7883f7bf
No known key found for this signature in database
GPG key ID: 8F2F97D3BE8D7735
4 changed files with 19 additions and 2 deletions

View file

@ -181,6 +181,12 @@ namespace ZeroTier {
{ "zt_peer_latency", "peer latency (ms)", {{}}}; { "zt_peer_latency", "peer latency (ms)", {{}}};
prometheus::simpleapi::gauge_family_t peer_path_count prometheus::simpleapi::gauge_family_t peer_path_count
{ "zt_peer_path_count", "number of paths to peer" }; { "zt_peer_path_count", "number of paths to peer" };
prometheus::simpleapi::counter_family_t peer_incoming_packets
{ "zt_peer_incoming_packets", "number of incoming packets from a peer" };
prometheus::simpleapi::counter_family_t peer_outgoing_packets
{ "zt_peer_outgoing_packets", "number of outgoing packets to a peer" };
prometheus::simpleapi::counter_family_t peer_packet_errors
{ "zt_peer_packet_errors" , "number of incoming packet errors from a peer" };
// General Controller Metrics // General Controller Metrics
prometheus::simpleapi::gauge_metric_t network_count prometheus::simpleapi::gauge_metric_t network_count

View file

@ -110,6 +110,9 @@ namespace ZeroTier {
// Peer Metrics // Peer Metrics
extern prometheus::CustomFamily<prometheus::Histogram<uint64_t>> peer_latency; extern prometheus::CustomFamily<prometheus::Histogram<uint64_t>> peer_latency;
extern prometheus::simpleapi::gauge_family_t peer_path_count; extern prometheus::simpleapi::gauge_family_t peer_path_count;
extern prometheus::simpleapi::counter_family_t peer_incoming_packets;
extern prometheus::simpleapi::counter_family_t peer_outgoing_packets;
extern prometheus::simpleapi::counter_family_t peer_packet_errors;
// General Controller Metrics // General Controller Metrics
extern prometheus::simpleapi::gauge_metric_t network_count; extern prometheus::simpleapi::gauge_metric_t network_count;

View file

@ -52,7 +52,10 @@ Peer::Peer(const RuntimeEnvironment *renv,const Identity &myIdentity,const Ident
_localMultipathSupported(false), _localMultipathSupported(false),
_lastComputedAggregateMeanLatency(0), _lastComputedAggregateMeanLatency(0),
_peer_latency{Metrics::peer_latency.Add({{"node_id", OSUtils::nodeIDStr(peerIdentity.address().toInt())}}, std::vector<uint64_t>{1,3,6,10,30,60,100,300,600,1000})}, _peer_latency{Metrics::peer_latency.Add({{"node_id", OSUtils::nodeIDStr(peerIdentity.address().toInt())}}, std::vector<uint64_t>{1,3,6,10,30,60,100,300,600,1000})},
_path_count{Metrics::peer_path_count.Add({{"node_id", OSUtils::nodeIDStr(peerIdentity.address().toInt())}})} _path_count{Metrics::peer_path_count.Add({{"node_id", OSUtils::nodeIDStr(peerIdentity.address().toInt())}})},
_incoming_packet{Metrics::peer_incoming_packets.Add({{"node_id", OSUtils::nodeIDStr(peerIdentity.address().toInt())}})},
_outgoing_packet{Metrics::peer_outgoing_packets.Add({{"node_id", OSUtils::nodeIDStr(peerIdentity.address().toInt())}})},
_packet_errors{Metrics::peer_packet_errors.Add({{"node_id", OSUtils::nodeIDStr(peerIdentity.address().toInt())}})}
{ {
if (!myIdentity.agree(peerIdentity,_key)) { if (!myIdentity.agree(peerIdentity,_key)) {
throw ZT_EXCEPTION_INVALID_ARGUMENT; throw ZT_EXCEPTION_INVALID_ARGUMENT;
@ -93,7 +96,7 @@ void Peer::received(
default: default:
break; break;
} }
_incoming_packet++;
recordIncomingPacket(path, packetId, payloadLength, verb, flowId, now); recordIncomingPacket(path, packetId, payloadLength, verb, flowId, now);
if (trustEstablished) { if (trustEstablished) {
@ -645,6 +648,7 @@ void Peer::recordOutgoingPacket(const SharedPtr<Path> &path, const uint64_t pack
void Peer::recordIncomingInvalidPacket(const SharedPtr<Path>& path) void Peer::recordIncomingInvalidPacket(const SharedPtr<Path>& path)
{ {
_packet_errors++;
if (_localMultipathSupported && _bond) { if (_localMultipathSupported && _bond) {
_bond->recordIncomingInvalidPacket(path); _bond->recordIncomingInvalidPacket(path);
} }

View file

@ -144,6 +144,7 @@ public:
{ {
SharedPtr<Path> bp(getAppropriatePath(now,force)); SharedPtr<Path> bp(getAppropriatePath(now,force));
if (bp) { if (bp) {
_outgoing_packet++;
return bp->send(RR,tPtr,data,len,now); return bp->send(RR,tPtr,data,len,now);
} }
return false; return false;
@ -601,6 +602,9 @@ private:
prometheus::Histogram<uint64_t> _peer_latency; prometheus::Histogram<uint64_t> _peer_latency;
prometheus::simpleapi::gauge_metric_t _path_count; prometheus::simpleapi::gauge_metric_t _path_count;
prometheus::simpleapi::counter_metric_t _incoming_packet;
prometheus::simpleapi::counter_metric_t _outgoing_packet;
prometheus::simpleapi::counter_metric_t _packet_errors;
}; };
} // namespace ZeroTier } // namespace ZeroTier