-
Notifications
You must be signed in to change notification settings - Fork 564
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #16913 from oleiman/vbotbuildovich/backport-16566-…
…v23.3.x-28
- Loading branch information
Showing
7 changed files
with
516 additions
and
105 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
/* | ||
* Copyright 2024 Redpanda Data, Inc. | ||
* | ||
* Use of this software is governed by the Business Source License | ||
* included in the file licenses/BSL.md | ||
* | ||
* As of the Change Date specified in that file, in accordance with | ||
* the Business Source License, use of this software will be governed | ||
* by the Apache License, Version 2.0 | ||
*/ | ||
|
||
#include "transform/logging/probes.h" | ||
|
||
#include "config/configuration.h" | ||
#include "prometheus/prometheus_sanitize.h" | ||
#include "seastarx.h" | ||
|
||
#include <seastar/core/metrics_registration.hh> | ||
|
||
namespace transform::logging { | ||
|
||
void logger_probe::setup_metrics(model::transform_name_view transform_name) { | ||
namespace sm = ss::metrics; | ||
|
||
const auto name_label = sm::label("function_name"); | ||
const std::vector<sm::label_instance> labels = { | ||
name_label(transform_name()), | ||
}; | ||
|
||
auto setup_common = [this, &labels]() { | ||
std::vector<sm::impl::metric_definition_impl> defs; | ||
defs.emplace_back(sm::make_counter( | ||
"events_total", | ||
[this]() { return _total_log_events; }, | ||
sm::description("Running count of transform log events"), | ||
labels)); | ||
defs.emplace_back(sm::make_counter( | ||
"events_dropped_total", | ||
[this]() { return _total_dropped_log_events; }, | ||
sm::description("Running count of dropped transform log events"), | ||
labels)); | ||
return defs; | ||
}; | ||
|
||
auto group_name = prometheus_sanitize::metrics_name( | ||
"data_transforms_logger"); | ||
|
||
if (!config::shard_local_cfg().disable_metrics()) { | ||
_metrics.add_group( | ||
group_name, setup_common(), {}, {sm::shard_label, name_label}); | ||
} | ||
|
||
if (!config::shard_local_cfg().disable_public_metrics()) { | ||
auto defs_impl = setup_common(); | ||
std::vector<sm::metric_definition> defs; | ||
defs.reserve(defs_impl.size()); | ||
std::transform( | ||
std::make_move_iterator(defs_impl.begin()), | ||
std::make_move_iterator(defs_impl.end()), | ||
std::back_inserter(defs), | ||
[](auto def) { | ||
return sm::metric_definition{def.aggregate({sm::shard_label})}; | ||
}); | ||
|
||
_public_metrics.add_group(group_name, defs); | ||
} | ||
} | ||
|
||
void manager_probe::setup_metrics(std::function<double()> get_usage_ratio) { | ||
namespace sm = ss::metrics; | ||
|
||
if (config::shard_local_cfg().disable_metrics()) { | ||
return; | ||
} | ||
|
||
auto group_name = prometheus_sanitize::metrics_name( | ||
"data_transforms_log_manager"); | ||
|
||
std::vector<ss::metrics::impl::metric_definition_impl> defs{ | ||
sm::make_gauge( | ||
"buffer_usage_ratio", | ||
[fn = std::move(get_usage_ratio)] { return fn(); }, | ||
sm::description("Transform log manager buffer usage ratio")), | ||
sm::make_counter( | ||
"write_errors_total", | ||
[this] { return _total_write_errors; }, | ||
sm::description("Running count of errors while writing to the " | ||
"transform logs topic")), | ||
}; | ||
|
||
_metrics.add_group(group_name, std::move(defs), {}, {sm::shard_label}); | ||
} | ||
} // namespace transform::logging |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
/* | ||
* Copyright 2024 Redpanda Data, Inc. | ||
* | ||
* Use of this software is governed by the Business Source License | ||
* included in the file licenses/BSL.md | ||
* | ||
* As of the Change Date specified in that file, in accordance with | ||
* the Business Source License, use of this software will be governed | ||
* by the Apache License, Version 2.0 | ||
*/ | ||
|
||
#pragma once | ||
|
||
#include "metrics/metrics.h" | ||
#include "model/transform.h" | ||
|
||
#include <seastar/core/smp.hh> | ||
|
||
namespace transform::logging { | ||
|
||
class logger_probe { | ||
public: | ||
logger_probe() = default; | ||
logger_probe(const logger_probe&) = delete; | ||
logger_probe& operator=(const logger_probe&) = delete; | ||
logger_probe(logger_probe&&) = delete; | ||
logger_probe& operator=(logger_probe&&) = delete; | ||
~logger_probe() {} | ||
|
||
void setup_metrics(model::transform_name_view transform_name); | ||
|
||
void log_event() { ++_total_log_events; } | ||
void dropped_log_event() { ++_total_dropped_log_events; } | ||
|
||
private: | ||
uint64_t _total_log_events{0}; | ||
uint64_t _total_dropped_log_events{0}; | ||
metrics::internal_metric_groups _metrics; | ||
metrics::public_metric_groups _public_metrics; | ||
}; | ||
|
||
class manager_probe { | ||
public: | ||
manager_probe() = default; | ||
manager_probe(const manager_probe&) = delete; | ||
manager_probe& operator=(const manager_probe&) = delete; | ||
manager_probe(manager_probe&&) = delete; | ||
manager_probe& operator=(manager_probe&&) = delete; | ||
~manager_probe() = default; | ||
|
||
void setup_metrics(std::function<double()> get_usage_ratio); | ||
|
||
void write_error() { ++_total_write_errors; } | ||
|
||
private: | ||
uint64_t _total_write_errors{0}; | ||
metrics::internal_metric_groups _metrics; | ||
}; | ||
|
||
} // namespace transform::logging |
Oops, something went wrong.