feat: charts
This commit is contained in:
@@ -15,7 +15,7 @@ class StartSentinel
|
||||
instant_remote_process(['docker rm -f coolify-sentinel'], $server, false);
|
||||
}
|
||||
instant_remote_process([
|
||||
"docker run --rm --pull always -d -e \"SCHEDULER=true\" --name coolify-sentinel -v /var/run/docker.sock:/var/run/docker.sock -v /data/coolify/metrics:/app/metrics -v /data/coolify/logs:/app/logs --pid host --health-cmd \"curl --fail http://127.0.0.1:8888/api/health || exit 1\" --health-interval 10s --health-retries 3 ghcr.io/coollabsio/sentinel:$version",
|
||||
"docker run --rm --pull always -d -e \"SCHEDULER=true\" -e \"METRICS_HISTORY=10\" -e \"REFRESH_RATE=5\" --name coolify-sentinel -v /var/run/docker.sock:/var/run/docker.sock -v /data/coolify/metrics:/app/metrics -v /data/coolify/logs:/app/logs --pid host --health-cmd \"curl --fail http://127.0.0.1:8888/api/health || exit 1\" --health-interval 10s --health-retries 3 ghcr.io/coollabsio/sentinel:$version",
|
||||
'chown -R 9999:root /data/coolify/metrics /data/coolify/logs',
|
||||
'chmod -R 700 /data/coolify/metrics /data/coolify/logs',
|
||||
], $server, false);
|
||||
|
@@ -36,7 +36,10 @@ class PullSentinelImageJob implements ShouldBeEncrypted, ShouldQueue
|
||||
{
|
||||
try {
|
||||
$version = get_latest_sentinel_version();
|
||||
if (! $version) {
|
||||
if (isDev()) {
|
||||
$version = "0.0.5";
|
||||
}
|
||||
if (!$version) {
|
||||
ray('Failed to get latest Sentinel version');
|
||||
|
||||
return;
|
||||
@@ -52,7 +55,7 @@ class PullSentinelImageJob implements ShouldBeEncrypted, ShouldQueue
|
||||
}
|
||||
ray('Sentinel image is up to date');
|
||||
} catch (\Throwable $e) {
|
||||
send_internal_notification('PullSentinelImageJob failed with: '.$e->getMessage());
|
||||
send_internal_notification('PullSentinelImageJob failed with: ' . $e->getMessage());
|
||||
ray($e->getMessage());
|
||||
throw $e;
|
||||
}
|
||||
|
33
app/Livewire/Charts/Server.php
Normal file
33
app/Livewire/Charts/Server.php
Normal file
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace App\Livewire\Charts;
|
||||
|
||||
use App\Models\Server as ModelsServer;
|
||||
use Livewire\Component;
|
||||
|
||||
class Server extends Component
|
||||
{
|
||||
public ModelsServer $server;
|
||||
public $chartId = 'server';
|
||||
public $data;
|
||||
public $categories;
|
||||
|
||||
public function render()
|
||||
{
|
||||
return view('livewire.charts.server');
|
||||
}
|
||||
public function mount()
|
||||
{
|
||||
$this->loadData();
|
||||
}
|
||||
public function loadData()
|
||||
{
|
||||
$metrics = $this->server->getMetrics();
|
||||
$metrics = collect($metrics)->map(function ($metric) {
|
||||
return [$metric[0], $metric[1]];
|
||||
});
|
||||
$this->dispatch("refreshChartData-{$this->chartId}", [
|
||||
'seriesData' => $metrics,
|
||||
]);
|
||||
}
|
||||
}
|
@@ -487,7 +487,6 @@ $schema://$host {
|
||||
$parsedCollection = collect($cpu)->flatMap(function ($item) {
|
||||
return collect(explode("\n", trim($item)))->map(function ($line) {
|
||||
[$time, $value] = explode(',', trim($line));
|
||||
|
||||
return [(int) $time, (float) $value];
|
||||
});
|
||||
})->toArray();
|
||||
|
30
app/View/Components/ApexCharts.php
Normal file
30
app/View/Components/ApexCharts.php
Normal file
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace App\View\Components;
|
||||
|
||||
use Closure;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Illuminate\View\Component;
|
||||
|
||||
class ApexCharts extends Component
|
||||
{
|
||||
public string $chartId;
|
||||
public $seriesData;
|
||||
public $categories;
|
||||
public $seriesName;
|
||||
public function __construct($chartId, $seriesData, $categories, $seriesName = '')
|
||||
{
|
||||
$this->chartId = $chartId;
|
||||
$this->seriesData = $seriesData;
|
||||
$this->categories = $categories;
|
||||
$this->seriesName = $seriesName ?? 'Series';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the view / contents that represent the component.
|
||||
*/
|
||||
public function render(): View|Closure|string
|
||||
{
|
||||
return view('components.apex-charts');
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user