Skip to content

Commit c146758

Browse files
authored
Split IC peer name labels (#12401)
1 parent 3f0791d commit c146758

File tree

4 files changed

+25
-12
lines changed

4 files changed

+25
-12
lines changed

ydb/library/actors/interconnect/interconnect_counters.cpp

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -261,8 +261,10 @@ namespace {
261261
UpdateUtilization(PrevStarvation, Starvation, starvation);
262262
}
263263

264-
void SetPeerInfo(const TString& name, const TString& dataCenterId) override {
265-
if (name != std::exchange(HumanFriendlyPeerHostName, name)) {
264+
void SetPeerInfo(ui32 nodeId, const TString& name, const TString& dataCenterId) override {
265+
if (nodeId != PeerNodeId || name != HumanFriendlyPeerHostName) {
266+
PeerNodeId = nodeId;
267+
HumanFriendlyPeerHostName = name;
266268
PerSessionCounters.Reset();
267269
}
268270
VALGRIND_MAKE_READABLE(&DataCenterId, sizeof(DataCenterId));
@@ -278,7 +280,9 @@ namespace {
278280
const bool updatePerSession = !PerSessionCounters || updatePerDataCenter;
279281
if (HasSessionCounters && updatePerSession) {
280282
auto base = MergePerDataCenterCounters ? PerDataCenterCounters : Counters;
281-
PerSessionCounters = base->GetSubgroup("peer", *HumanFriendlyPeerHostName);
283+
PerSessionCounters = base
284+
->GetSubgroup("peer_node_id", ToString(*PeerNodeId))
285+
->GetSubgroup("peer_name", *HumanFriendlyPeerHostName);
282286
}
283287

284288
const bool updateGlobal = !Initialized;
@@ -601,8 +605,10 @@ namespace {
601605
UpdateUtilization(PrevStarvation_, Starvation_, starvation);
602606
}
603607

604-
void SetPeerInfo(const TString& name, const TString& dataCenterId) override {
605-
if (name != std::exchange(HumanFriendlyPeerHostName, name)) {
608+
void SetPeerInfo(ui32 nodeId, const TString& name, const TString& dataCenterId) override {
609+
if (nodeId != PeerNodeId || name != HumanFriendlyPeerHostName) {
610+
PeerNodeId = nodeId;
611+
HumanFriendlyPeerHostName = name;
606612
PerSessionMetrics_.reset();
607613
}
608614
VALGRIND_MAKE_READABLE(&DataCenterId, sizeof(DataCenterId));
@@ -620,7 +626,10 @@ namespace {
620626
if (updatePerSession) {
621627
auto base = MergePerDataCenterMetrics_ ? PerDataCenterMetrics_ : Metrics_;
622628
PerSessionMetrics_ = std::make_shared<NMonitoring::TMetricSubRegistry>(
623-
NMonitoring::TLabels{{"peer", *HumanFriendlyPeerHostName}}, base);
629+
NMonitoring::TLabels{
630+
{"peer_node_id", ToString(*PeerNodeId)},
631+
{"peer_name", *HumanFriendlyPeerHostName},
632+
}, base);
624633
}
625634

626635
const bool updateGlobal = !Initialized_;

ydb/library/actors/interconnect/interconnect_counters.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class IInterconnectMetrics {
3535
virtual void IncDisconnectByReason(const TString& s) = 0;
3636
virtual void IncUsefulReadWakeups() = 0;
3737
virtual void IncSpuriousReadWakeups() = 0;
38-
virtual void SetPeerInfo(const TString& name, const TString& dataCenterId) = 0;
38+
virtual void SetPeerInfo(ui32 nodeId, const TString& name, const TString& dataCenterId) = 0;
3939
virtual void AddInputChannelsIncomingTraffic(ui16 channel, ui64 incomingTraffic) = 0;
4040
virtual void IncInputChannelsIncomingEvents(ui16 channel) = 0;
4141
virtual void IncRecvSyscalls(ui64 ns) = 0;
@@ -50,6 +50,7 @@ class IInterconnectMetrics {
5050

5151
protected:
5252
std::optional<TString> DataCenterId;
53+
std::optional<ui32> PeerNodeId;
5354
std::optional<TString> HumanFriendlyPeerHostName;
5455
};
5556

ydb/library/actors/interconnect/interconnect_tcp_proxy.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,13 @@
99
namespace NActors {
1010
static constexpr TDuration GetNodeRequestTimeout = TDuration::Seconds(5);
1111

12-
static TString PeerNameForHuman(ui32 nodeNum, const TString& longName, ui16 port) {
12+
static TString PeerNameForHuman(const TString& longName, ui16 port) {
1313
TStringBuf token;
1414
TStringBuf(longName).NextTok('.', token);
15-
return ToString<ui32>(nodeNum) + ":" + (token.size() > 0 ? TString(token) : longName) + ":" + ToString<ui16>(port);
15+
return TStringBuilder()
16+
<< (token.size() > 0 ? TString(token) : longName)
17+
<< ':'
18+
<< port;
1619
}
1720

1821
TInterconnectProxyTCP::TInterconnectProxyTCP(const ui32 node, TInterconnectProxyCommon::TPtr common,
@@ -106,12 +109,12 @@ namespace NActors {
106109
TransitToErrorState("cannot get node info");
107110
} else {
108111
auto& info = *ev->Get()->Node;
109-
TString name = PeerNameForHuman(PeerNodeId, info.Host, info.Port);
112+
TString name = PeerNameForHuman(info.Host, info.Port);
110113
TechnicalPeerHostName = info.Host;
111114
if (!Metrics) {
112115
Metrics = Common->Metrics ? CreateInterconnectMetrics(Common) : CreateInterconnectCounters(Common);
113116
}
114-
Metrics->SetPeerInfo(name, info.Location.GetDataCenterId());
117+
Metrics->SetPeerInfo(PeerNodeId, name, info.Location.GetDataCenterId());
115118

116119
LOG_DEBUG_IC("ICP02", "configured for host %s", name.data());
117120

ydb/library/actors/interconnect/ut/channel_scheduler_ut.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ Y_UNIT_TEST_SUITE(ChannelScheduler) {
1010
auto common = MakeIntrusive<TInterconnectProxyCommon>();
1111
common->MonCounters = MakeIntrusive<NMonitoring::TDynamicCounters>();
1212
std::shared_ptr<IInterconnectMetrics> ctr = CreateInterconnectCounters(common);
13-
ctr->SetPeerInfo("peer", "1");
13+
ctr->SetPeerInfo(1, "peer", "1");
1414
auto callback = [](THolder<IEventBase>) {};
1515
TEventHolderPool pool(common, callback);
1616
TSessionParams p;

0 commit comments

Comments
 (0)