fix: metrics for dbs
This commit is contained in:
@@ -266,33 +266,48 @@ class StandaloneClickhouse extends BaseModel
|
|||||||
return $this->morphMany(ScheduledDatabaseBackup::class, 'database');
|
return $this->morphMany(ScheduledDatabaseBackup::class, 'database');
|
||||||
}
|
}
|
||||||
|
|
||||||
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()) {
|
$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}/cpu/history?from=$from'"], $server, false);
|
||||||
$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 (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?');
|
if ($error == 'Unauthorized') {
|
||||||
if ($error == 'Unauthorized') {
|
$error = 'Unauthorized, please check your metrics token or restart Sentinel to set a new token.';
|
||||||
$error = 'Unauthorized, please check your metrics token or restart Sentinel to set a new token.';
|
|
||||||
}
|
|
||||||
throw new \Exception($error);
|
|
||||||
}
|
}
|
||||||
$metrics = str($metrics)->explode("\n")->skip(1)->all();
|
throw new \Exception($error);
|
||||||
$parsedCollection = collect($metrics)->flatMap(function ($item) {
|
|
||||||
return collect(explode("\n", trim($item)))->map(function ($line) {
|
|
||||||
[$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();
|
|
||||||
}
|
}
|
||||||
|
$metrics = json_decode($metrics, true);
|
||||||
|
$parsedCollection = collect($metrics)->map(function ($metric) {
|
||||||
|
return [(int) $metric['time'], (float) $metric['percent']];
|
||||||
|
});
|
||||||
|
|
||||||
|
return $parsedCollection->toArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getMemoryMetrics(int $mins = 5)
|
||||||
|
{
|
||||||
|
$server = $this->destination->server;
|
||||||
|
$container_name = $this->uuid;
|
||||||
|
$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}/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) {
|
||||||
|
return [(int) $metric['time'], (float) $metric['used']];
|
||||||
|
});
|
||||||
|
|
||||||
|
return $parsedCollection->toArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function isBackupSolutionAvailable()
|
public function isBackupSolutionAvailable()
|
||||||
|
@@ -266,33 +266,48 @@ class StandaloneDragonfly extends BaseModel
|
|||||||
return $this->morphMany(ScheduledDatabaseBackup::class, 'database');
|
return $this->morphMany(ScheduledDatabaseBackup::class, 'database');
|
||||||
}
|
}
|
||||||
|
|
||||||
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()) {
|
$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}/cpu/history?from=$from'"], $server, false);
|
||||||
$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 (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?');
|
if ($error == 'Unauthorized') {
|
||||||
if ($error == 'Unauthorized') {
|
$error = 'Unauthorized, please check your metrics token or restart Sentinel to set a new token.';
|
||||||
$error = 'Unauthorized, please check your metrics token or restart Sentinel to set a new token.';
|
|
||||||
}
|
|
||||||
throw new \Exception($error);
|
|
||||||
}
|
}
|
||||||
$metrics = str($metrics)->explode("\n")->skip(1)->all();
|
throw new \Exception($error);
|
||||||
$parsedCollection = collect($metrics)->flatMap(function ($item) {
|
|
||||||
return collect(explode("\n", trim($item)))->map(function ($line) {
|
|
||||||
[$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();
|
|
||||||
}
|
}
|
||||||
|
$metrics = json_decode($metrics, true);
|
||||||
|
$parsedCollection = collect($metrics)->map(function ($metric) {
|
||||||
|
return [(int) $metric['time'], (float) $metric['percent']];
|
||||||
|
});
|
||||||
|
|
||||||
|
return $parsedCollection->toArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getMemoryMetrics(int $mins = 5)
|
||||||
|
{
|
||||||
|
$server = $this->destination->server;
|
||||||
|
$container_name = $this->uuid;
|
||||||
|
$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}/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) {
|
||||||
|
return [(int) $metric['time'], (float) $metric['used']];
|
||||||
|
});
|
||||||
|
|
||||||
|
return $parsedCollection->toArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function isBackupSolutionAvailable()
|
public function isBackupSolutionAvailable()
|
||||||
|
@@ -266,33 +266,48 @@ class StandaloneKeydb extends BaseModel
|
|||||||
return $this->morphMany(ScheduledDatabaseBackup::class, 'database');
|
return $this->morphMany(ScheduledDatabaseBackup::class, 'database');
|
||||||
}
|
}
|
||||||
|
|
||||||
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()) {
|
$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}/cpu/history?from=$from'"], $server, false);
|
||||||
$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 (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?');
|
if ($error == 'Unauthorized') {
|
||||||
if ($error == 'Unauthorized') {
|
$error = 'Unauthorized, please check your metrics token or restart Sentinel to set a new token.';
|
||||||
$error = 'Unauthorized, please check your metrics token or restart Sentinel to set a new token.';
|
|
||||||
}
|
|
||||||
throw new \Exception($error);
|
|
||||||
}
|
}
|
||||||
$metrics = str($metrics)->explode("\n")->skip(1)->all();
|
throw new \Exception($error);
|
||||||
$parsedCollection = collect($metrics)->flatMap(function ($item) {
|
|
||||||
return collect(explode("\n", trim($item)))->map(function ($line) {
|
|
||||||
[$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();
|
|
||||||
}
|
}
|
||||||
|
$metrics = json_decode($metrics, true);
|
||||||
|
$parsedCollection = collect($metrics)->map(function ($metric) {
|
||||||
|
return [(int) $metric['time'], (float) $metric['percent']];
|
||||||
|
});
|
||||||
|
|
||||||
|
return $parsedCollection->toArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getMemoryMetrics(int $mins = 5)
|
||||||
|
{
|
||||||
|
$server = $this->destination->server;
|
||||||
|
$container_name = $this->uuid;
|
||||||
|
$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}/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) {
|
||||||
|
return [(int) $metric['time'], (float) $metric['used']];
|
||||||
|
});
|
||||||
|
|
||||||
|
return $parsedCollection->toArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function isBackupSolutionAvailable()
|
public function isBackupSolutionAvailable()
|
||||||
|
@@ -266,33 +266,48 @@ class StandaloneMariadb extends BaseModel
|
|||||||
return $this->morphMany(ScheduledDatabaseBackup::class, 'database');
|
return $this->morphMany(ScheduledDatabaseBackup::class, 'database');
|
||||||
}
|
}
|
||||||
|
|
||||||
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()) {
|
$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}/cpu/history?from=$from'"], $server, false);
|
||||||
$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 (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?');
|
if ($error == 'Unauthorized') {
|
||||||
if ($error == 'Unauthorized') {
|
$error = 'Unauthorized, please check your metrics token or restart Sentinel to set a new token.';
|
||||||
$error = 'Unauthorized, please check your metrics token or restart Sentinel to set a new token.';
|
|
||||||
}
|
|
||||||
throw new \Exception($error);
|
|
||||||
}
|
}
|
||||||
$metrics = str($metrics)->explode("\n")->skip(1)->all();
|
throw new \Exception($error);
|
||||||
$parsedCollection = collect($metrics)->flatMap(function ($item) {
|
|
||||||
return collect(explode("\n", trim($item)))->map(function ($line) {
|
|
||||||
[$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();
|
|
||||||
}
|
}
|
||||||
|
$metrics = json_decode($metrics, true);
|
||||||
|
$parsedCollection = collect($metrics)->map(function ($metric) {
|
||||||
|
return [(int) $metric['time'], (float) $metric['percent']];
|
||||||
|
});
|
||||||
|
|
||||||
|
return $parsedCollection->toArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getMemoryMetrics(int $mins = 5)
|
||||||
|
{
|
||||||
|
$server = $this->destination->server;
|
||||||
|
$container_name = $this->uuid;
|
||||||
|
$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}/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) {
|
||||||
|
return [(int) $metric['time'], (float) $metric['used']];
|
||||||
|
});
|
||||||
|
|
||||||
|
return $parsedCollection->toArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function isBackupSolutionAvailable()
|
public function isBackupSolutionAvailable()
|
||||||
|
@@ -286,33 +286,48 @@ class StandaloneMongodb extends BaseModel
|
|||||||
return $this->morphMany(ScheduledDatabaseBackup::class, 'database');
|
return $this->morphMany(ScheduledDatabaseBackup::class, 'database');
|
||||||
}
|
}
|
||||||
|
|
||||||
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()) {
|
$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}/cpu/history?from=$from'"], $server, false);
|
||||||
$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 (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?');
|
if ($error == 'Unauthorized') {
|
||||||
if ($error == 'Unauthorized') {
|
$error = 'Unauthorized, please check your metrics token or restart Sentinel to set a new token.';
|
||||||
$error = 'Unauthorized, please check your metrics token or restart Sentinel to set a new token.';
|
|
||||||
}
|
|
||||||
throw new \Exception($error);
|
|
||||||
}
|
}
|
||||||
$metrics = str($metrics)->explode("\n")->skip(1)->all();
|
throw new \Exception($error);
|
||||||
$parsedCollection = collect($metrics)->flatMap(function ($item) {
|
|
||||||
return collect(explode("\n", trim($item)))->map(function ($line) {
|
|
||||||
[$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();
|
|
||||||
}
|
}
|
||||||
|
$metrics = json_decode($metrics, true);
|
||||||
|
$parsedCollection = collect($metrics)->map(function ($metric) {
|
||||||
|
return [(int) $metric['time'], (float) $metric['percent']];
|
||||||
|
});
|
||||||
|
|
||||||
|
return $parsedCollection->toArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getMemoryMetrics(int $mins = 5)
|
||||||
|
{
|
||||||
|
$server = $this->destination->server;
|
||||||
|
$container_name = $this->uuid;
|
||||||
|
$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}/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) {
|
||||||
|
return [(int) $metric['time'], (float) $metric['used']];
|
||||||
|
});
|
||||||
|
|
||||||
|
return $parsedCollection->toArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function isBackupSolutionAvailable()
|
public function isBackupSolutionAvailable()
|
||||||
|
@@ -267,33 +267,48 @@ class StandaloneMysql extends BaseModel
|
|||||||
return $this->morphMany(ScheduledDatabaseBackup::class, 'database');
|
return $this->morphMany(ScheduledDatabaseBackup::class, 'database');
|
||||||
}
|
}
|
||||||
|
|
||||||
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()) {
|
$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}/cpu/history?from=$from'"], $server, false);
|
||||||
$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 (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?');
|
if ($error == 'Unauthorized') {
|
||||||
if ($error == 'Unauthorized') {
|
$error = 'Unauthorized, please check your metrics token or restart Sentinel to set a new token.';
|
||||||
$error = 'Unauthorized, please check your metrics token or restart Sentinel to set a new token.';
|
|
||||||
}
|
|
||||||
throw new \Exception($error);
|
|
||||||
}
|
}
|
||||||
$metrics = str($metrics)->explode("\n")->skip(1)->all();
|
throw new \Exception($error);
|
||||||
$parsedCollection = collect($metrics)->flatMap(function ($item) {
|
|
||||||
return collect(explode("\n", trim($item)))->map(function ($line) {
|
|
||||||
[$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();
|
|
||||||
}
|
}
|
||||||
|
$metrics = json_decode($metrics, true);
|
||||||
|
$parsedCollection = collect($metrics)->map(function ($metric) {
|
||||||
|
return [(int) $metric['time'], (float) $metric['percent']];
|
||||||
|
});
|
||||||
|
|
||||||
|
return $parsedCollection->toArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getMemoryMetrics(int $mins = 5)
|
||||||
|
{
|
||||||
|
$server = $this->destination->server;
|
||||||
|
$container_name = $this->uuid;
|
||||||
|
$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}/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) {
|
||||||
|
return [(int) $metric['time'], (float) $metric['used']];
|
||||||
|
});
|
||||||
|
|
||||||
|
return $parsedCollection->toArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function isBackupSolutionAvailable()
|
public function isBackupSolutionAvailable()
|
||||||
|
@@ -268,37 +268,52 @@ class StandalonePostgresql extends BaseModel
|
|||||||
return $this->morphMany(ScheduledDatabaseBackup::class, 'database');
|
return $this->morphMany(ScheduledDatabaseBackup::class, 'database');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getMetrics(int $mins = 5)
|
|
||||||
{
|
|
||||||
$server = $this->destination->server;
|
|
||||||
$container_name = $this->uuid;
|
|
||||||
if ($server->isMetricsEnabled()) {
|
|
||||||
$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 (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 = str($metrics)->explode("\n")->skip(1)->all();
|
|
||||||
$parsedCollection = collect($metrics)->flatMap(function ($item) {
|
|
||||||
return collect(explode("\n", trim($item)))->map(function ($line) {
|
|
||||||
[$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 isBackupSolutionAvailable()
|
public function isBackupSolutionAvailable()
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getCpuMetrics(int $mins = 5)
|
||||||
|
{
|
||||||
|
$server = $this->destination->server;
|
||||||
|
$container_name = $this->uuid;
|
||||||
|
$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}/cpu/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) {
|
||||||
|
return [(int) $metric['time'], (float) $metric['percent']];
|
||||||
|
});
|
||||||
|
|
||||||
|
return $parsedCollection->toArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getMemoryMetrics(int $mins = 5)
|
||||||
|
{
|
||||||
|
$server = $this->destination->server;
|
||||||
|
$container_name = $this->uuid;
|
||||||
|
$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}/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) {
|
||||||
|
return [(int) $metric['time'], (float) $metric['used']];
|
||||||
|
});
|
||||||
|
|
||||||
|
return $parsedCollection->toArray();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -277,33 +277,48 @@ class StandaloneRedis extends BaseModel
|
|||||||
return $this->morphMany(ScheduledDatabaseBackup::class, 'database');
|
return $this->morphMany(ScheduledDatabaseBackup::class, 'database');
|
||||||
}
|
}
|
||||||
|
|
||||||
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()) {
|
$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}/cpu/history?from=$from'"], $server, false);
|
||||||
$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 (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?');
|
if ($error == 'Unauthorized') {
|
||||||
if ($error == 'Unauthorized') {
|
$error = 'Unauthorized, please check your metrics token or restart Sentinel to set a new token.';
|
||||||
$error = 'Unauthorized, please check your metrics token or restart Sentinel to set a new token.';
|
|
||||||
}
|
|
||||||
throw new \Exception($error);
|
|
||||||
}
|
}
|
||||||
$metrics = str($metrics)->explode("\n")->skip(1)->all();
|
throw new \Exception($error);
|
||||||
$parsedCollection = collect($metrics)->flatMap(function ($item) {
|
|
||||||
return collect(explode("\n", trim($item)))->map(function ($line) {
|
|
||||||
[$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();
|
|
||||||
}
|
}
|
||||||
|
$metrics = json_decode($metrics, true);
|
||||||
|
$parsedCollection = collect($metrics)->map(function ($metric) {
|
||||||
|
return [(int) $metric['time'], (float) $metric['percent']];
|
||||||
|
});
|
||||||
|
|
||||||
|
return $parsedCollection->toArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getMemoryMetrics(int $mins = 5)
|
||||||
|
{
|
||||||
|
$server = $this->destination->server;
|
||||||
|
$container_name = $this->uuid;
|
||||||
|
$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}/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) {
|
||||||
|
return [(int) $metric['time'], (float) $metric['used']];
|
||||||
|
});
|
||||||
|
|
||||||
|
return $parsedCollection->toArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function isBackupSolutionAvailable()
|
public function isBackupSolutionAvailable()
|
||||||
|
@@ -5,8 +5,8 @@
|
|||||||
<div class="pb-4">Basic metrics for your container.</div>
|
<div class="pb-4">Basic metrics for your container.</div>
|
||||||
@if ($resource->getMorphClass() === 'App\Models\Application' && $resource->build_pack === 'dockercompose')
|
@if ($resource->getMorphClass() === 'App\Models\Application' && $resource->build_pack === 'dockercompose')
|
||||||
<div class="alert alert-warning">Metrics are not available for Docker Compose applications yet!</div>
|
<div class="alert alert-warning">Metrics are not available for Docker Compose applications yet!</div>
|
||||||
@elseif(!$resource->destination->server->isSentinelEnabled())
|
@elseif(!$resource->destination->server->isMetricsEnabled())
|
||||||
<div class="alert alert-warning">Metrics are only available for servers with Sentinel enabled!</div>
|
<div class="alert alert-warning">Metrics are only available for servers with Sentinel & Metrics enabled!</div>
|
||||||
<div> Go to <a class="underline dark:text-white"
|
<div> Go to <a class="underline dark:text-white"
|
||||||
href="{{ route('server.show', $resource->destination->server->uuid) }}">Server settings</a> to
|
href="{{ route('server.show', $resource->destination->server->uuid) }}">Server settings</a> to
|
||||||
enable
|
enable
|
||||||
|
Reference in New Issue
Block a user