[增加]Metrics在表格中数据显示
This commit is contained in:
61
management-panel/app/Livewire/MetricWidgetChart.php
Normal file
61
management-panel/app/Livewire/MetricWidgetChart.php
Normal file
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
|
||||
namespace App\Livewire;
|
||||
|
||||
use App\Services\PrometheusService;
|
||||
use LaraZeus\InlineChart\InlineChartWidget;
|
||||
|
||||
class MetricWidgetChart extends InlineChartWidget
|
||||
{
|
||||
protected function getData(): array
|
||||
{
|
||||
$prometheus = new PrometheusService();
|
||||
|
||||
$query1 = $this->record->name . '{data="real"}';
|
||||
$query2 = $this->record->name . '{data="simulate"}';
|
||||
|
||||
$start = now()->subDays(1)->timestamp;
|
||||
$end = now()->timestamp;
|
||||
$step = 60;
|
||||
$realdata = $prometheus->queryRange($query1, $start, $end, $step);
|
||||
$simulatedata = $prometheus->queryRange($query2, $start, $end, $step);
|
||||
|
||||
// 将数据格式化为 InlineChartWidget 所需的格式
|
||||
$formattedRealData = $this->formatData($realdata, 'Real Data');
|
||||
$formattedSimulateData = $this->formatData($simulatedata, 'Simulate Data');
|
||||
|
||||
return [
|
||||
'labels' => $formattedRealData['labels'],
|
||||
'datasets' => [
|
||||
$formattedRealData['datasets'],
|
||||
$formattedSimulateData['datasets'],
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* 将 Prometheus 查询结果格式化为 InlineChartWidget 所需的数据格式
|
||||
*
|
||||
* @param array $data Prometheus 查询结果
|
||||
* @param string $label 数据集标签
|
||||
* @return array 格式化后的数据
|
||||
*/
|
||||
protected function formatData(array $data, string $label): array
|
||||
{
|
||||
$labels = [];
|
||||
$dataset = [
|
||||
'label' => $label,
|
||||
'data' => [],
|
||||
];
|
||||
|
||||
foreach ($data['data']['result'][0]['values'] as $point) {
|
||||
$labels[] = date('H:i', $point[0]);
|
||||
$dataset['data'][] = $point[1];
|
||||
}
|
||||
|
||||
return [
|
||||
'labels' => $labels,
|
||||
'datasets' => $dataset,
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user