~xdavidwu/uptime-monitor

ref: 62d4b8ac039a0d4fc107f6fa337dff15d1655f15 uptime-monitor/app/Console/Commands/MonitorProbe.php -rw-r--r-- 1.5 KiB
62d4b8acxdavidwu cli: monitor:probe: impl optional retry 2 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php

namespace App\Console\Commands;

use App\ProbeInstance;
use App\ProbeLog;
use Exception;
use Illuminate\Console\Command;

class MonitorProbe extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'monitor:probe';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Perform probes';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        foreach (ProbeInstance::all() as $probe_instance) {
            $probe = unserialize($probe_instance->probe);
            $success = false;
            $lastlog = '';
            for ($i = env('MONITOR_PROBE_MAX_TRIES', 1); $i > 0; $i--) {
                try {
                    $probe->execute();
                    $success = true;
                    break;
                } catch (Exception $e) {
                    $this->error("{$probe->describe()} failed, $i tries left");
                    $this->info($e->getMessage());
                    $lastlog = $e->getMessage();
                }
            }
            $log = new ProbeLog();
            $log->success = $success;
            $log->outputs = $lastlog;
            $probe_instance->logs()->save($log);
        }
    }
}