258 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			258 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <div>
 | |
|     <div class="flex items-center gap-2 ">
 | |
|         <h2>Metrics</h2>
 | |
|     </div>
 | |
|     <div class="pb-4">Basic metrics for your container.</div>
 | |
|     @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>
 | |
|     @elseif(!$resource->destination->server->isSentinelEnabled())
 | |
|         <div class="alert alert-warning">Metrics are only available for servers with Sentinel enabled!</div>
 | |
|         <div> Go to <a class="underline dark:text-white"
 | |
|                 href="{{ route('server.show', $resource->destination->server->uuid) }}">Server settings</a> to
 | |
|             enable
 | |
|             it.</div>
 | |
|     @else
 | |
|         @if (!str($resource->status)->contains('running'))
 | |
|             <div class="alert alert-warning">Metrics are only available when this resource is running!</div>
 | |
|         @else
 | |
|             <x-forms.select label="Interval" wire:change="setInterval" id="interval">
 | |
|                 <option value="5">5 minutes (live)</option>
 | |
|                 <option value="10">10 minutes (live)</option>
 | |
|                 <option value="30">30 minutes</option>
 | |
|                 <option value="60">1 hour</option>
 | |
|                 <option value="720">12 hours</option>
 | |
|                 <option value="10080">1 week</option>
 | |
|                 <option value="43200">30 days</option>
 | |
|             </x-forms.select>
 | |
|             <div @if ($poll) wire:poll.5000ms='pollData' @endif x-init="$wire.loadData()"
 | |
|                 class="pt-5">
 | |
|                 <h4>CPU (%)</h4>
 | |
|                 <div wire:ignore id="{!! $chartId !!}-cpu"></div>
 | |
| 
 | |
|                 <script>
 | |
|                     checkTheme();
 | |
|                     const optionsServerCpu = {
 | |
|                         stroke: {
 | |
|                             curve: 'straight',
 | |
|                         },
 | |
|                         chart: {
 | |
|                             height: '150px',
 | |
|                             id: '{!! $chartId !!}-cpu',
 | |
|                             type: 'area',
 | |
|                             toolbar: {
 | |
|                                 show: true,
 | |
|                                 tools: {
 | |
|                                     download: false,
 | |
|                                     selection: false,
 | |
|                                     zoom: true,
 | |
|                                     zoomin: false,
 | |
|                                     zoomout: false,
 | |
|                                     pan: false,
 | |
|                                     reset: true
 | |
|                                 },
 | |
|                             },
 | |
|                             animations: {
 | |
|                                 enabled: false,
 | |
|                             },
 | |
|                         },
 | |
|                         fill: {
 | |
|                             type: 'gradient',
 | |
|                         },
 | |
|                         dataLabels: {
 | |
|                             enabled: false,
 | |
|                             offsetY: -10,
 | |
|                             style: {
 | |
|                                 colors: ['#FCD452'],
 | |
|                             },
 | |
|                             background: {
 | |
|                                 enabled: false,
 | |
|                             }
 | |
|                         },
 | |
|                         grid: {
 | |
|                             show: true,
 | |
|                             borderColor: '',
 | |
|                         },
 | |
|                         colors: [baseColor],
 | |
|                         xaxis: {
 | |
|                             type: 'datetime',
 | |
|                         },
 | |
|                         series: [{
 | |
|                             name: "CPU %",
 | |
|                             data: []
 | |
|                         }],
 | |
|                         noData: {
 | |
|                             text: 'Loading...',
 | |
|                             style: {
 | |
|                                 color: textColor,
 | |
|                             }
 | |
|                         },
 | |
|                         tooltip: {
 | |
|                             enabled: true,
 | |
|                             marker: {
 | |
|                                 show: false,
 | |
|                             }
 | |
|                         },
 | |
|                         legend: {
 | |
|                             show: false
 | |
|                         }
 | |
|                     }
 | |
|                     const serverCpuChart = new ApexCharts(document.getElementById(`{!! $chartId !!}-cpu`), optionsServerCpu);
 | |
|                     serverCpuChart.render();
 | |
|                     document.addEventListener('livewire:init', () => {
 | |
|                         Livewire.on('refreshChartData-{!! $chartId !!}-cpu', (chartData) => {
 | |
|                             checkTheme();
 | |
|                             serverCpuChart.updateOptions({
 | |
|                                 series: [{
 | |
|                                     data: chartData[0].seriesData,
 | |
|                                 }],
 | |
|                                 colors: [baseColor],
 | |
|                                 xaxis: {
 | |
|                                     type: 'datetime',
 | |
|                                     labels: {
 | |
|                                         show: true,
 | |
|                                         style: {
 | |
|                                             colors: textColor,
 | |
|                                         }
 | |
|                                     }
 | |
|                                 },
 | |
|                                 yaxis: {
 | |
|                                     show: true,
 | |
|                                     labels: {
 | |
|                                         show: true,
 | |
|                                         style: {
 | |
|                                             colors: textColor,
 | |
|                                         }
 | |
|                                     }
 | |
|                                 },
 | |
|                                 noData: {
 | |
|                                     text: 'Loading...',
 | |
|                                     style: {
 | |
|                                         color: textColor,
 | |
|                                     }
 | |
|                                 }
 | |
|                             });
 | |
|                         });
 | |
|                     });
 | |
