feat : ajout page monitoring
This commit is contained in:
45
server/api/disk.get.ts
Normal file
45
server/api/disk.get.ts
Normal 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)}`
|
||||
}
|
||||
}
|
||||
})
|
||||
25
server/api/download.get.ts
Normal file
25
server/api/download.get.ts
Normal 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
3
server/api/ping.get.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
export default defineEventHandler(() => {
|
||||
return { ok: true }
|
||||
})
|
||||
11
server/api/upload.post.ts
Normal file
11
server/api/upload.post.ts
Normal 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 }
|
||||
})
|
||||
37
server/api/version-status.get.ts
Normal file
37
server/api/version-status.get.ts
Normal 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 }
|
||||
})
|
||||
Reference in New Issue
Block a user