feat : ajout page monitoring

This commit is contained in:
2026-03-06 15:26:51 +01:00
parent 993524aa72
commit 8b5d4e9655
21 changed files with 11098 additions and 0 deletions

45
server/api/disk.get.ts Normal file
View File

@@ -0,0 +1,45 @@
import { exec } from "child_process"
const remoteCommand =
process.env.DISK_REMOTE_COMMAND ||
"ssh malio-b@192.168.0.179 'cd /home/malio-b/Scripts-Serveur && bash check_storage.sh && exit'"
const localCommand =
process.env.DISK_LOCAL_COMMAND ||
"bash /home/kevin/check_storage.sh"
function runCommand(command: string): Promise<string> {
return new Promise((resolve, reject) => {
exec(command, (error, stdout, stderr) => {
if (error) {
reject(stderr || error.message)
return
}
resolve(stdout)
})
})
}
export default defineEventHandler(async () => {
const [remoteResult, localResult] = await Promise.allSettled([
runCommand(remoteCommand),
runCommand(localCommand)
])
return {
remote: {
ok: remoteResult.status === "fulfilled",
output:
remoteResult.status === "fulfilled"
? remoteResult.value
: `Erreur: ${String(remoteResult.reason)}`
},
local: {
ok: localResult.status === "fulfilled",
output:
localResult.status === "fulfilled"
? localResult.value
: `Erreur: ${String(localResult.reason)}`
}
}
})

View File

@@ -0,0 +1,25 @@
import { Readable } from "node:stream"
export default defineEventHandler((event) => {
const size = 128 * 1024 * 1024
let sent = 0
const stream = new Readable({
read(chunkSize) {
if (sent >= size) {
this.push(null)
return
}
const remaining = size - sent
const chunk = Buffer.alloc(Math.min(chunkSize, remaining), "a")
sent += chunk.length
this.push(chunk)
}
})
setHeader(event, "Content-Type", "application/octet-stream")
setHeader(event, "Content-Length", size)
return stream
})

3
server/api/ping.get.ts Normal file
View File

@@ -0,0 +1,3 @@
export default defineEventHandler(() => {
return { ok: true }
})

11
server/api/upload.post.ts Normal file
View File

@@ -0,0 +1,11 @@
export default defineEventHandler(async (event) => {
const req = event.node.req
let received = 0
for await (const chunk of req) {
received += chunk.length
}
return { received }
})

View File

@@ -0,0 +1,37 @@
export default defineEventHandler(async () => {
const targets = [
{ label: "Ferme", url: "http://ferme.malio-dev.fr/api/version" },
{ label: "SIRH", url: "http://sirh.malio-dev.fr/api/version" },
{ label: "Inventory", url: "http://inventory.malio-dev.fr/api/health" },
]
const results = await Promise.all(
targets.map(async (target) => {
try {
const response = await fetch(target.url, {
method: "GET",
headers: { Accept: "application/json" }
})
return {
label: target.label,
url: target.url,
ok: response.status === 200,
status: response.status,
checkedAt: new Date().toISOString()
}
} catch (error) {
return {
label: target.label,
url: target.url,
ok: false,
status: 0,
checkedAt: new Date().toISOString(),
error: error instanceof Error ? error.message : String(error)
}
}
})
)
return { results }
})