Skip to content

Commit 6b68b82

Browse files
committed
Fixed sonar errors
1 parent a4fc534 commit 6b68b82

File tree

5 files changed

+42
-32
lines changed

5 files changed

+42
-32
lines changed

api/src/main/java/io/kafbat/ui/service/graphs/PromQueryLangGrammar.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010

1111
class PromQueryLangGrammar {
1212

13+
private PromQueryLangGrammar() {
14+
}
15+
1316
// returns error msg, or empty if query is valid
1417
static Optional<String> validateExpression(String query) {
1518
try {

api/src/main/java/io/kafbat/ui/service/metrics/SummarizedMetrics.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import java.util.stream.Stream;
2222
import lombok.RequiredArgsConstructor;
2323

24-
@Deprecated //used for api backward-compatibility
24+
@Deprecated(forRemoval = false) //used for api backward-compatibility
2525
@RequiredArgsConstructor
2626
public class SummarizedMetrics {
2727

api/src/main/java/io/kafbat/ui/service/metrics/scrape/IoRatesMetricsScanner.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,12 @@
1212
import java.util.HashMap;
1313
import java.util.List;
1414
import java.util.Map;
15-
import java.util.stream.Stream;
1615

1716
// Scans external jmx/prometheus metric and tries to infer io rates
1817
class IoRatesMetricsScanner {
1918

19+
public static final String BROKER_TOPIC_METRICS_SUFFIX = "BrokerTopicMetrics";
20+
public static final String FIFTEEN_MINUTE_RATE_SUFFIX = "FifteenMinuteRate";
2021
// per broker
2122
final Map<Integer, BigDecimal> brokerBytesInFifteenMinuteRate = new HashMap<>();
2223
final Map<Integer, BigDecimal> brokerBytesOutFifteenMinuteRate = new HashMap<>();
@@ -59,23 +60,23 @@ private void updateBrokerIOrates(int nodeId, String name, Labels labels, double
5960
if (!brokerBytesInFifteenMinuteRate.containsKey(nodeId)
6061
&& labels.size() == 1
6162
&& "BytesInPerSec".equalsIgnoreCase(labels.getValue(0))
62-
&& containsIgnoreCase(name, "BrokerTopicMetrics")
63-
&& endsWithIgnoreCase(name, "FifteenMinuteRate")) {
63+
&& containsIgnoreCase(name, BROKER_TOPIC_METRICS_SUFFIX)
64+
&& endsWithIgnoreCase(name, FIFTEEN_MINUTE_RATE_SUFFIX)) {
6465
brokerBytesInFifteenMinuteRate.put(nodeId, BigDecimal.valueOf(value));
6566
}
6667
if (!brokerBytesOutFifteenMinuteRate.containsKey(nodeId)
6768
&& labels.size() == 1
6869
&& "BytesOutPerSec".equalsIgnoreCase(labels.getValue(0))
69-
&& containsIgnoreCase(name, "BrokerTopicMetrics")
70-
&& endsWithIgnoreCase(name, "FifteenMinuteRate")) {
70+
&& containsIgnoreCase(name, BROKER_TOPIC_METRICS_SUFFIX)
71+
&& endsWithIgnoreCase(name, FIFTEEN_MINUTE_RATE_SUFFIX)) {
7172
brokerBytesOutFifteenMinuteRate.put(nodeId, BigDecimal.valueOf(value));
7273
}
7374
}
7475

7576
private void updateTopicsIOrates(String name, Labels labels, double value) {
7677
if (labels.contains("topic")
77-
&& containsIgnoreCase(name, "BrokerTopicMetrics")
78-
&& endsWithIgnoreCase(name, "FifteenMinuteRate")) {
78+
&& containsIgnoreCase(name, BROKER_TOPIC_METRICS_SUFFIX)
79+
&& endsWithIgnoreCase(name, FIFTEEN_MINUTE_RATE_SUFFIX)) {
7980
String topic = labels.get("topic");
8081
if (labels.contains("name")) {
8182
var nameLblVal = labels.get("name");

api/src/main/java/io/kafbat/ui/service/metrics/scrape/inferred/InferredMetricsScraper.java

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@
2323
@RequiredArgsConstructor
2424
public class InferredMetricsScraper {
2525

26+
public static final String NODE_ID_TAG = "node_id";
27+
public static final String TOPIC_TAG = "topic";
28+
public static final String GROUP_TAG = "group";
2629
private ScrapedClusterState prevState = null;
2730

2831
public synchronized Mono<InferredMetrics> scrape(ScrapedClusterState newState) {
@@ -79,7 +82,7 @@ private static void fillNodesMetrics(MetricsRegistry registry, ScrapedClusterSta
7982
registry.gauge(
8083
"broker_bytes_disk",
8184
"Written disk size in bytes of a broker",
82-
List.of("node_id"),
85+
List.of(NODE_ID_TAG),
8386
List.of(nodeId.toString()),
8487
state.segmentStats().getSegmentSize()
8588
);
@@ -89,7 +92,7 @@ private static void fillNodesMetrics(MetricsRegistry registry, ScrapedClusterSta
8992
registry.gauge(
9093
"broker_bytes_usable",
9194
"Usable disk size in bytes of a broker",
92-
List.of("node_id"),
95+
List.of(NODE_ID_TAG),
9396
List.of(nodeId.toString()),
9497
state.logDirSpaceStats().usableBytes()
9598
);
@@ -98,7 +101,7 @@ private static void fillNodesMetrics(MetricsRegistry registry, ScrapedClusterSta
98101
registry.gauge(
99102
"broker_bytes_total",
100103
"Total disk size in bytes of a broker",
101-
List.of("node_id"),
104+
List.of(NODE_ID_TAG),
102105
List.of(nodeId.toString()),
103106
state.logDirSpaceStats().totalBytes()
104107
);
@@ -120,43 +123,43 @@ private static void fillTopicMetrics(MetricsRegistry registry, ScrapedClusterSta
120123
registry.gauge(
121124
"kafka_topic_partitions",
122125
"Number of partitions for this Topic",
123-
List.of("topic"),
126+
List.of(TOPIC_TAG),
124127
List.of(topicName),
125128
state.description().partitions().size()
126129
);
127130
state.endOffsets().forEach((partition, endOffset) -> registry.gauge(
128131
"kafka_topic_partition_next_offset",
129132
"Current (next) Offset of a Broker at Topic/Partition",
130-
List.of("topic", "partition"),
133+
List.of(TOPIC_TAG, "partition"),
131134
List.of(topicName, String.valueOf(partition)),
132135
endOffset
133136
));
134137
state.startOffsets().forEach((partition, startOffset) -> registry.gauge(
135138
"kafka_topic_partition_oldest_offset",
136139
"Oldest Offset of a Broker at Topic/Partition",
137-
List.of("topic", "partition"),
140+
List.of(TOPIC_TAG, "partition"),
138141
List.of(topicName, String.valueOf(partition)),
139142
startOffset
140143
));
141144
state.description().partitions().forEach(p -> {
142145
registry.gauge(
143146
"kafka_topic_partition_in_sync_replica",
144147
"Number of In-Sync Replicas for this Topic/Partition",
145-
List.of("topic", "partition"),
148+
List.of(TOPIC_TAG, "partition"),
146149
List.of(topicName, String.valueOf(p.partition())),
147150
p.isr().size()
148151
);
149152
registry.gauge(
150153
"kafka_topic_partition_replicas",
151154
"Number of Replicas for this Topic/Partition",
152-
List.of("topic", "partition"),
155+
List.of(TOPIC_TAG, "partition"),
153156
List.of(topicName, String.valueOf(p.partition())),
154157
p.replicas().size()
155158
);
156159
registry.gauge(
157160
"kafka_topic_partition_leader",
158161
"Leader Broker ID of this Topic/Partition (-1, if no leader)",
159-
List.of("topic", "partition"),
162+
List.of(TOPIC_TAG, "partition"),
160163
List.of(topicName, String.valueOf(p.partition())),
161164
Optional.ofNullable(p.leader()).map(Node::id).orElse(-1)
162165
);
@@ -165,7 +168,7 @@ private static void fillTopicMetrics(MetricsRegistry registry, ScrapedClusterSta
165168
registry.gauge(
166169
"topic_bytes_disk",
167170
"Disk size in bytes of a topic",
168-
List.of("topic"),
171+
List.of(TOPIC_TAG),
169172
List.of(topicName),
170173
state.segmentStats().getSegmentSize()
171174
);
@@ -186,21 +189,21 @@ private static void fillConsumerGroupsMetrics(MetricsRegistry registry, ScrapedC
186189
registry.gauge(
187190
"group_state",
188191
"State of the consumer group, value = ordinal of org.apache.kafka.common.ConsumerGroupState",
189-
List.of("group"),
192+
List.of(GROUP_TAG),
190193
List.of(groupName),
191194
state.description().state().ordinal()
192195
);
193196
registry.gauge(
194197
"group_member_count",
195198
"Number of member assignments in the consumer group.",
196-
List.of("group"),
199+
List.of(GROUP_TAG),
197200
List.of(groupName),
198201
state.description().members().size()
199202
);
200203
registry.gauge(
201204
"group_host_count",
202205
"Number of distinct hosts in the consumer group.",
203-
List.of("group"),
206+
List.of(GROUP_TAG),
204207
List.of(groupName),
205208
state.description().members().stream().map(MemberDescription::host).distinct().count()
206209
);
@@ -209,7 +212,7 @@ private static void fillConsumerGroupsMetrics(MetricsRegistry registry, ScrapedC
209212
registry.gauge(
210213
"kafka_consumergroup_current_offset",
211214
"Current Offset of a ConsumerGroup at Topic/Partition",
212-
List.of("consumergroup", "topic", "partition"),
215+
List.of("consumergroup", TOPIC_TAG, "partition"),
213216
List.of(groupName, tp.topic(), String.valueOf(tp.partition())),
214217
committedOffset
215218
);
@@ -220,7 +223,7 @@ private static void fillConsumerGroupsMetrics(MetricsRegistry registry, ScrapedC
220223
registry.gauge(
221224
"kafka_consumergroup_lag",
222225
"Current Approximate Lag of a ConsumerGroup at Topic/Partition",
223-
List.of("consumergroup", "topic", "partition"),
226+
List.of("consumergroup", TOPIC_TAG, "partition"),
224227
List.of(groupName, tp.topic(), String.valueOf(tp.partition())),
225228
endOffset - committedOffset //TODO: check +-1
226229
));

api/src/main/java/io/kafbat/ui/service/metrics/scrape/prometheus/PrometheusTextFormatParser.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ public class PrometheusTextFormatParser {
5151
Pattern.compile("^# TYPE ([a-zA-Z_:][a-zA-Z0-9_:]*) (counter|gauge|histogram|summary|untyped)");
5252
private static final Pattern LABEL_PATTERN =
5353
Pattern.compile("([a-zA-Z_:][a-zA-Z0-9_:]*)=\"((?:\\\\\"|\\\\\\\\|\\\\n|[^\"])*)\"");
54+
public static final String QUANTILE_LABEL = "quantile";
5455

5556
private record ParsedDataPoint(String name, Labels labels, double value, Long scrapedAt) {
5657
}
@@ -258,30 +259,32 @@ public Optional<MetricSnapshot> buildSnapshot(String name, @Nullable String help
258259
}
259260
}
260261

261-
@RequiredArgsConstructor
262262
static class CounterDataPointsAccumulator extends UntypedDataPointsAccumulator {
263263

264-
final String name;
265-
final List<CounterDataPointSnapshot> dataPoints = new ArrayList<>();
264+
final List<CounterDataPointSnapshot> counterDataPoints = new ArrayList<>();
265+
266+
public CounterDataPointsAccumulator(String name) {
267+
this.name = name;
268+
}
266269

267270
@Override
268271
public boolean add(ParsedDataPoint dp) {
269272
if (!dp.name.equals(name + "_total")) {
270273
return false;
271274
}
272-
dataPoints.add(
275+
counterDataPoints.add(
273276
CounterDataPointSnapshot.builder()
274277
.labels(dp.labels).value(dp.value).scrapeTimestampMillis(dp.scrapedAt).build());
275278
return true;
276279
}
277280

278281
@Override
279282
public Optional<MetricSnapshot> buildSnapshot(String name, @Nullable String help) {
280-
if (dataPoints.isEmpty()) {
283+
if (counterDataPoints.isEmpty()) {
281284
return Optional.empty();
282285
}
283286
var builder = CounterSnapshot.builder().name(name).help(help);
284-
dataPoints.forEach(builder::dataPoint);
287+
counterDataPoints.forEach(builder::dataPoint);
285288
return Optional.of(builder.build());
286289
}
287290
}
@@ -359,9 +362,9 @@ static class SummaryDataPointsAccumulator implements MetricDataPointsAccumulator
359362

360363
@Override
361364
public boolean add(ParsedDataPoint dp) {
362-
if (dp.name.equals(name) && dp.labels.contains("quantile")) {
363-
var histLbls = rmLabel(dp.labels, "quantile");
364-
quantiles.put(histLbls, new Quantile(parseDouble(dp.labels.get("quantile")), dp.value));
365+
if (dp.name.equals(name) && dp.labels.contains(QUANTILE_LABEL)) {
366+
var histLbls = rmLabel(dp.labels, QUANTILE_LABEL);
367+
quantiles.put(histLbls, new Quantile(parseDouble(dp.labels.get(QUANTILE_LABEL)), dp.value));
365368
return true;
366369
}
367370
if (dp.name.equals(name + "_count")) {

0 commit comments

Comments
 (0)