Skip to content

Commit

Permalink
24-3: Add sensors to Node Broker (ydb-platform#8091) (ydb-platform#8311)
Browse files Browse the repository at this point in the history
  • Loading branch information
pixcc authored and spuchin committed Sep 9, 2024
1 parent 7104871 commit acce3e0
Show file tree
Hide file tree
Showing 11 changed files with 111 additions and 9 deletions.
27 changes: 27 additions & 0 deletions ydb/core/mind/node_broker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@
#include <ydb/core/base/nameservice.h>
#include <ydb/core/base/path.h>
#include <ydb/core/cms/console/config_helpers.h>
#include <ydb/core/protos/counters_node_broker.pb.h>
#include <ydb/core/protos/node_broker.pb.h>
#include <ydb/core/tablet/tablet_counters_protobuf.h>
#include <ydb/core/tablet_flat/tablet_flat_executed.h>
#include <ydb/core/tx/scheme_cache/scheme_cache.h>

Expand Down Expand Up @@ -66,6 +68,7 @@ void TNodeBroker::OnActivateExecutor(const TActorContext &ctx)

EnableStableNodeNames = appData->FeatureFlags.GetEnableStableNodeNames();

Executor()->RegisterExternalTabletCounters(TabletCountersPtr);
ClearState();

ProcessTx(CreateTxInitScheme(), ctx);
Expand Down Expand Up @@ -296,6 +299,7 @@ void TNodeBroker::ProcessListNodesRequest(TEvNodeBroker::TEvListNodes::TPtr &ev)
if (version != Epoch.Version)
resp->PreSerializedData = EpochCache;

TabletCounters->Percentile()[COUNTER_LIST_NODES_BYTES].IncrementFor(resp->GetCachedByteSize());
LOG_TRACE_S(TActorContext::AsActorContext(), NKikimrServices::NODE_BROKER,
"Send TEvNodesInfo for epoch " << Epoch.ToString());

Expand Down Expand Up @@ -427,6 +431,7 @@ void TNodeBroker::PrepareEpochCache()
FillNodeInfo(entry.second, *info.AddExpiredNodes());

Y_PROTOBUF_SUPPRESS_NODISCARD info.SerializeToString(&EpochCache);
TabletCounters->Simple()[COUNTER_EPOCH_SIZE_BYTES].Set(EpochCache.Size());
}

void TNodeBroker::AddNodeToEpochCache(const TNodeInfo &node)
Expand All @@ -441,6 +446,7 @@ void TNodeBroker::AddNodeToEpochCache(const TNodeInfo &node)
Y_PROTOBUF_SUPPRESS_NODISCARD info.SerializeToString(&delta);

EpochCache += delta;
TabletCounters->Simple()[COUNTER_EPOCH_SIZE_BYTES].Set(EpochCache.Size());
}

