✨ Add Disk Usage
This commit is contained in:
parent
eebb2714df
commit
eacb11d6dd
@ -1,9 +1,12 @@
|
||||
package dev.dinauer.monitoring.nodes.client;
|
||||
|
||||
import dev.dinauer.service.PodService;
|
||||
import io.fabric8.kubernetes.api.model.Node;
|
||||
import io.fabric8.kubernetes.api.model.Pod;
|
||||
import jakarta.enterprise.context.ApplicationScoped;
|
||||
import jakarta.inject.Inject;
|
||||
import org.eclipse.microprofile.config.ConfigProvider;
|
||||
import org.eclipse.microprofile.config.inject.ConfigProperty;
|
||||
import org.jboss.logging.Logger;
|
||||
|
||||
import java.io.IOException;
|
||||
@ -20,7 +23,6 @@ import java.util.Map;
|
||||
public class NodeDiskService
|
||||
{
|
||||
private static final Map<String, String> label = Map.ofEntries(Map.entry("dev.dinauer.kubooboo/component", "node-monitor"));
|
||||
private static final Integer PORT = 8080;
|
||||
|
||||
@Inject
|
||||
Logger LOG;
|
||||
@ -33,23 +35,44 @@ public class NodeDiskService
|
||||
Map<String, NodeDiskMetrics> result = new HashMap<>();
|
||||
List<Pod> pods = podService.findByLabels(label);
|
||||
for (Pod pod : pods)
|
||||
{
|
||||
Map.Entry<String, NodeDiskMetrics> entry = getDiskMetricsForPod(pod);
|
||||
if (entry != null)
|
||||
{
|
||||
result.put(entry.getKey(), entry.getValue());
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private Map.Entry<String, NodeDiskMetrics> getDiskMetricsForPod(Pod pod)
|
||||
{
|
||||
String nodeName = pod.getSpec().getNodeName();
|
||||
String ip = pod.getStatus().getPodIP();
|
||||
LOG.infof("Collect disk monitoring for node %s", nodeName);
|
||||
String port = "8080";
|
||||
try (HttpClient client = HttpClient.newBuilder().build())
|
||||
{
|
||||
HttpRequest request = HttpRequest.newBuilder().uri(new URI(String.format("http://%s:%s", ip, PORT))).GET().build();
|
||||
LOG.infof("Collect disk monitoring for node %s", nodeName);
|
||||
HttpRequest request = HttpRequest.newBuilder().uri(getURI(ip, port)).GET().build();
|
||||
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
|
||||
NodeDiskMetrics metrics = parse(response.body());
|
||||
result.put(nodeName, metrics);
|
||||
return Map.entry(nodeName, metrics);
|
||||
}
|
||||
catch (URISyntaxException | IOException | InterruptedException e)
|
||||
{
|
||||
LOG.errorf("Failed to collect disk monitoring for node %s (Pod IP: %s)", nodeName, ip);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
return result;
|
||||
|
||||
private URI getURI(String ip, String port) throws URISyntaxException
|
||||
{
|
||||
String profile = ConfigProvider.getConfig().getValue("quarkus.profile", String.class);
|
||||
if ("prod".equals(profile))
|
||||
{
|
||||
return new URI(String.format("http://%s:%s", ip, port));
|
||||
}
|
||||
return new URI("http://localhost:8080");
|
||||
}
|
||||
|
||||
private NodeDiskMetrics parse(String input)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user