Propòsit
Aquest mòdul permet a l’aplicació generar dades d’instrumentació de la seva execució, per tal de poder ser explotades posteriorment amb eines de monitorització.
Dins d’aquest mòdul podem trobar les següents funcionalitats:
- Instrumentació de les peticions web: nombre de peticions, nombre d’errors i temps mig per petició.
- Instrumentació manual en format log de mètodes de classes aplicatives.
Instal.lació i Configuració
Instal.lació
Per tal d’instal-lar el mòdul d’instrumentació es pot incloure automàticament a través de l’eina de suport al desenvolupament o bé afegir manualment en el pom.xml de l’aplicació la següent dependència:
<dependency>
<groupId>cat.gencat.ctti</groupId>
<artifactId>canigo.operation.instrumentation</artifactId>
<version>${canigo.operation.instrumentation.version}</version>
</dependency>
A la Matriu de Compatibilitats es pot comprovar la versió del mòdul compatible amb la versió de Canigó utilitzada.
Configuració
La configuració es realitza automàticament a partir de la eina de suport al desenvolupament.
L’eina de desenvolupament també genera automàticament el fitxer de propietats necessari per a la configuració del servei.
Ubicació proposada: <PROJECT_ROOT>/src/main/resources/config/props/instrumentation.properties
Propietat | Requerit | Descripció |
---|---|---|
*.instrumentation.interval | No | Interval de refresc de les dades instrumentades en l'aplicació de monitorització. Per defecte: 60000 |
Utilització del Mòdul
Per a utilitzar aquest mòdul, cal instal·lar-lo amb l’eina de desenvolupament.
A continuació es descriu el mode d’ús per cadascuna de les funcionalitats oferides pel mòdul:
End Point Rest amb les dades de monitorització de l’aplicació
Per accedir a aquesta interfície l’usuari ha d’introduir les següents URLs al navegador:
http:\\url_aplicacio\info\monitoring\time
http:\\url_aplicacio\info\monitoring\request
http:\\url_aplicacio\info\monitoring\errors
En aquestes URLs es mostren el temps mig, nombre de peticions i errors respectivament. El format de les dades retornades és JSON.
Eines de revisió de l’estat de l’aplicació
Mitjançant anotacions Java, el desenvolupador pot crear els seus propis punts de control de l’aplicació, per certificar d’una manera ràpida el seu correcte funcionament.
Classe de servei que serà invocada des del Rest Controller:
@Service("statusService")
public class StatusService {
@Autowired
private GenericDAO<User, Integer> dao;
@CheckStatus
public void checkPSIS() throws IOException {
URL myUrl = new URL("http://psis.catcert.net/psis/catcert/dss");
URLConnection myConn = (HttpURLConnection)myUrl.openConnection();
myConn.setRequestProperty("User-agent","Mozilla/4.0");
InputStreamReader is = null;
BufferedReader br = null;
try {
is = new InputStreamReader(myConn.getInputStream());
br = new BufferedReader(is);
br.readLine();
} finally {
if(is!=null) {
is.close();
}
if(br!=null) {
br.close();
}
}
}
@CheckStatus
public void checkDataBaseConnection() {
dao.get(1);
}
@CheckStatus
public void checkLDAP() throws IOException {
.....
}
}
Instrumentació en format log de l’execució de mètodes de l’aplicació
Amb l’anotació @Trace, el desenvolupador pot marcar un mètode d’una classe gestionada per Spring, i de automàticament aquest generarà traces d’instrumentació de la seva execució:
@Service("myService")
public class ServiceImpl implements Service {
@Trace
public void doSomething(){
.....
}
}
On el resultat de l’execució del mètode ens deixarà la següent traça:
canigo Message: XX XXX 2010 16:45:40,774 INFO [main] cat.gencat.ctti.canigo.arch.operation.instrumentation.trace.AspectTrace - ea84cbe0-60ff-4ba5-a4e8-d90465101ac3;loc;nodeApp1;0;Service.doSomething();KO;
On cadascun dels camps separats per coma son:
- Identificador únic de petició
- Entorn
- Nom node servidor
- Temps d’execució
- Mètode executat
- Resultat de l’execució.