You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by wu...@apache.org on 2022/11/15 09:37:25 UTC
[ambari-metrics] branch master updated: AMBARI-25582: Change the way AMS Grafana datasource discovers the Kafka topics (#66)
This is an automated email from the ASF dual-hosted git repository.
wuzhiguo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ambari-metrics.git
The following commit(s) were added to refs/heads/master by this push:
new e45ef8a AMBARI-25582: Change the way AMS Grafana datasource discovers the Kafka topics (#66)
e45ef8a is described below
commit e45ef8a199f64ffd4a01283a808e0e9d2742b630
Author: lucasbak <lu...@gmail.com>
AuthorDate: Tue Nov 15 10:37:21 2022 +0100
AMBARI-25582: Change the way AMS Grafana datasource discovers the Kafka topics (#66)
---
.../ambari-metrics/datasource.js | 31 +++++++++++++++-------
1 file changed, 21 insertions(+), 10 deletions(-)
diff --git a/ambari-metrics-grafana/ambari-metrics/datasource.js b/ambari-metrics-grafana/ambari-metrics/datasource.js
index f46fe00..decf67a 100644
--- a/ambari-metrics-grafana/ambari-metrics/datasource.js
+++ b/ambari-metrics-grafana/ambari-metrics/datasource.js
@@ -872,17 +872,28 @@ define([
if (interpolated === "kafka-topics") {
return this.initMetricAppidMapping()
.then(function () {
- var kafkaTopics = getMetrics(allMetrics, "kafka_broker");
- var extractTopics = kafkaTopics.filter(/./.test.bind(new RegExp("\\b.log.Log.\\b", 'g')));
- var topics = _.map(extractTopics, function (topic) {
- var topicPrefix = "topic.";
- return topic.substring(topic.lastIndexOf(topicPrefix) + topicPrefix.length, topic.length);
+ // patterns to check possible kafka topics
+ var kafkaTopicPatterns = ['^kafka\\.server.*\\.topic\\.(.*)\\.[\\d\\w]*$',
+ '^kafka\\.log\\.Log\\..*.topic\\.(.*)$',
+ '^kafka\\.cluster.*\\.topic\\.(.*)$'];
+
+ var kafkaMetrics = getMetrics(allMetrics, "kafka_broker");
+ var topics = []
+
+ // filter metrics that can contain topic name
+ var topicMetrics = kafkaMetrics.filter(function(metric) {
+ return metric.indexOf(".topic.") > 0;
});
- topics = _.sortBy(_.uniq(topics));
- var i = topics.indexOf("ambari_kafka_service_check");
- if (i != -1) {
- topics.splice(i, 1);
- }
+
+ _.forEach(kafkaTopicPatterns, function(topicPattern) {
+ _.forEach(topicMetrics, function(checkTopic) {
+ var topicMatch = checkTopic.match(RegExp(topicPattern));
+ var topicName = topicMatch ? topicMatch[1] : null;
+ if (topicName && topicName != "ambari_kafka_service_check" && topics.indexOf(topicName) < 0) {
+ topics.push(topicName);
+ }
+ })
+ })
return _.map(topics, function (topics) {
return {
text: topics
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ambari.apache.org
For additional commands, e-mail: commits-help@ambari.apache.org