Aller au contenu

Supervision de SquashTM

Gestion des logs

Les logs de SquashTM sont téléchargeables depuis l'administration de l'application ou depuis le répertoire logs sur le serveur. Les logs du jour sont dans le fichier squash-tm.log et les logs des jours précédents sont suffixés par leur date (exemple : squash-tm.log.20210527).

Niveau de logs

La rotation des logs applicatifs de SquashTM se configure dans le fichier conf/log4j2.xml.

Dans SquashTM, il existe trois niveaux de logs utiles : info, debug, trace. Le niveau trace est le plus précis des trois mais aussi le plus verbeux.

Pour mettre les logs de SquashTM au niveau debug, il faut :

  1. Arrêter SquashTM ;
  2. Modifier dans le fichier log4j2.xml la valeur info par debug à la ligne :
        <Root level="info">
    
  3. Redémarrer SquashTM.

Après avoir effectué le test souhaité revenir au niveau info pour ne pas surcharger le serveur car les logs sont très volumineux au niveau debug.

Loggers SquashTM

Le fichier log4j2.xml contient déjà un certain nombre de loggers. Il est d'ailleurs possible de modifier leur niveau de log individuellement en modifiant la valeur de la propriété level.

Voici une liste non exhaustive de loggers supplémentaires qu'il est possible d'ajouter à la suite de la dernière balise Logger du fichier :

Pour avoir des logs plus précis pour le bugtracker Jira Data Center :

<Logger name="org.squashtest.tm.plugin.bugtracker.jirarest" level="trace" additivity="false" >
    <AppenderRef ref="Console"/>
    <AppenderRef ref="Daily_log"/>
</Logger>

Pour augmenter le niveau de logs du plugin Git Connector :

<Logger name="org.squashtest.tm.plugin.scm.git.internal.GitClientImpl" level="trace" additivity="false" >
     <AppenderRef ref="Console"/>
     <AppenderRef ref="Daily_log"/>
</Logger>

(Le paramètre additivity="false" empêche la propagation des événements de log vers les loggers parents, notamment le logger racine Root. Sans ce paramètre, chaque entrée de log apparaîtrait en double dans les fichiers de sortie.)

Il est nécessaire de redémarrer SquashTM pour que les modifications réalisées sur le fichier soient prises en compte.

Logs Xsquash

Pour Xsquash Cloud, il est possible de télécharger les logs directement depuis l'administration Jira Cloud.

Pour Xsquash sur Jira Data Center, les logs du plugin sont confondus dans les logs de Jira.

Il est possible d'ajouter un logger en mode error pour le package org.squashtest.plugin.jira.Xsquash pour activer une visualisation plus précise des erreurs Xsquash dans les logs Jira.

Voici les étapes à suivre pour ajouter ce logger :

  1. Sur Jira Data Center, aller dans Administration > Système ;
  2. Aller dans la partie Connexion et création de profil ;
  3. Dans Loggers par défaut, cliquer sur [Configurer le niveau de journalisation pour un autre paquet] ;
  4. Renseigner le package org.squashtest.plugin.jira.Xsquash et un niveau de journalisation error.

Surveillance (monitoring)

Serveurs

Comme pour toute autre application, les serveurs hébergeant SquashTM et sa base de données devraient être surveillés :

  • espace disque : configurer une alerte lorsque l'espace disque atteint un certain seuil ;
  • CPU : configurer une alerte lorsque l'utilisation du CPU reste élevée pendant une période trop longue ;
  • RAM : idem ;
  • réseau (optionnellement s'il y a un risque que le réseau soit un goulot d'étranglement) : idem.

SquashTM

SquashTM est une application Spring Boot, donc votre application de surveillance peut utiliser les endpoints (points de terminaison) web Actuators pour l'interroger.

