SOMA.resourceManagement
Class MonitoringManager

java.lang.Object
  extended bySOMA.resourceManagement.MonitoringManager
All Implemented Interfaces:
Daemon, java.lang.Runnable

public class MonitoringManager
extends java.lang.Object
implements java.lang.Runnable, Daemon

Classe che coordina il monitoraggio e l'accounting. E' un componente del Place Resource Manager. Un demone, quando avviato (cioè messo in stato ON), esegue un ciclo in cui si alternano fasi di lettura dal monitor, di aggiornamento dei dati e delle finestre (se sono aperte), e di controllo dei consumi effettuati dagli agenti (se ci sono agenti da controllare): se si rileva un superamento di soglia viene generato un evento di allarme consegnato all'opportuno gestore. Al momento della creazione è in stato OFF. E' prevista un'autoregolazione della frequenza dei controlli: se il numero di allarmi è sufficientemente basso viene allentata, se invece è elevato viene aumentata. I controlli possono essere disattivati, mantenendo però attive le letture e gli aggiornamenti, settando un opportuno flag. ATTENZIONE: il monitoraggio è effettuabile solamente su un place per host, in caso di configuarazione avanzata si creano dei conflitti al momento ancora non risolti.

Author:
Silvia Vecchi
See Also:
PlaceResourceManager, Threshold, res.JvmMonitor, res.ProcessMonitor

Nested Class Summary
static class MonitoringManager.MonitoringManagerException
          Eccezione lanciata da MonitoringManager
 
Field Summary
(package private)  FilteredInfo[] agentsDiffConsumptions
          Struttura contenente i consumi di tutti gli agenti nell'ultimo intervallo di polling
(package private)  java.util.HashSet agentsTotConsumptions
          Struttura contenente i consumi di tutti gli agenti dalla nascita
(package private)  boolean agentWin
          Flag per segnalare la presenza della finestra degli agenti, e, di conseguenza, la necessità di aggiornarla
(package private) static int ALARMS_NUM_MAX
          Numero massimo di allarmi al di sopra del quale si intensifica la frequenza dei controlli
(package private) static int ALARMS_NUM_MIN
          Numero minimo di allarmi al di sotto del quale si allenta la frequenza dei controlli
(package private)  int alarmsNum
          Numero di allarmi relativo agli ultimi tre cicli di controllo
(package private)  boolean ctrl
          Flag per stabilire se effettuare o meno i controlli
(package private)  int delta
          Intervallo fra le due letture differenziali
(package private) static int DELTA
          Valore di default dell'intervallo fra le due letture differenziali
(package private)  java.lang.String ErrorDescription
           
(package private)  JvmMonitor jvmMonitor
          Oggetto di interfaccia al Monitor della JVM
(package private)  java.util.Vector listeners
          Vettore dei listener (gestori di allarme e finestre)
(package private)  java.lang.Thread myMonitoringDaemon
          Demone che esegue il ciclo di gestione del monitoraggio
(package private)  boolean networkWin
          Flag per segnalare la presenza della finestra della rete, e, di conseguenza, la necessità di aggiornarla
(package private)  java.io.FileWriter out
           
(package private) static int POLLING_TIME
          Valore di default dell'intervallo di polling
(package private)  int pollingTime
          Intervallo di polling
(package private)  PlaceResourceManager prm
          Riferimento al Place Resource Manager
(package private)  ProcessMonitor processMonitor
          Oggetto di interfaccia al Monitor della macchina (processi e rete)
(package private)  boolean processWin
          Flag per segnalare la presenza della finestra dei processi, e, di conseguenza, la necessità di aggiornarla
(package private)  java.lang.Object status
          Stato del demone
(package private)  Threshold threshold
          Soglie dei consumi usate per effettuare i controlli
(package private)  java.text.DateFormat timeStampFormat
           
 
Fields inherited from interface SOMA.network.connection.Daemon
ERROR, OFF, ON
 
Constructor Summary
MonitoringManager(PlaceResourceManager prm)
          Costruttore: crea gli oggetti d'interfaccia al monitor e setta soglie e intervallo di polling
 
Method Summary
 void addMonitoringManagerListener(MonitoringManagerListener listener)
          Registra il listener passato come argomento
 void checkEventListener(MonitoringManagerListener lis, MonitoringManagerEvent ev)
          Associa l'evento al listener corrispondente.
 void controlAgentsInfo(FilteredInfo[] data)
          Confronta i consumi rilevati con i valori delle soglie corrispondenti, lanciando un evento in caso di superamento
 void getAgentsInfo()
          Preleva le informazioni sui thread Java interrogando il monitor relativo alla JVM.
 void getNetworkInfo()
          Preleva le informazioni sulla rete interrogando il monitor relativo al SO
 void getProcessInfo()
          Preleva le informazioni sui processi interrogando il monitor relativo al SO
 java.lang.Object getStatus()
          Restituisce lo stato
 void removeMonitoringManagerListener(MonitoringManagerListener listener)
          Rimuove il listener passato come argomento
 void run()
          Ciclo principale di funzionamento
 void sendEvent(MonitoringManagerEvent ev)
          Invia l'evento passato come argomento al listener corrispondente
 void setCtrl(boolean s)
          Permette di attivare/disattivare i controlli
 void start()
          Mette lo stato a ON e avvia il demone che fa polling
 void stop()
          Mette lo stato a OFF, e quindi sospende il polling
 java.lang.String toString()
          Restituisce la rappresentazione in stringa
 void upDateAgentsTotConsumptions(ThreadStat data, AgentID agID)
          Aggiorna la tabella in cui vengono memorizzati i consumi di tutti i thread degli agenti, ancora presenti o no, dalla loro nascita
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

