Skip to content

24-3: Add sensors to Node Broker (#8091) #8311

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Aug 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading