fix: metrics
This commit is contained in:
@@ -31,13 +31,8 @@ class Metrics extends Component
|
|||||||
public function loadData()
|
public function loadData()
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$metrics = $this->resource->getMetrics($this->interval);
|
$cpuMetrics = $this->resource->getCpuMetrics($this->interval);
|
||||||
$cpuMetrics = collect($metrics)->map(function ($metric) {
|
$memoryMetrics = $this->resource->getMemoryMetrics($this->interval);
|
||||||
return [$metric[0], $metric[1]];
|
|
||||||
});
|
|
||||||
$memoryMetrics = collect($metrics)->map(function ($metric) {
|
|
||||||
return [$metric[0], $metric[2]];
|
|
||||||
});
|
|
||||||
$this->dispatch("refreshChartData-{$this->chartId}-cpu", [
|
$this->dispatch("refreshChartData-{$this->chartId}-cpu", [
|
||||||
'seriesData' => $cpuMetrics,
|
'seriesData' => $cpuMetrics,
|
||||||
]);
|
]);
|
||||||
|
@@ -1400,13 +1400,21 @@ class Application extends BaseModel
|
|||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getMetrics(int $mins = 5)
|
public function getCpuMetrics(int $mins = 5)
|
||||||
{
|
{
|
||||||
$server = $this->destination->server;
|
$server = $this->destination->server;
|
||||||
$container_name = $this->uuid;
|
$container_name = $this->uuid;
|
||||||
if ($server->isMetricsEnabled()) {
|
if ($server->isMetricsEnabled()) {
|
||||||
$from = now()->subMinutes($mins)->toIso8601ZuluString();
|
$from = now()->subMinutes($mins)->toIso8601ZuluString();
|
||||||
$metrics = instant_remote_process(["docker exec coolify-sentinel sh -c 'curl -H \"Authorization: Bearer {$server->settings->sentinel_token}\" http://localhost:8888/api/container/{$container_name}/metrics/history?from=$from'"], $server, false);
|
if (isDev() && $server->id === 0) {
|
||||||
|
$process = Process::run("curl -H \"Authorization: Bearer {$this->settings->sentinel_token}\" http://host.docker.internal:8888/api/container/{$container_name}/cpu/history?from=$from");
|
||||||
|
if ($process->failed()) {
|
||||||
|
throw new \Exception($process->errorOutput());
|
||||||
|
}
|
||||||
|
$metrics = $process->output();
|
||||||
|
} else {
|
||||||
|
$metrics = instant_remote_process(["docker exec coolify-sentinel sh -c 'curl -H \"Authorization: Bearer {$server->settings->sentinel_token}\" http://localhost:8888/api/container/{$container_name}/cpu/history?from=$from'"], $server, false);
|
||||||
|
}
|
||||||
if (str($metrics)->contains('error')) {
|
if (str($metrics)->contains('error')) {
|
||||||
$error = json_decode($metrics, true);
|
$error = json_decode($metrics, true);
|
||||||
$error = data_get($error, 'error', 'Something is not okay, are you okay?');
|
$error = data_get($error, 'error', 'Something is not okay, are you okay?');
|
||||||
@@ -1415,16 +1423,41 @@ class Application extends BaseModel
|
|||||||
}
|
}
|
||||||
throw new \Exception($error);
|
throw new \Exception($error);
|
||||||
}
|
}
|
||||||
$metrics = str($metrics)->explode("\n")->skip(1)->all();
|
$metrics = json_decode($metrics, true);
|
||||||
$parsedCollection = collect($metrics)->flatMap(function ($item) {
|
$parsedCollection = collect($metrics)->map(function ($metric) {
|
||||||
return collect(explode("\n", trim($item)))->map(function ($line) {
|
return [(int)$metric['time'], (float)$metric['percent']];
|
||||||
[$time, $cpu_usage_percent, $memory_usage, $memory_usage_percent] = explode(',', trim($line));
|
|
||||||
$cpu_usage_percent = number_format($cpu_usage_percent, 2);
|
|
||||||
|
|
||||||
return [(int) $time, (float) $cpu_usage_percent, (int) $memory_usage];
|
|
||||||
});
|
});
|
||||||
|
return $parsedCollection->toArray();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public function getMemoryMetrics(int $mins = 5)
|
||||||
|
{
|
||||||
|
$server = $this->destination->server;
|
||||||
|
$container_name = $this->uuid;
|
||||||
|
if ($server->isMetricsEnabled()) {
|
||||||
|
$from = now()->subMinutes($mins)->toIso8601ZuluString();
|
||||||
|
if (isDev() && $server->id === 0) {
|
||||||
|
$process = Process::run("curl -H \"Authorization: Bearer {$this->settings->sentinel_token}\" http://host.docker.internal:8888/api/container/{$container_name}/memory/history?from=$from");
|
||||||
|
if ($process->failed()) {
|
||||||
|
throw new \Exception($process->errorOutput());
|
||||||
|
}
|
||||||
|
$metrics = $process->output();
|
||||||
|
} else {
|
||||||
|
$metrics = instant_remote_process(["docker exec coolify-sentinel sh -c 'curl -H \"Authorization: Bearer {$server->settings->sentinel_token}\" http://localhost:8888/api/container/{$container_name}/memory/history?from=$from'"], $server, false);
|
||||||
|
}
|
||||||
|
if (str($metrics)->contains('error')) {
|
||||||
|
$error = json_decode($metrics, true);
|
||||||
|
$error = data_get($error, 'error', 'Something is not okay, are you okay?');
|
||||||
|
if ($error == 'Unauthorized') {
|
||||||
|
$error = 'Unauthorized, please check your metrics token or restart Sentinel to set a new token.';
|
||||||
|
}
|
||||||
|
throw new \Exception($error);
|
||||||
|
}
|
||||||
|
$metrics = json_decode($metrics, true);
|
||||||
|
$parsedCollection = collect($metrics)->map(function ($metric) {
|
||||||
|
logger($metric);
|
||||||
|
return [(int)$metric['time'], (float)$metric['used']];
|
||||||
});
|
});
|
||||||
|
|
||||||
return $parsedCollection->toArray();
|
return $parsedCollection->toArray();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1459,7 +1492,8 @@ class Application extends BaseModel
|
|||||||
|
|
||||||
return $config;
|
return $config;
|
||||||
}
|
}
|
||||||
public function setConfig($config) {
|
public function setConfig($config)
|
||||||
|
{
|
||||||
|
|
||||||
$config = $config;
|
$config = $config;
|
||||||
$validator = Validator::make(['config' => $config], [
|
$validator = Validator::make(['config' => $config], [
|
||||||
|
@@ -154,7 +154,6 @@ Route::group([
|
|||||||
$data = request()->all();
|
$data = request()->all();
|
||||||
|
|
||||||
PushServerUpdateJob::dispatch($server, $data);
|
PushServerUpdateJob::dispatch($server, $data);
|
||||||
logger('hello');
|
|
||||||
return response()->json(['message' => 'ok'], 200);
|
return response()->json(['message' => 'ok'], 200);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Reference in New Issue
Block a user