feat: display node label instead of instance IP, update CPU query to group by node
CI/CD / build-and-push (push) Successful in 1m32s Details

This commit is contained in:
Cloud User 2026-03-16 13:31:27 +09:00
parent a76af584cb
commit 40d77921a9
4 changed files with 5 additions and 5 deletions

View File

@ -31,7 +31,7 @@ config:
REPORT_STEP: "5m" REPORT_STEP: "5m"
REPORT_RANGE_DAYS: "7" REPORT_RANGE_DAYS: "7"
TZ: "Asia/Seoul" TZ: "Asia/Seoul"
QUERY_CPU: '100 - (avg by (instance)(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)' QUERY_CPU: '100 - (avg by (node)(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)'
QUERY_MEMORY: '(1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100' QUERY_MEMORY: '(1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100'
QUERY_DISK: 'sum by (mountpoint,fstype)((1 - node_filesystem_avail_bytes{fstype!~"tmpfs|overlay|nfs",mountpoint!~"/boot.*"} / node_filesystem_size_bytes{fstype!~"tmpfs|overlay|nfs",mountpoint!~"/boot.*"}) * 100)' QUERY_DISK: 'sum by (mountpoint,fstype)((1 - node_filesystem_avail_bytes{fstype!~"tmpfs|overlay|nfs",mountpoint!~"/boot.*"} / node_filesystem_size_bytes{fstype!~"tmpfs|overlay|nfs",mountpoint!~"/boot.*"}) * 100)'
QUERY_NAS: '((node_filesystem_size_bytes{fstype=~"nfs", node=~".*(bastion).*"} - node_filesystem_free_bytes{fstype=~"nfs", node=~".*(bastion).*"}) / node_filesystem_size_bytes{fstype=~"nfs", node=~".*(bastion).*"}) * 100' QUERY_NAS: '((node_filesystem_size_bytes{fstype=~"nfs", node=~".*(bastion).*"} - node_filesystem_free_bytes{fstype=~"nfs", node=~".*(bastion).*"}) / node_filesystem_size_bytes{fstype=~"nfs", node=~".*(bastion).*"}) * 100'

View File

@ -41,7 +41,7 @@ export async function GET(
const process = (results: typeof rxResults) => results.map((r) => { const process = (results: typeof rxResults) => results.map((r) => {
const dataPoints = parsePrometheusValues(r.values); const dataPoints = parsePrometheusValues(r.values);
return { return {
instance: r.metric.instance || '', instance: r.metric.node || r.metric.instance || '',
dataPoints, dataPoints,
stats: calculateStats(dataPoints), stats: calculateStats(dataPoints),
peaks: detectPeaks(dataPoints), peaks: detectPeaks(dataPoints),
@ -60,7 +60,7 @@ export async function GET(
const instances = results.map((r) => { const instances = results.map((r) => {
const dataPoints = parsePrometheusValues(r.values); const dataPoints = parsePrometheusValues(r.values);
return { return {
instance: r.metric.instance || '', instance: r.metric.node || r.metric.instance || '',
metric: r.metric, metric: r.metric,
dataPoints, dataPoints,
stats: calculateStats(dataPoints), stats: calculateStats(dataPoints),

View File

@ -11,7 +11,7 @@ function processResults(results: { metric: Record<string, string>; values: [numb
return results.map((r) => { return results.map((r) => {
const dataPoints = parseValues(r.values); const dataPoints = parseValues(r.values);
return { return {
instance: r.metric.instance || '', instance: r.metric.node || r.metric.instance || '',
metric: r.metric, metric: r.metric,
dataPoints, dataPoints,
stats: calculateStats(dataPoints), stats: calculateStats(dataPoints),

View File

@ -41,7 +41,7 @@ export async function queryInstant(query: string): Promise<PrometheusRangeResult
export const QUERIES = { export const QUERIES = {
cpuUsage: process.env.QUERY_CPU cpuUsage: process.env.QUERY_CPU
|| '100 - (avg by (instance)(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)', || '100 - (avg by (node)(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)',
memoryUsage: process.env.QUERY_MEMORY memoryUsage: process.env.QUERY_MEMORY
|| '(1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100', || '(1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100',
diskUsage: process.env.QUERY_DISK diskUsage: process.env.QUERY_DISK