|                 </script>
 | |
| 
 | |
|                 <h3>Memory (MB)</h3>
 | |
|                 <div wire:ignore id="{!! $chartId !!}-memory"></div>
 | |
| 
 | |
|                 <script>
 | |
|                     checkTheme();
 | |
|                     const optionsServerMemory = {
 | |
|                         stroke: {
 | |
|                             curve: 'straight',
 | |
|                         },
 | |
|                         chart: {
 | |
|                             height: '150px',
 | |
|                             id: '{!! $chartId !!}-memory',
 | |
|                             type: 'area',
 | |
|                             toolbar: {
 | |
|                                 show: true,
 | |
|                                 tools: {
 | |
|                                     download: false,
 | |
|                                     selection: false,
 | |
|                                     zoom: true,
 | |
|                                     zoomin: false,
 | |
|                                     zoomout: false,
 | |
|                                     pan: false,
 | |
|                                     reset: true
 | |
|                                 },
 | |
|                             },
 | |
|                             animations: {
 | |
|                                 enabled: false,
 | |
|                             },
 | |
|                         },
 | |
|                         fill: {
 | |
|                             type: 'gradient',
 | |
|                         },
 | |
|                         dataLabels: {
 | |
|                             enabled: false,
 | |
|                             offsetY: -10,
 | |
|                             style: {
 | |
|                                 colors: ['#FCD452'],
 | |
|                             },
 | |
|                             background: {
 | |
|                                 enabled: false,
 | |
|                             }
 | |
|                         },
 | |
|                         grid: {
 | |
|                             show: true,
 | |
|                             borderColor: '',
 | |
|                         },
 | |
|                         colors: [baseColor],
 | |
|                         xaxis: {
 | |
|                             type: 'datetime',
 | |
|                             labels: {
 | |
|                                 show: true,
 | |
|                                 style: {
 | |
|                                     colors: textColor,
 | |
|                                 }
 | |
|                             }
 | |
|                         },
 | |
|                         series: [{
 | |
|                             name: "Memory (MB)",
 | |
|                             data: []
 | |
|                         }],
 | |
|                         noData: {
 | |
|                             text: 'Loading...',
 | |
|                             style: {
 | |
|                                 color: textColor,
 | |
|                             }
 | |
|                         },
 | |
|                         tooltip: {
 | |
|                             enabled: true,
 | |
|                             marker: {
 | |
|                                 show: false,
 | |
|                             }
 | |
|                         },
 | |
|                         legend: {
 | |
|                             show: false
 | |
|                         }
 | |
|                     }
 | |
|                     const serverMemoryChart = new ApexCharts(document.getElementById(`{!! $chartId !!}-memory`),
 | |
|                         optionsServerMemory);
 | |
|                     serverMemoryChart.render();
 | |
|                     document.addEventListener('livewire:init', () => {
 | |
|                         Livewire.on('refreshChartData-{!! $chartId !!}-memory', (chartData) => {
 | |
|                             checkTheme();
 | |
|                             serverMemoryChart.updateOptions({
 | |
|                                 series: [{
 | |
|                                     data: chartData[0].seriesData,
 | |
|                                 }],
 | |
|                                 colors: [baseColor],
 | |
|                                 xaxis: {
 | |
|                                     type: 'datetime',
 | |
|                                     labels: {
 | |
|                                         show: true,
 | |
|                                         style: {
 | |
|                                             colors: textColor,
 | |
|                                         }
 | |
|                                     }
 | |
|                                 },
 | |
|                                 yaxis: {
 | |
|                                     min: 0,
 | |
|                                     show: true,
 | |
|                                     labels: {
 | |
|                                         show: true,
 | |
|                                         style: {
 | |
|                                             colors: textColor,
 | |
|                                         }
 | |
|                                     }
 | |
|                                 },
 | |
|                                 noData: {
 | |
|                                     text: 'Loading...',
 | |
|                                     style: {
 | |
|                                         color: textColor,
 | |
|                                     }
 | |
|                                 }
 | |
|                             });
 | |
|                         });
 | |
|                     });
 | |
|                 </script>
 | |
|             </div>
 | |
|         @endif
 | |
|     @endif
 | |
| </div>
 | 
