mirror of
https://github.com/Buriburizaem0n/nezha-dash-v1.git
synced 2026-05-06 05:48:41 +00:00
feat: add server metrics fetching and update translations
- Implemented `fetchServerMetrics` function in `nezha-api.ts` to retrieve server metrics based on metric type and period. - Added new metric types and periods to `nezha-api.ts` type definitions. - Updated English and Chinese translations to include new terms for metrics and periods. - Commented out `ServerDetailSummary` component in `ServerDetail.tsx` for future use.
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,10 @@
|
|||||||
import type {
|
import type {
|
||||||
LoginUserResponse,
|
LoginUserResponse,
|
||||||
|
MetricPeriod,
|
||||||
|
MetricType,
|
||||||
MonitorResponse,
|
MonitorResponse,
|
||||||
ServerGroupResponse,
|
ServerGroupResponse,
|
||||||
|
ServerMetricsResponse,
|
||||||
ServiceResponse,
|
ServiceResponse,
|
||||||
SettingResponse,
|
SettingResponse,
|
||||||
} from "@/types/nezha-api";
|
} from "@/types/nezha-api";
|
||||||
@@ -69,3 +72,19 @@ export const fetchSetting = async (): Promise<SettingResponse> => {
|
|||||||
}
|
}
|
||||||
return data;
|
return data;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const fetchServerMetrics = async (
|
||||||
|
server_id: number,
|
||||||
|
metric: MetricType,
|
||||||
|
period?: MetricPeriod,
|
||||||
|
): Promise<ServerMetricsResponse> => {
|
||||||
|
const query = period
|
||||||
|
? `?metric=${metric}&period=${period}`
|
||||||
|
: `?metric=${metric}`;
|
||||||
|
const response = await fetch(`/api/v1/server/${server_id}/metrics${query}`);
|
||||||
|
const data = await response.json();
|
||||||
|
if (data.error) {
|
||||||
|
throw new Error(data.error);
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
|||||||
@@ -77,7 +77,11 @@
|
|||||||
"mem": "Mem",
|
"mem": "Mem",
|
||||||
"swap": "Swap",
|
"swap": "Swap",
|
||||||
"upload": "Upload",
|
"upload": "Upload",
|
||||||
"download": "Download"
|
"download": "Download",
|
||||||
|
"realtime": "Realtime",
|
||||||
|
"period1d": "1 Day",
|
||||||
|
"period7d": "7 Days",
|
||||||
|
"period30d": "30 Days"
|
||||||
},
|
},
|
||||||
"footer": {
|
"footer": {
|
||||||
"themeBy": "Theme by "
|
"themeBy": "Theme by "
|
||||||
|
|||||||
@@ -77,7 +77,11 @@
|
|||||||
"mem": "内存",
|
"mem": "内存",
|
||||||
"swap": "虚拟内存",
|
"swap": "虚拟内存",
|
||||||
"upload": "上传",
|
"upload": "上传",
|
||||||
"download": "下载"
|
"download": "下载",
|
||||||
|
"realtime": "实时",
|
||||||
|
"period1d": "1 天",
|
||||||
|
"period7d": "7 天",
|
||||||
|
"period30d": "30 天"
|
||||||
},
|
},
|
||||||
"footer": {
|
"footer": {
|
||||||
"themeBy": "主题-"
|
"themeBy": "主题-"
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ import { useNavigate, useParams } from "react-router-dom";
|
|||||||
import { NetworkChart } from "@/components/NetworkChart";
|
import { NetworkChart } from "@/components/NetworkChart";
|
||||||
import ServerDetailChart from "@/components/ServerDetailChart";
|
import ServerDetailChart from "@/components/ServerDetailChart";
|
||||||
import ServerDetailOverview from "@/components/ServerDetailOverview";
|
import ServerDetailOverview from "@/components/ServerDetailOverview";
|
||||||
import ServerDetailSummary from "@/components/ServerDetailSummary";
|
|
||||||
import TabSwitch from "@/components/TabSwitch";
|
import TabSwitch from "@/components/TabSwitch";
|
||||||
import { Separator } from "@/components/ui/separator";
|
import { Separator } from "@/components/ui/separator";
|
||||||
|
|
||||||
@@ -39,9 +38,9 @@ export default function ServerDetail() {
|
|||||||
<Separator className="flex-1" />
|
<Separator className="flex-1" />
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
{/* <section>
|
||||||
<ServerDetailSummary server_id={Number(server_id)} />
|
<ServerDetailSummary server_id={Number(server_id)} />
|
||||||
</section>
|
</section> */}
|
||||||
|
|
||||||
<div style={{ display: currentTab === tabs[0] ? "block" : "none" }}>
|
<div style={{ display: currentTab === tabs[0] ? "block" : "none" }}>
|
||||||
<ServerDetailChart server_id={server_id} />
|
<ServerDetailChart server_id={server_id} />
|
||||||
|
|||||||
@@ -158,3 +158,41 @@ export interface SettingResponse {
|
|||||||
version: string;
|
version: string;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type MetricType =
|
||||||
|
| "cpu"
|
||||||
|
| "memory"
|
||||||
|
| "swap"
|
||||||
|
| "disk"
|
||||||
|
| "net_in_speed"
|
||||||
|
| "net_out_speed"
|
||||||
|
| "net_in_transfer"
|
||||||
|
| "net_out_transfer"
|
||||||
|
| "load1"
|
||||||
|
| "load5"
|
||||||
|
| "load15"
|
||||||
|
| "tcp_conn"
|
||||||
|
| "udp_conn"
|
||||||
|
| "process_count"
|
||||||
|
| "temperature"
|
||||||
|
| "uptime"
|
||||||
|
| "gpu";
|
||||||
|
|
||||||
|
export type MetricPeriod = "1d" | "7d" | "30d";
|
||||||
|
|
||||||
|
export interface MetricDataPoint {
|
||||||
|
ts: number;
|
||||||
|
value: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ServerMetricsData {
|
||||||
|
server_id: number;
|
||||||
|
server_name: string;
|
||||||
|
metric: string;
|
||||||
|
data_points: MetricDataPoint[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ServerMetricsResponse {
|
||||||
|
success: boolean;
|
||||||
|
data: ServerMetricsData;
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user