<?php namespace App\Console\Commands; use App\Models\Server; use Illuminate\Console\Command; use Illuminate\Database\Eloquent\Builder; class GetMetricsCommand extends Command { protected $signature = 'metrics:get'; protected $description = 'Get server metrics'; public function handle(): void { $checkedMetrics = 0; Server::query()->whereHas('services', function (Builder $query) { $query->where('type', 'monitoring') ->where('name', 'remote-monitor'); })->chunk(10, function ($servers) use (&$checkedMetrics) { /** @var Server $server */ foreach ($servers as $server) { $info = $server->os()->resourceInfo(); $server->metrics()->create(array_merge($info, ['server_id' => $server->id])); $checkedMetrics++; } }); $this->info("Checked $checkedMetrics metrics"); } }