修复不显示的问题

This commit is contained in:
CN-JS-HuiBai
2026-04-04 17:40:02 +08:00
parent 6a5f86b717
commit a2a477d3fb

View File

@@ -68,30 +68,71 @@ async function testConnection(url) {
/** /**
* Execute a Prometheus instant query * Execute a Prometheus instant query
*/ */
async function query(url, expr) { async function query(baseUrl, expr) {
const client = createClient(url); const url = normalizeUrl(baseUrl);
const res = await client.get('/api/v1/query', { params: { query: expr } }); try {
if (res.data.status !== 'success') { const params = new URLSearchParams({ query: expr });
throw new Error(`Prometheus query failed: ${res.data.error || 'unknown error'}`); const controller = new AbortController();
const timer = setTimeout(() => controller.abort(), QUERY_TIMEOUT);
const res = await fetch(`${url}/api/v1/query?${params.toString()}`, {
signal: controller.signal
});
clearTimeout(timer);
if (!res.ok) {
throw new Error(`Prometheus returned HTTP ${res.status}`);
}
const data = await res.json();
if (data.status !== 'success') {
throw new Error(`Prometheus query failed: ${data.error || 'unknown error'}`);
}
return data.data.result;
} catch (err) {
if (err.name === 'AbortError') {
throw new Error('Prometheus query timed out');
}
throw err;
} }
return res.data.data.result;
} }
/** /**
* Execute a Prometheus range query * Execute a Prometheus range query
*/ */
async function queryRange(url, expr, start, end, step) { async function queryRange(baseUrl, expr, start, end, step) {
const client = createClient(url); const url = normalizeUrl(baseUrl);
const res = await client.get('/api/v1/query_range', { try {
params: { query: expr, start, end, step } const params = new URLSearchParams({ query: expr, start, end, step });
}); const controller = new AbortController();
if (res.data.status !== 'success') { const timer = setTimeout(() => controller.abort(), QUERY_TIMEOUT);
throw new Error(`Prometheus range query failed: ${res.data.error || 'unknown error'}`);
const res = await fetch(`${url}/api/v1/query_range?${params.toString()}`, {
signal: controller.signal
});
clearTimeout(timer);
if (!res.ok) {
throw new Error(`Prometheus returned HTTP ${res.status}`);
}
const data = await res.json();
if (data.status !== 'success') {
throw new Error(`Prometheus range query failed: ${data.error || 'unknown error'}`);
}
return data.data.result;
} catch (err) {
if (err.name === 'AbortError') {
throw new Error('Prometheus range query timed out');
}
throw err;
} }
return res.data.data.result;
} }
/** /**
* Get overview metrics from a single Prometheus source * Get overview metrics from a single Prometheus source
*/ */