Added file logging

This commit is contained in:
La Programmatrice Verde 2025-08-18 16:54:32 +02:00
parent 67df0ea9f6
commit 53f732baa6
6 changed files with 43 additions and 21 deletions

View File

@ -7,6 +7,7 @@ Le due variabili **non** possono essere usate nello stesso momento.
Per inserire più di un peer nelle variabili d'ambiente, separarli con un `;`. Non inserire spazi o altri caratteri, solo i nomi/ID dei peer e `;` sono accettati.
Se vengono specificati degli hostname o degli ID non validi insieme a degli hostname o degli ID validi, quelli non validi saranno ignorati.
Se nessuna delle due variabili vengono specificate, il programma monitorerà tutti i peer registrati.
Il file di log è disponibile in `/var/log/NetBird-UptimeKuma.log`
## Per iniziare ad usare il programma:
1- Recarsi su https://app.netbird.io/team/users
@ -22,6 +23,6 @@ Se nessuna delle due variabili vengono specificate, il programma monitorerà tut
## Docker
Docker run:
`docker run -p 3000:3000 -e BASE_TOKEN=<token> -e HOSTNAMES="<hostname1>;<hostname2>" test`
`docker run -p 3000:3000 -e BASE_TOKEN=<token> -e HOSTNAMES="<hostname1>;<hostname2>" -v /var/log/NetBird-UptimeKuma.log:/var/log/NetBird-UptimeKuma.log test`
Per il Docker compose, vedere il file relativo.

View File

@ -7,4 +7,6 @@ services:
environment:
BASE_TOKEN: ""
HOSTNAMES: ""
HOSTIDS: ""
HOSTIDS: ""
volumes:
/var/log/NetBird-UptimeKuma.log:/var/log/NetBird-UptimeKuma.log

View File

@ -5,7 +5,7 @@ var monitorInterval;
async function Monitoring() {
await initHostList();
console.log(`[${shared.now}] \nInizio monitoring`);
Log(`[${shared.now}] \nInizio monitoring`);
//monitora tutti gli host della lista
shared.eventEmitter.on("tokenRenewalStart", () => {
clearInterval(monitorInterval);
@ -38,7 +38,7 @@ async function isConnected(hostID) {
},
}
);
console.log(`[${shared.now}] ${hostID} connected: ${response.data.connected}`);
Log(`[${shared.now}] ${hostID} connected: ${response.data.connected}`);
return response.data.connected;
}
@ -69,7 +69,7 @@ async function initHostList() {
hostIDs.push(host.id);
});
} catch (error) {
console.log(
Log(
`[${shared.now}] Errore nella verifica e aggiunta al monitoraggio di un host: ${error}`
);
process.exit(3);
@ -88,7 +88,7 @@ async function initHostList() {
);
hostIDs.push(response.data[0].id);
} catch (error) {
console.log(
Log(
`[${shared.now}] Errore nella verifica e aggiunta al monitoraggio di un host: ${error}`
);
process.exit(3);
@ -115,7 +115,7 @@ async function initHostList() {
);
hostIDs.push(response.data.id);
} catch (error) {
console.log(
Log(
`[${shared.now}] Errore nella verifica e aggiunta al monitoraggio di un host: ${error}`
);
process.exit(3);
@ -134,7 +134,7 @@ async function initHostList() {
);
hostIDs.push(response.data.id);
} catch (error) {
console.log(
Log(
`[${shared.now}] Errore nella verifica e aggiunta al monitoraggio di un host: ${error}`
);
process.exit(3);
@ -142,7 +142,7 @@ async function initHostList() {
}
}
} else {
console.log(
Log(
`[${shared.now}] Nessun peer specificato, verranno monitorati tutti i peer disponibili`
);
try {
@ -156,13 +156,13 @@ async function initHostList() {
hostIDs.push(element.id);
});
} catch (error) {
console.log(`[${shared.now}] ${error}`);
Log(`[${shared.now}] ${error}`);
}
}
console.log(`[${shared.now}] ID rilevati:`);
Log(`[${shared.now}] ID rilevati:`);
hostIDs.forEach((element) => {
console.log(`[${shared.now}] ${element}`);
Log(`[${shared.now}] ${element}`);
});
}

View File

@ -1,5 +1,6 @@
const { Monitoring } = require("./hosts.js");
const { TokenRenew } = require("./tokens.js");
const { Log } = require("./logs.js");
const EventEmitter = require("node:events");
const shared = require("./shared.js");
const express = require("express");
@ -15,20 +16,20 @@ global.hour = minute * 60;
global.day = hour * 24;
app.listen(port, () => {
console.log(`[${shared.now}] Il server è online sulla porta ${port}`);
Log(`[${shared.now}] Il server è online sulla porta ${port}`);
});
if ("BASE_TOKEN" in process.env) {
console.log(`[${shared.now}] Token inserito: ${baseToken}`);
Log(`[${shared.now}] Token inserito: ${baseToken}`);
if (/^nbp_[a-z0-9A-Z]{36}$/.test(baseToken)) {
Monitoring();
TokenRenew();
} else {
console.log(`[${shared.now}] Il token inserito non è valido.`);
Log(`[${shared.now}] Il token inserito non è valido.`);
process.exit(2);
}
} else {
console.log(`[${shared.now}] Nessun token inserito.`);
Log(`[${shared.now}] Nessun token inserito.`);
process.exit(1);
}

18
logs.js Normal file
View File

@ -0,0 +1,18 @@
const fs = require("fs");
const path = require("path");
const shared = require("./shared.js");
let logFile;
logFile = path.join("/var/log", "NetBird-UptimeKuma.log");
console.log(`[${shared.now}] File di log situato in /var/log/NetBird-UptimeKuma.log`);
function writeToLog(message) {
fs.appendFileSync(logFile, `${message}\n`);
}
function Log(message) {
console.log(message);
writeToLog(message);
}
module.exports = { Log };

View File

@ -21,7 +21,7 @@ async function TokenRenew() {
await deleteToken(tokenID);
shared.eventEmitter.emit("tokenRenewalEnd");
} catch (error) {
console.error(`[${shared.now}] Errore nel rinnovo del token: ${error}`);
Log(`[${shared.now}] Errore nel rinnovo del token: ${error}`);
}
}, day - hour);
}
@ -33,7 +33,7 @@ async function getUserID() {
Authorization: `Token ${shared.getToken()}`,
},
});
console.log(`[${shared.now}] UserID: ${response.data.id}`);
Log(`[${shared.now}] UserID: ${response.data.id}`);
return response.data.id;
}
@ -46,7 +46,7 @@ async function deleteToken(tokenID) {
},
}
);
console.log(`[${shared.now}] Token con ID ${tokenID} cancellato con successo`);
Log(`[${shared.now}] Token con ID ${tokenID} cancellato con successo`);
}
async function getCurrentTokenID() {
@ -63,7 +63,7 @@ async function getCurrentTokenID() {
const token = response.data.find((t) => t.name === "Uptime Kuma");
if (!token) throw new Error("Token 'Uptime Kuma' non trovato");
console.log(`[${shared.now}] CurrentTokenID: ${token.id}`);
Log(`[${shared.now}] CurrentTokenID: ${token.id}`);
return token.id;
}
@ -82,7 +82,7 @@ async function getNewToken() {
},
}
);
console.log(`[${shared.now}] Nuovo token creato: ${response.data.plain_token}`);
Log(`[${shared.now}] Nuovo token creato: ${response.data.plain_token}`);
return response.data.plain_token;
}