myMonitoringDaemon

java.lang.Thread myMonitoringDaemon
Demone che esegue il ciclo di gestione del monitoraggio


listeners

java.util.Vector listeners
Vettore dei listener (gestori di allarme e finestre)


agentWin

boolean agentWin
Flag per segnalare la presenza della finestra degli agenti, e, di conseguenza, la necessità di aggiornarla


processWin

boolean processWin
Flag per segnalare la presenza della finestra dei processi, e, di conseguenza, la necessità di aggiornarla


networkWin

boolean networkWin
Flag per segnalare la presenza della finestra della rete, e, di conseguenza, la necessità di aggiornarla


ctrl

boolean ctrl
Flag per stabilire se effettuare o meno i controlli


status

java.lang.Object status
Stato del demone


ErrorDescription

java.lang.String ErrorDescription

agentsDiffConsumptions

FilteredInfo[] agentsDiffConsumptions
Struttura contenente i consumi di tutti gli agenti nell'ultimo intervallo di polling


agentsTotConsumptions

java.util.HashSet agentsTotConsumptions
Struttura contenente i consumi di tutti gli agenti dalla nascita


pollingTime

int pollingTime
Intervallo di polling


POLLING_TIME

static final int POLLING_TIME
Valore di default dell'intervallo di polling

See Also:
Constant Field Values

delta

int delta
Intervallo fra le due letture differenziali


DELTA

static final int DELTA
Valore di default dell'intervallo fra le due letture differenziali

See Also:
Constant Field Values

threshold

Threshold threshold
Soglie dei consumi usate per effettuare i controlli


alarmsNum

int alarmsNum
Numero di allarmi relativo agli ultimi tre cicli di controllo


ALARMS_NUM_MAX

static final int ALARMS_NUM_MAX
Numero massimo di allarmi al di sopra del quale si intensifica la frequenza dei controlli

See Also:
Constant Field Values

ALARMS_NUM_MIN

static final int ALARMS_NUM_MIN
Numero minimo di allarmi al di sotto del quale si allenta la frequenza dei controlli

See Also:
Constant Field Values

prm

PlaceResourceManager prm
Riferimento al Place Resource Manager


jvmMonitor

JvmMonitor jvmMonitor
Oggetto di interfaccia al Monitor della JVM


processMonitor

ProcessMonitor processMonitor
Oggetto di interfaccia al Monitor della macchina (processi e rete)


out

java.io.FileWriter out

timeStampFormat

java.text.DateFormat timeStampFormat
Constructor Detail

MonitoringManager

public MonitoringManager(PlaceResourceManager prm)
Costruttore: crea gli oggetti d'interfaccia al monitor e setta soglie e intervallo di polling

Method Detail

getStatus

public java.lang.Object getStatus()
Restituisce lo stato

Specified by:
getStatus in interface Daemon

toString

public java.lang.String toString()
Restituisce la rappresentazione in stringa


start

public void start()
           throws MonitoringManager.MonitoringManagerException,
                  java.lang.Exception
Mette lo stato a ON e avvia il demone che fa polling

Specified by:
start in interface Daemon
Throws:
MonitoringManager.MonitoringManagerException
java.lang.Exception

stop

public void stop()
          throws MonitoringManager.MonitoringManagerException,
                 java.lang.Exception
Mette lo stato a OFF, e quindi sospende il polling

Specified by:
stop in interface Daemon
Throws:
MonitoringManager.MonitoringManagerException
java.lang.Exception

addMonitoringManagerListener

public void addMonitoringManagerListener(MonitoringManagerListener listener)
Registra il listener passato come argomento


removeMonitoringManagerListener

public void removeMonitoringManagerListener(MonitoringManagerListener listener)
Rimuove il listener passato come argomento


run

public void run()
Ciclo principale di funzionamento

Specified by:
run in interface java.lang.Runnable

getProcessInfo

public void getProcessInfo()
Preleva le informazioni sui processi interrogando il monitor relativo al SO


getNetworkInfo

public void getNetworkInfo()
Preleva le informazioni sulla rete interrogando il monitor relativo al SO


getAgentsInfo

public void getAgentsInfo()
Preleva le informazioni sui thread Java interrogando il monitor relativo alla JVM. Aggiorna le tabelle agentsDiffConsumptions (consumi agenti nell'ultimo intervallo di polling) e agentsTotConsumptions (consumi totali degli agenti dalla loro nascita); se non ci sono agenti la prima viene svuotata


upDateAgentsTotConsumptions

public void upDateAgentsTotConsumptions(ThreadStat data,
                                        AgentID agID)
Aggiorna la tabella in cui vengono memorizzati i consumi di tutti i thread degli agenti, ancora presenti o no, dalla loro nascita


controlAgentsInfo

public void controlAgentsInfo(FilteredInfo[] data)
Confronta i consumi rilevati con i valori delle soglie corrispondenti, lanciando un evento in caso di superamento


sendEvent

public void sendEvent(MonitoringManagerEvent ev)
               throws MonitoringManager.MonitoringManagerException
Invia l'evento passato come argomento al listener corrispondente

Throws:
MonitoringManager.MonitoringManagerException

checkEventListener

public void checkEventListener(MonitoringManagerListener lis,
                               MonitoringManagerEvent ev)
Associa l'evento al listener corrispondente. L'ordine con cui viene fatto il check definisce una sorta di priorità degli allarmi da gestire


setCtrl

public void setCtrl(boolean s)
Permette di attivare/disattivare i controlli



Copyright © 2004 Luca Foschini