HDI: monitoraggio dell’attività dell’applicazione 4D
È possibile specificare il tipo di attività che si desidera monitorare:
- Attività dei dati 4D: operazioni che coinvolgono i dati 4D stessi,
- Attività di rete: si ottengono le stesse informazioni del file 4DRequestsLog (*),
- Esecuzione della lingua: si ottengono le stesse informazioni del file 4DDebugLog (*).
(*) Non è necessario attivare i file di registro corrispondenti, quindi non viene utilizzato spazio sul disco.
Comando AVVIA ATTIVITÀ DI MONITORAGGIO
Il comando START MONITORING ACTIVITY prende come parametri la soglia di durata e il tipo di operazioni da monitorare . Per questo, è possibile utilizzare le seguenti nuove costanti per il monitoraggio:
- Activity operations: operazioni nei dati 4D
- Activity networkoperazioni dell’attività di rete
- Activity languageoperazioni dell’esecuzione del linguaggio
Comando Ottieni attività monitorata
Quando si desidera ottenere tutte le attività registrate, è sufficiente richiamare il nuovo comando Get Monitored Activity() .
Restituisce una raccolta di oggetti con le relative informazioni che possono essere utilizzate a piacere (generare un file, visualizzare un’interfaccia per l’amministratore, ecc.)
Comando STOP ATTIVITÀ MONITORATA
Quando si desidera interrompere la registrazione dell’attività dell’applicazione 4D o svuotare la memoria, è sufficiente richiamare il comando STOP MONITORING ACTIVITY comando.
ESEMPIO concreto
Nella maggior parte dei casi, l’esigenza è la seguente:
Ogni 10 minuti, voglio controllare se alcune operazioni sono durate più di 10 secondi sul mio server 4D. In caso affermativo, voglio inviare un’e-mail all’amministratore (o intraprendere un’altra azione).
Di seguito è riportato del codice per fare proprio questo.
Metodo di avvio del server ON
C_LONGINT($monitorProcessId)
STOP MONITORING ACTIVITY
// Detect 4D data operations which lasted more than 10s
START MONITORING ACTIVITY (10;Activity operations)
//Run a monitoring process
$monitorProcessId :=New process("monitorOperations";0; "Monitor operations")
processo di monitoraggio (da eseguire sul server)
C_COLLECTION($activities)
While (Not(Process aborted))
// Inspect 4D data activity every 10 minutes
DELAY PROCESS (Current process;36000)
// Get the long operations and exclude backup operations
$activities :=Get Monitored Activity().query("Not(activityData.message IN :1)";New collection("@backup@"))
If ($activities.length#0)
// Send an email to the administrator with $activities details
// Empty the memory and restart the monitoring
STOP MONITORING ACTIVITY
START MONITORING ACTIVITY (10;Activity operations)
End if
End while
sul metodo di spegnimento del server
C_COLLECTION($activities)
$activities :=Get Monitored Activity().query("Not(activityData.message IN :1)";New collection("@backup@"))
If ($activities.length#0)
// Send an email to the administrator with $activities details
End if