76 lines
2.7 KiB
Java
76 lines
2.7 KiB
Java
|
|
package com.htopweb.system;
|
|
|
|
import com.htopweb.system.linux.*;
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
import reactor.core.publisher.Mono;
|
|
import reactor.core.scheduler.Schedulers;
|
|
|
|
import java.util.List;
|
|
|
|
@RestController
|
|
@RequestMapping("/api/system")
|
|
public class SystemMetricsController {
|
|
|
|
private final SystemMetricsService _systemMetricsService;
|
|
private final LinuxDetailsService _linuxDetailsService;
|
|
private final CpuDetailsService _cpuDetailsService;
|
|
private final LinuxMemoryService _linuxMemoryService;
|
|
private final LinuxDiskService _linuxDiskService;
|
|
private final LinuxNetworkService _linuxNetworkService;
|
|
|
|
public SystemMetricsController(
|
|
SystemMetricsService systemMetricsService,
|
|
LinuxDetailsService linuxDetailsService,
|
|
CpuDetailsService cpuDetailsService,
|
|
LinuxMemoryService linuxMemoryService,
|
|
LinuxDiskService linuxDiskService,
|
|
LinuxNetworkService linuxNetworkService
|
|
) {
|
|
_systemMetricsService = systemMetricsService;
|
|
_linuxDetailsService = linuxDetailsService;
|
|
_cpuDetailsService = cpuDetailsService;
|
|
_linuxMemoryService = linuxMemoryService;
|
|
_linuxDiskService = linuxDiskService;
|
|
_linuxNetworkService = linuxNetworkService;
|
|
}
|
|
|
|
@GetMapping("/metrics")
|
|
public Mono<SystemMetricsResponse> getMetrics() {
|
|
return Mono.fromCallable(_systemMetricsService::getMetrics)
|
|
.subscribeOn(Schedulers.boundedElastic());
|
|
}
|
|
|
|
@GetMapping("/linux")
|
|
public Mono<LinuxDetailsResponse> getLinuxDetails() {
|
|
return Mono.fromCallable(_linuxDetailsService::getDetails)
|
|
.subscribeOn(Schedulers.boundedElastic());
|
|
}
|
|
|
|
@GetMapping("/cpu")
|
|
public Mono<CpuDetailsResponse> getCpuDetails() {
|
|
return Mono.fromCallable(_cpuDetailsService::getDetails)
|
|
.subscribeOn(Schedulers.boundedElastic());
|
|
}
|
|
|
|
@GetMapping("/linux/memory")
|
|
public Mono<LinuxMemoryResponse> getLinuxMemory() {
|
|
return Mono.fromCallable(_linuxMemoryService::getDetails)
|
|
.subscribeOn(Schedulers.boundedElastic());
|
|
}
|
|
|
|
@GetMapping("/linux/disks")
|
|
public Mono<List<LinuxDiskResponse>> getLinuxDisks() {
|
|
return Mono.fromCallable(_linuxDiskService::getDisks)
|
|
.subscribeOn(Schedulers.boundedElastic());
|
|
}
|
|
|
|
@GetMapping("/linux/network")
|
|
public Mono<List<LinuxNetworkResponse>> getLinuxNetwork() {
|
|
return Mono.fromCallable(_linuxNetworkService::getInterfaces)
|
|
.subscribeOn(Schedulers.boundedElastic());
|
|
}
|
|
}
|