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); // 检查查询结果是否有数据 if (empty($realdata['data']['result']) && empty($simulatedata['data']['result'])) { // 如果没有数据,返回一个空数据集或提示信息 return ['labels' => [], 'datasets' => [],]; } // 将数据格式化为 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, ]; } }