Skip to content

Commit 0434a03

Browse files
authored
Merge pull request #134 from Cinimex-Informatica/feature/issue45_add_queue_fill
Add mqobject_queue_queue_fill_percentage metric
2 parents 2f9ab96 + 4a1bffc commit 0434a03

File tree

4 files changed

+26
-0
lines changed

4 files changed

+26
-0
lines changed

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1400,6 +1400,11 @@ This section provides a description of metrics of queues, channels and listeners
14001400
<td>Shows maximum number of messages that are allowed on the queue.</td>
14011401
</tr>
14021402
<tr>
1403+
<td>mqobject_queue_queue_fill_percentage</td>
1404+
<td>gauge</td>
1405+
<td>Shows queue fill percentage.</td>
1406+
</tr>
1407+
<tr>
14031408
<td>mqobject_channel_channel_status_hundredths</td>
14041409
<td>gauge</td>
14051410
<td>Shows current channel status. Mapping of channel statuses to prometheus metric values can be found <a href="#channel-status-mapping">here</a>.</td>

src/main/java/ru/cinimex/exporter/prometheus/metrics/MetricManagerUtils.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public static List<String> getUpdatedMetricNames() {
3232
updatedMetricNames.add("mqobject_get_average_destructive_mqget_persistent_message_size_bytes");
3333
updatedMetricNames.add("mqobject_get_average_destructive_mqget_non_persistent_message_size_bytes");
3434
updatedMetricNames.add("mqobject_get_average_destructive_mqget_persistent_and_non_persistent_message_size_bytes");
35+
updatedMetricNames.add("mqobject_queue_queue_fill_percentage");
3536
return updatedMetricNames;
3637
}
3738

@@ -57,6 +58,10 @@ public static List<String> getMetricsNamesUsedToUpdate(String updatedMetricName)
5758
listWithNames.add("mqobject_get_destructive_mqget_persistent_message_count_totalmessages");
5859
listWithNames.add("mqobject_get_destructive_mqget_non_persistent_message_count_totalmessages");
5960
break;
61+
case "mqobject_queue_queue_fill_percentage":
62+
listWithNames.add("mqobject_queue_queue_depth_messages");
63+
listWithNames.add("mqobject_queue_queue_max_depth_messages");
64+
break;
6065
default:
6166
break;
6267
}
@@ -74,6 +79,8 @@ public static Function<List<Double>, Double> getConversionFunction(String update
7479
return MetricManagerUtils::division;
7580
case "mqobject_get_average_destructive_mqget_persistent_and_non_persistent_message_size_bytes":
7681
return MetricManagerUtils::averageSum;
82+
case "mqobject_get_queue_queue_fill_percentage":
83+
return MetricManagerUtils::divisionInPercentage;
7784
default:
7885
return MetricManagerUtils::defaultConversion;
7986
}
@@ -91,6 +98,12 @@ private static Double division(List<Double> params) {
9198
return params.get(1) == 0.0 ? 0.0 : params.get(0) / params.get(1);
9299
}
93100

101+
private static Double divisionInPercentage(List<Double> params) {
102+
Objects.requireNonNull(params);
103+
if (params.size() != 2) throw new IllegalArgumentException();
104+
return params.get(1) == 0.0 ? 0.0 : params.get(0) / (params.get(1) * 100);
105+
}
106+
94107
private static Double defaultConversion(List<Double> params) {
95108
return Objects.requireNonNull(params).get(0);
96109
}

src/main/java/ru/cinimex/exporter/prometheus/metrics/MetricsReference.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@ public static Map<String, Metric> getAdditionalMqObjectMetricsReference() {
174174
metrics.put("destructive MQGET persistent average message byte count", new Metric("mqobject_get_average_destructive_mqget_persistent_message_size_bytes", Metric.Type.SIMPLE_GAUGE));
175175
metrics.put("destructive MQGET non-persistent average message byte count", new Metric("mqobject_get_average_destructive_mqget_non_persistent_message_size_bytes", Metric.Type.SIMPLE_GAUGE));
176176
metrics.put("destructive MQGET persistent and non-persistent average message byte count", new Metric("mqobject_get_average_destructive_mqget_persistent_and_non_persistent_message_size_bytes", Metric.Type.SIMPLE_GAUGE));
177+
metrics.put("queue fill percentage", new Metric("mqobject_queue_queue_fill_percentage", Metric.Type.SIMPLE_GAUGE));
177178
return metrics;
178179
}
179180

src/test/java/ru/cinimex/exporter/prometheus/metrics/MetricManagerUtilsTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ static void initMetrics() {
1616
updatedMetricNames.add("mqobject_get_average_destructive_mqget_persistent_message_size_bytes");
1717
updatedMetricNames.add("mqobject_get_average_destructive_mqget_non_persistent_message_size_bytes");
1818
updatedMetricNames.add("mqobject_get_average_destructive_mqget_persistent_and_non_persistent_message_size_bytes");
19+
updatedMetricNames.add("mqobject_queue_queue_fill_percentage");
1920
}
2021

2122
@Test
@@ -44,5 +45,11 @@ void getMetricsNamesUsedToUpdate() {
4445
listWithNames.add("mqobject_get_destructive_mqget_non_persistent_message_count_totalmessages");
4546

4647
assertEquals(listWithNames, MetricManagerUtils.getMetricsNamesUsedToUpdate(updatedMetricNames.get(2)));
48+
49+
listWithNames = new ArrayList<>();
50+
listWithNames.add("mqobject_queue_queue_depth_messages");
51+
listWithNames.add("mqobject_queue_queue_max_depth_messages");
52+
53+
assertEquals(listWithNames, MetricManagerUtils.getMetricsNamesUsedToUpdate(updatedMetricNames.get(3)));
4754
}
4855
}

0 commit comments

Comments
 (0)