refactor: server status job and docker cleanup job
This commit is contained in:
parent
b8e95b2099
commit
82a5b4c55d
@ -6,6 +6,7 @@
|
|||||||
use App\Jobs\CleanupInstanceStuffsJob;
|
use App\Jobs\CleanupInstanceStuffsJob;
|
||||||
use App\Jobs\ContainerStatusJob;
|
use App\Jobs\ContainerStatusJob;
|
||||||
use App\Jobs\DatabaseBackupJob;
|
use App\Jobs\DatabaseBackupJob;
|
||||||
|
use App\Jobs\DockerCleanupJob;
|
||||||
use App\Jobs\PullCoolifyImageJob;
|
use App\Jobs\PullCoolifyImageJob;
|
||||||
use App\Jobs\PullHelperImageJob;
|
use App\Jobs\PullHelperImageJob;
|
||||||
use App\Jobs\PullSentinelImageJob;
|
use App\Jobs\PullSentinelImageJob;
|
||||||
@ -87,6 +88,7 @@ private function check_resources($schedule)
|
|||||||
}
|
}
|
||||||
foreach ($servers as $server) {
|
foreach ($servers as $server) {
|
||||||
$schedule->job(new ServerStatusJob($server))->everyMinute()->onOneServer();
|
$schedule->job(new ServerStatusJob($server))->everyMinute()->onOneServer();
|
||||||
|
$schedule->job(new DockerCleanupJob($server))->everyTenMinutes()->onOneServer();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,30 +41,25 @@ public function handle(): void
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ($this->server->is_force_cleanup_enabled) {
|
if ($this->server->is_force_cleanup_enabled) {
|
||||||
CleanupDocker::run($this->server);
|
CleanupDocker::run(server: $this->server, force: true);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->usageBefore = $this->server->getDiskUsage();
|
$this->usageBefore = $this->server->getDiskUsage();
|
||||||
ray('Usage before: '.$this->usageBefore);
|
|
||||||
if ($this->usageBefore >= $this->server->settings->cleanup_after_percentage) {
|
if ($this->usageBefore >= $this->server->settings->cleanup_after_percentage) {
|
||||||
ray('Cleaning up '.$this->server->name);
|
CleanupDocker::run(server: $this->server, force: false);
|
||||||
CleanupDocker::run($this->server);
|
|
||||||
$usageAfter = $this->server->getDiskUsage();
|
$usageAfter = $this->server->getDiskUsage();
|
||||||
if ($usageAfter < $this->usageBefore) {
|
if ($usageAfter < $this->usageBefore) {
|
||||||
$this->server->team?->notify(new DockerCleanup($this->server, 'Saved '.($this->usageBefore - $usageAfter).'% disk space.'));
|
$this->server->team?->notify(new DockerCleanup($this->server, 'Saved '.($this->usageBefore - $usageAfter).'% disk space.'));
|
||||||
// ray('Saved ' . ($this->usageBefore - $usageAfter) . '% disk space on ' . $this->server->name);
|
|
||||||
// send_internal_notification('DockerCleanupJob done: Saved ' . ($this->usageBefore - $usageAfter) . '% disk space on ' . $this->server->name);
|
|
||||||
Log::info('DockerCleanupJob done: Saved '.($this->usageBefore - $usageAfter).'% disk space on '.$this->server->name);
|
Log::info('DockerCleanupJob done: Saved '.($this->usageBefore - $usageAfter).'% disk space on '.$this->server->name);
|
||||||
} else {
|
} else {
|
||||||
Log::info('DockerCleanupJob failed to save disk space on '.$this->server->name);
|
Log::info('DockerCleanupJob failed to save disk space on '.$this->server->name);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ray('No need to clean up '.$this->server->name);
|
|
||||||
Log::info('No need to clean up '.$this->server->name);
|
Log::info('No need to clean up '.$this->server->name);
|
||||||
}
|
}
|
||||||
} catch (\Throwable $e) {
|
} catch (\Throwable $e) {
|
||||||
// send_internal_notification('DockerCleanupJob failed with: '.$e->getMessage());
|
|
||||||
ray($e->getMessage());
|
ray($e->getMessage());
|
||||||
throw $e;
|
throw $e;
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
namespace App\Jobs;
|
namespace App\Jobs;
|
||||||
|
|
||||||
use App\Models\Server;
|
use App\Models\Server;
|
||||||
use App\Notifications\Server\HighDiskUsage;
|
|
||||||
use Illuminate\Bus\Queueable;
|
use Illuminate\Bus\Queueable;
|
||||||
use Illuminate\Contracts\Queue\ShouldBeEncrypted;
|
use Illuminate\Contracts\Queue\ShouldBeEncrypted;
|
||||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||||
@ -44,7 +43,6 @@ public function handle()
|
|||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
if ($this->server->isFunctional()) {
|
if ($this->server->isFunctional()) {
|
||||||
$this->cleanup();
|
|
||||||
$this->remove_unnecessary_coolify_yaml();
|
$this->remove_unnecessary_coolify_yaml();
|
||||||
if ($this->server->isSentinelEnabled()) {
|
if ($this->server->isSentinelEnabled()) {
|
||||||
$this->server->checkSentinel();
|
$this->server->checkSentinel();
|
||||||
@ -56,45 +54,7 @@ public function handle()
|
|||||||
|
|
||||||
return handleError($e);
|
return handleError($e);
|
||||||
}
|
}
|
||||||
try {
|
|
||||||
// $this->check_docker_engine();
|
|
||||||
} catch (\Throwable $e) {
|
|
||||||
// Do nothing
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private function check_docker_engine()
|
|
||||||
{
|
|
||||||
$version = instant_remote_process([
|
|
||||||
'docker info',
|
|
||||||
], $this->server, false);
|
|
||||||
if (is_null($version)) {
|
|
||||||
$os = instant_remote_process([
|
|
||||||
'cat /etc/os-release | grep ^ID=',
|
|
||||||
], $this->server, false);
|
|
||||||
$os = str($os)->after('ID=')->trim();
|
|
||||||
if ($os === 'ubuntu') {
|
|
||||||
try {
|
|
||||||
instant_remote_process([
|
|
||||||
'systemctl start docker',
|
|
||||||
], $this->server);
|
|
||||||
} catch (\Throwable $e) {
|
|
||||||
ray($e->getMessage());
|
|
||||||
|
|
||||||
return handleError($e);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
try {
|
|
||||||
instant_remote_process([
|
|
||||||
'service docker start',
|
|
||||||
], $this->server);
|
|
||||||
} catch (\Throwable $e) {
|
|
||||||
ray($e->getMessage());
|
|
||||||
|
|
||||||
return handleError($e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function remove_unnecessary_coolify_yaml()
|
private function remove_unnecessary_coolify_yaml()
|
||||||
@ -108,29 +68,4 @@ private function remove_unnecessary_coolify_yaml()
|
|||||||
], $this->server, false);
|
], $this->server, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function cleanup(): void
|
|
||||||
{
|
|
||||||
if ($this->server->settings->is_force_cleanup_enabled) {
|
|
||||||
DockerCleanupJob::dispatch($this->server);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
$this->disk_usage = $this->server->getDiskUsage();
|
|
||||||
if ($this->disk_usage >= $this->server->settings->cleanup_after_percentage) {
|
|
||||||
DockerCleanupJob::dispatch($this->server);
|
|
||||||
if ($this->server->high_disk_usage_notification_sent) {
|
|
||||||
ray('high disk usage notification already sent');
|
|
||||||
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
$this->server->high_disk_usage_notification_sent = true;
|
|
||||||
$this->server->save();
|
|
||||||
$this->server->team?->notify(new HighDiskUsage($this->server, $this->disk_usage, $this->server->settings->cleanup_after_percentage));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$this->server->high_disk_usage_notification_sent = false;
|
|
||||||
$this->server->save();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user