void TNodeBroker::SubscribeForConfigUpdates(const TActorContext &ctx)
Expand Down Expand Up @@ -822,6 +828,7 @@ void TNodeBroker::Handle(TEvConsole::TEvReplaceConfigSubscriptionsResponse::TPtr
void TNodeBroker::Handle(TEvNodeBroker::TEvListNodes::TPtr &ev,
const TActorContext &)
{
TabletCounters->Cumulative()[COUNTER_LIST_NODES_REQUESTS].Increment(1);
auto &rec = ev->Get()->Record;

ui64 epoch = rec.GetMinEpoch();
Expand All @@ -836,6 +843,7 @@ void TNodeBroker::Handle(TEvNodeBroker::TEvListNodes::TPtr &ev,
void TNodeBroker::Handle(TEvNodeBroker::TEvResolveNode::TPtr &ev,
const TActorContext &ctx)
{
TabletCounters->Cumulative()[COUNTER_RESOLVE_NODE_REQUESTS].Increment(1);
ui32 nodeId = ev->Get()->Record.GetNodeId();
TAutoPtr<TEvNodeBroker::TEvResolvedNode> resp = new TEvNodeBroker::TEvResolvedNode;

Expand All @@ -859,6 +867,7 @@ void TNodeBroker::Handle(TEvNodeBroker::TEvRegistrationRequest::TPtr &ev,
{
LOG_TRACE_S(ctx, NKikimrServices::NODE_BROKER, "Handle TEvNodeBroker::TEvRegistrationRequest"
<< ": request# " << ev->Get()->Record.ShortDebugString());
TabletCounters->Cumulative()[COUNTER_REGISTRATION_REQUESTS].Increment(1);

class TResolveTenantActor : public TActorBootstrapped<TResolveTenantActor> {
TEvNodeBroker::TEvRegistrationRequest::TPtr Ev;
Expand Down Expand Up @@ -945,6 +954,7 @@ void TNodeBroker::Handle(TEvNodeBroker::TEvRegistrationRequest::TPtr &ev,
void TNodeBroker::Handle(TEvNodeBroker::TEvExtendLeaseRequest::TPtr &ev,
const TActorContext &ctx)
{
TabletCounters->Cumulative()[COUNTER_EXTEND_LEASE_REQUESTS].Increment(1);
ui32 nodeId = ev->Get()->Record.GetNodeId();
ProcessTx(nodeId, CreateTxExtendLease(ev), ctx);
}
Expand Down Expand Up @@ -995,6 +1005,23 @@ void TNodeBroker::Handle(TEvPrivate::TEvResolvedRegistrationRequest::TPtr &ev,
ProcessTx(CreateTxRegisterNode(ev), ctx);
}

TNodeBroker::TNodeBroker(const TActorId &tablet, TTabletStorageInfo *info)
: TActor(&TThis::StateInit)
, TTabletExecutedFlat(info, tablet, new NMiniKQL::TMiniKQLFactory)
, EpochDuration(TDuration::Hours(1))
, ConfigSubscriptionId(0)
, StableNodeNamePrefix("slot-")
, TxProcessor(new TTxProcessor(*this, "root", NKikimrServices::NODE_BROKER))
{
TabletCountersPtr.Reset(new TProtobufTabletCounters<
ESimpleCounters_descriptor,
ECumulativeCounters_descriptor,
EPercentileCounters_descriptor,
ETxTypes_descriptor
>());
TabletCounters = TabletCountersPtr.Get();
}

IActor *CreateNodeBroker(const TActorId &tablet,
TTabletStorageInfo *info)
{
Expand Down
3 changes: 3 additions & 0 deletions ydb/core/mind/node_broker__extend_lease.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#include "node_broker__scheme.h"

#include <ydb/core/base/appdata.h>
#include <ydb/core/protos/counters_node_broker.pb.h>

namespace NKikimr {
namespace NNodeBroker {
Expand All @@ -17,6 +18,8 @@ class TNodeBroker::TTxExtendLease : public TTransactionBase<TNodeBroker> {
{
}

TTxType GetTxType() const override { return TXTYPE_EXTEND_LEASE; }

bool Error(TStatus::ECode code,
const TString &reason,
const TActorContext &ctx)
Expand Down
4 changes: 4 additions & 0 deletions ydb/core/mind/node_broker__init_scheme.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
#include "node_broker_impl.h"
#include "node_broker__scheme.h"

#include <ydb/core/protos/counters_node_broker.pb.h>

namespace NKikimr {
namespace NNodeBroker {

Expand All @@ -11,6 +13,8 @@ class TNodeBroker::TTxInitScheme : public TTransactionBase<TNodeBroker> {
{
}

TTxType GetTxType() const override { return TXTYPE_INIT_SCHEME; }

bool Execute(TTransactionContext &txc, const TActorContext &ctx) override
{
LOG_DEBUG(ctx, NKikimrServices::NODE_BROKER, "TTxInitScheme Execute");
Expand Down
3 changes: 3 additions & 0 deletions ydb/core/mind/node_broker__load_state.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#include "node_broker__scheme.h"

#include <ydb/core/base/appdata.h>
#include <ydb/core/protos/counters_node_broker.pb.h>

namespace NKikimr {
namespace NNodeBroker {
Expand All @@ -13,6 +14,8 @@ class TNodeBroker::TTxLoadState : public TTransactionBase<TNodeBroker> {
{
}

TTxType GetTxType() const override { return TXTYPE_LOAD_STATE; }

bool Execute(TTransactionContext &txc, const TActorContext &ctx) override
{
LOG_DEBUG(ctx, NKikimrServices::NODE_BROKER, "TTxLoadState Execute");
Expand Down
3 changes: 3 additions & 0 deletions ydb/core/mind/node_broker__register_node.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#include "node_broker__scheme.h"

#include <ydb/core/base/appdata.h>
#include <ydb/core/protos/counters_node_broker.pb.h>

namespace NKikimr {
namespace NNodeBroker {
Expand All @@ -21,6 +22,8 @@ class TNodeBroker::TTxRegisterNode : public TTransactionBase<TNodeBroker> {
{
}

TTxType GetTxType() const override { return TXTYPE_REGISTER_NODE; }

bool Error(TStatus::ECode code,
const TString &reason,
const TActorContext &ctx)
Expand Down
4 changes: 4 additions & 0 deletions ydb/core/mind/node_broker__update_config.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
#include "node_broker_impl.h"
#include "node_broker__scheme.h"

#include <ydb/core/protos/counters_node_broker.pb.h>

namespace NKikimr {
namespace NNodeBroker {

Expand All @@ -24,6 +26,8 @@ class TNodeBroker::TTxUpdateConfig : public TTransactionBase<TNodeBroker> {
{
}

TTxType GetTxType() const override { return TXTYPE_UPDATE_CONFIG; }

bool ProcessNotification(const TActorContext &ctx)
{
auto &rec = Notification->Get()->Record;
Expand Down
4 changes: 4 additions & 0 deletions ydb/core/mind/node_broker__update_config_subscription.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
#include "node_broker_impl.h"
#include "node_broker__scheme.h"

#include <ydb/core/protos/counters_node_broker.pb.h>

namespace NKikimr {
namespace NNodeBroker {

Expand All @@ -14,6 +16,8 @@ class TNodeBroker::TTxUpdateConfigSubscription : public TTransactionBase<TNodeBr
{
}

TTxType GetTxType() const override { return TXTYPE_UPDATE_CONFIG_SUBSCRIPTION; }

bool Execute(TTransactionContext &txc,
const TActorContext &ctx) override
{
Expand Down
4 changes: 4 additions & 0 deletions ydb/core/mind/node_broker__update_epoch.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
#include "node_broker_impl.h"
#include "node_broker__scheme.h"

#include <ydb/core/protos/counters_node_broker.pb.h>

namespace NKikimr {
namespace NNodeBroker {

Expand All @@ -11,6 +13,8 @@ class TNodeBroker::TTxUpdateEpoch : public TTransactionBase<TNodeBroker> {
{
}

TTxType GetTxType() const override { return TXTYPE_UPDATE_EPOCH; }

bool Execute(TTransactionContext &txc, const TActorContext &ctx) override
{
LOG_DEBUG_S(ctx, NKikimrServices::NODE_BROKER, "TTxUpdateEpoch Execute");
Expand Down
13 changes: 4 additions & 9 deletions ydb/core/mind/node_broker_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -341,16 +341,11 @@ class TNodeBroker : public TActor<TNodeBroker>
TSchedulerCookieHolder EpochTimerCookieHolder;
TString EpochCache;

TTabletCountersBase* TabletCounters;
TAutoPtr<TTabletCountersBase> TabletCountersPtr;

public:
TNodeBroker(const TActorId &tablet, TTabletStorageInfo *info)
: TActor(&TThis::StateInit)
, TTabletExecutedFlat(info, tablet, new NMiniKQL::TMiniKQLFactory)
, EpochDuration(TDuration::Hours(1))
, ConfigSubscriptionId(0)
, StableNodeNamePrefix("slot-")
, TxProcessor(new TTxProcessor(*this, "root", NKikimrServices::NODE_BROKER))
{
}
TNodeBroker(const TActorId &tablet, TTabletStorageInfo *info);

static constexpr NKikimrServices::TActivity::EType ActorActivityType()
{
Expand Down
54 changes: 54 additions & 0 deletions ydb/core/protos/counters_node_broker.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import "ydb/core/protos/counters.proto";

package NKikimr.NNodeBroker;

option java_package = "ru.yandex.kikimr.proto";

option (NKikimr.TabletTypeName) = "NodeBroker"; // Used as prefix for all counters

enum ESimpleCounters {
COUNTER_EPOCH_SIZE_BYTES = 0 [(CounterOpts) = {Name: "EpochSizeBytes"}];
}

enum ECumulativeCounters {
COUNTER_LIST_NODES_REQUESTS = 0 [(CounterOpts) = {Name: "ListNodesRequests"}];
COUNTER_RESOLVE_NODE_REQUESTS = 1 [(CounterOpts) = {Name: "ResolveNodeRequests"}];
COUNTER_REGISTRATION_REQUESTS = 2 [(CounterOpts) = {Name: "RegistrationRequests"}];
COUNTER_EXTEND_LEASE_REQUESTS = 3 [(CounterOpts) = {Name: "ExtendLeaseRequests"}];
}

enum EPercentileCounters {
COUNTER_LIST_NODES_BYTES = 0 [(CounterOpts) = {
Name: "ListNodesBytes",
Ranges: { Value: 0 Name: "0" }
Ranges: { Value: 128 Name: "128" }
Ranges: { Value: 1024 Name: "1024" }
Ranges: { Value: 2048 Name: "2048" }
Ranges: { Value: 4096 Name: "4096" }
Ranges: { Value: 8192 Name: "8192" }
Ranges: { Value: 16384 Name: "16384" }
Ranges: { Value: 32768 Name: "32768" }
Ranges: { Value: 65536 Name: "65536" }
Ranges: { Value: 131072 Name: "131072" }
Ranges: { Value: 262144 Name: "262144" }
Ranges: { Value: 524288 Name: "524288" }
Ranges: { Value: 1048576 Name: "1048576" }
Ranges: { Value: 2097152 Name: "2097152" }
Ranges: { Value: 4194304 Name: "4194304" }
Ranges: { Value: 8388608 Name: "8388608" }
Ranges: { Value: 16777216 Name: "16777216" }
Ranges: { Value: 33554432 Name: "33554432" }
Ranges: { Value: 67108864 Name: "67108864" }
Ranges: { Value: 134217728 Name: "134217728" }
}];
}

enum ETxTypes {
TXTYPE_EXTEND_LEASE = 0 [(TxTypeOpts) = {Name: "TTxExtendLease"}];
TXTYPE_INIT_SCHEME = 1 [(TxTypeOpts) = {Name: "TTxInitScheme"}];
TXTYPE_LOAD_STATE = 2 [(TxTypeOpts) = {Name: "TTxLoadState"}];
TXTYPE_REGISTER_NODE = 3 [(TxTypeOpts) = {Name: "TTxRegisterNode"}];
TXTYPE_UPDATE_CONFIG = 4 [(TxTypeOpts) = {Name: "TTxUpdateConfig"}];
TXTYPE_UPDATE_CONFIG_SUBSCRIPTION = 5 [(TxTypeOpts) = {Name: "TTxUpdateConfigSubscription"}];
TXTYPE_UPDATE_EPOCH = 6 [(TxTypeOpts) = {Name: "TTxUpdateEpoch"}];
}
1 change: 1 addition & 0 deletions ydb/core/protos/ya.make
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ SRCS(
counters_kesus.proto
counters_keyvalue.proto
counters_mediator.proto
counters_node_broker.proto
counters_pq.proto
counters_replication.proto
counters_schemeshard.proto
Expand Down

0 comments on commit acce3e0

Please sign in to comment.