Par exemple :

  • Pour utiliser l'endpoint actuator/health :
    ajouter les lignes suivantes dans le fichier conf/squash.tm.cfg.properties :
    management.endpoints.access.default = read-only
    management.endpoints.web.exposure.include = health
    
    l'endpoint peut alors être interrogé :
    (Le token peut être créé sur la page Mon Compte.)
    >>> curl -s -H "Authorization: Bearer <token>" https://<host>:<port>/squash/actuator/health | jq
    {
    "status": "UP"
    }
    
  • Pour utiliser également l'endpoint actuator/metrics :
    modifier la deuxième ligne ci-dessus dans le fichier conf/squash.tm.cfg.properties :
    management.endpoints.web.exposure.include = health,metrics
    
    l'endpoint peut alors être interrogé :
    >>> curl -s -H "Authorization: Bearer <token>" https://<host>:<port>/squash/actuator/metrics/tomcat.sessions.active.current | jq
    {
      "name": "tomcat.sessions.active.current",
      "description": null,
      "baseUnit": "sessions",
      "measurements": [
        {
          "statistic": "VALUE",
          "value": 4
        }
      ],
      "availableTags": []
    }
    
    (Utiliser curl -s -H "Authorization: Bearer <token>" https://<host>:<port>/squash/actuator/metrics pour obtenir la liste des métriques disponibles.)
  • De même, pour les équipes utilisant Prometheus, l'endpoint actuator/prometheus est aussi disponible :
    modifier la deuxième ligne ci-dessus dans le fichier conf/squash.tm.cfg.properties :
    management.endpoints.web.exposure.include = prometheus
    
    l'endpoint peut alors être interrogé :
    >>> curl -s -H "Authorization: Bearer <token>" 'https://<host>:<port>/squash/actuator/prometheus?includedNames=jvm_memory_used_bytes%2Cjvm_memory_committed_bytes'
    # HELP jvm_memory_committed_bytes The amount of memory in bytes that is committed for the Java virtual machine to use
    # TYPE jvm_memory_committed_bytes gauge
    jvm_memory_committed_bytes{area="heap",id="G1 Eden Space"} 2.38026752E8
    jvm_memory_committed_bytes{area="heap",id="G1 Old Gen"} 3.31350016E8
    jvm_memory_committed_bytes{area="heap",id="G1 Survivor Space"} 1.2582912E7
    jvm_memory_committed_bytes{area="nonheap",id="CodeHeap 'non-nmethods'"} 2752512.0
    jvm_memory_committed_bytes{area="nonheap",id="CodeHeap 'non-profiled nmethods'"} 1.3893632E7
    jvm_memory_committed_bytes{area="nonheap",id="CodeHeap 'profiled nmethods'"} 2.8770304E7
    jvm_memory_committed_bytes{area="nonheap",id="Compressed Class Space"} 2.9687808E7
    jvm_memory_committed_bytes{area="nonheap",id="Metaspace"} 2.25312768E8
    # HELP jvm_memory_used_bytes The amount of used memory
    # TYPE jvm_memory_used_bytes gauge
    jvm_memory_used_bytes{area="heap",id="G1 Eden Space"} 8.1788928E7
    jvm_memory_used_bytes{area="heap",id="G1 Old Gen"} 3.00903496E8
    jvm_memory_used_bytes{area="heap",id="G1 Survivor Space"} 1.1599888E7
    jvm_memory_used_bytes{area="nonheap",id="CodeHeap 'non-nmethods'"} 2482176.0
    jvm_memory_used_bytes{area="nonheap",id="CodeHeap 'non-profiled nmethods'"} 1.3886976E7
    jvm_memory_used_bytes{area="nonheap",id="CodeHeap 'profiled nmethods'"} 2.8716672E7
    jvm_memory_used_bytes{area="nonheap",id="Compressed Class Space"} 2.856352E7
    jvm_memory_used_bytes{area="nonheap",id="Metaspace"} 2.23053752E8
    

Indisponibilité pour SquashTM Cloud

L'accès aux endpoints Actuator est limité aux administrateurs.
Dans l'offre SquashTM Cloud, ces endpoints ne sont pas disponibles.

Base de données

De nombreux outils peuvent être utilisés pour surveiller la base de données PostgreSQL ou MariaDB (la documentation de PostgreSQL liste certains d'entre eux).