Utilitaires
Scripts
Divers
Jeux
Rechercher
Quillevere.net
Paradigmes informatiques

ActiveMQ : "WARNING Store limit is X mb, whilst the data directory: Y has Z mb of usage space"

18/07/2023

Lors de l'utilisation de ActiveMQ, si vous tombez sur l'erreur suivante : "Getting Worried {org.apache.activemq.FreeDiskSpaceLeft: WARNING Store limit is 29597 mb, whilst the data directory: /kahadb only has 13414 mb of usable space", voici une explication sur le sujet.

Explication de l'alerte

ActiveMQ est un broker de messages, un logiciel permettant d'assurer la persistance et la diffusion de messages à des consommateurs. Jolokia est un logiciel permettant d'exposer via des web services les paramètres et métriques de ActiveMQ.

Le message "Getting Worried {org.apache.activemq.FreeDiskSpaceLeft: WARNING Store limit is XXX mb, whilst the data directory: /kahadb only has YYY mb of usable space" peut remonter lors de l'appel à l'API Jolokia sur la santé du serveur ActiveMQ. Cette alerte est non bloquante (le service continue d'être assuré) mais il indique que l'espace de stockage est censé être de telle taille alors qu'il ne reste plus que tel espace disponible sur le disque.

Obtenir l'état de santé de ActiveMQ

  • Connectez-vous sur votre serveur ActiveMQ en ligne de commande
  • Entrez :
    curl -u admin:admin -H origin:localhost http://localhost:8161/api/jolokia/read/org.apache.activemq:type=Broker,brokerName=localhost,service=Health/CurrentStatus
  • L'API renvoie un JSON avec 2 valeurs possibles : 'Good' ou avec une alerte.

Statut valide

Si le statut est OK, l'API renvoie un JSON similaire à celui-ci :

{ "request":{
    "mbean":"org.apache.activemq:brokerName=localhost,service=Health,type=Broker",
    "attribute":"CurrentStatus",
    "type":"read"
    },
 "value":"Good",
 "timestamp":1688129478,
 "status":200
}

Statut en alerte

Si le statut est en alerte, l'API renvoie un JSON similaire à celui-ci :

{ "request":{
    "mbean":"org.apache.activemq:brokerName=localhost,service=Health,type=Broker",
    "type":"exec",
    "operation":"health"
    },
 "value":{
    "org.apache.activemq.FreeDiskSpaceLeft":{
        "WARNING":{
            "Store limit is 94336 mb, whilst the data directory: \/apache-activemq-5.15.10\/bin\/linux-x86-64\/..\/..\/data\/kahadb only has 82666 mb of usable space":{
                "KahaDBPersistenceAdapter[\/apache-activemq-5.15.10\/bin\/linux-x86-64\/..\/..\/data\/kahadb,Index:\/apache-activemq-5.15.10\/bin\/linux-x86-64\/..\/..\/data\/kahadb]":{
                    "level":"WARNING",
                    "resource":"KahaDBPersistenceAdapter[\/apache-activemq-5.15.10\/bin\/linux-x86-64\/..\/..\/data\/kahadb,Index:\/apache-activemq-5.15.10\/bin\/linux-x86-64\/..\/..\/data\/kahadb]",
                    "healthId":"org.apache.activemq.FreeDiskSpaceLeft",
                    "message":"Store limit is 94336 mb, whilst the data directory: \/apache-activemq-5.15.10\/bin\/linux-x86-64\/..\/..\/data\/kahadb only has 82666 mb of usable space"
                    }
                }
            }
        }
    },
 "timestamp":1688121616,
 "status":200
}

Comprendre le paramétrage du stockage ActiveMQ

Corriger l'alerte

Pour corriger l'alerte, vous avez plusieurs possibilités :

  • Augmenter l'espace disque disponible pour ActiveMQ, pour le répertoire data, afin de correspondre au paramétrage indiqué.
  • Revoir la configuration de l'espace alloué à ActiveMQ.

Dans ce dernier cas, il est nécessaire de comprendre comment est géré le stockage des messages.

La configuration par défaut définit une allocation des données temporaires de 50 Go (tempUsage) et une allocation des données persistantes de 100 Go (storeUsage). Elle est visible en éditant le fichier <activemq>/conf/activemq.xml :

<systemUsage>
     <systemUsage>
         <memoryUsage>
             <memoryUsage percentOfJvmHeap="70" />
         </memoryUsage>
         <storeUsage>
             <storeUsage limit="100 gb"/>
         </storeUsage>
         <tempUsage>
             <tempUsage limit="50 gb"/>
         </tempUsage>
     </systemUsage>
 </systemUsage>

La valeur de memoryUsage représente la limite de mémoire utilisée par ActiveMQ par rapport à la mémoire allouée à la machine virtuelle Java (JVM) d'ActiveMQ. La valeur de percentOfJvmHeap est utilisée pour calculer dynamiquement cette limite.

La valeur storeUsage indique la taille maximale des messages persistants. Lorsque cette limite est atteinte, un avertissement peut être généré pour indiquer que la capacité de stockage est presque épuisée.

La valeur tempUsage indique la taille maximale des fichiers temporaires et des messages non persistants (qui, malgré leur nom, peuvent être écrits sur disque si besoin, afin d'éviter de saturer la mémoire).

Il convient donc d'ajuster ces valeurs à l'espace disque disponible. S'il n'y a pas de messages non persistants, la valeur attribuée à tempUsage peut être réduite :

  • Editez le fichier activemq.xml
  • Ajustez les valeurs et sauvegardez le fichier
  • Redémarrez ActiveMQ
  • Actualisez l'état de santé d'ActiveMQ :
    curl -u admin:admin -H "Content-Type: application/json" -d '{"type":"exec", "mbean":"org.apache.activemq:type=Broker,brokerName=localhost,service=Health", "operation":"health"}' http://localhost:8161/api/jolokia/
Dernière modification le 18/07/2023 - Quillevere.net

Commentaires

Aucune inscription n'est requise si vous souhaitez

Articles connexes

Rechercher sur le site

fr en rss RSS info Informations