Métriques applicatives ###################### Besoins ======= À des fins de monitoring des composants logiciels Java VITAM et de l'utilisation des ressources système par ceux-ci, VITAM intègre un reporting et une gestion de métriques applicatives. Modèle générique ================ On peut noter les composants suivants : * Enregistreur de métriques : il s'agit de la librairie en charge de l'enregistrement d'une métrique. * Reporters de métriques: il s'agit de librairies en charge de collecter les métriques enregistrées et d'en faire un reporting. * Stockage des métriques : il s'agit du composant stockant les métriques (de manière plus ou moins requêtable). * Visualisation des métriques : il s'agit du composant (souvent IHM) qui permet la recherche et la visualisation des métriques. Choix des implémentations ========================= Enregistreur de métriques ------------------------- Dans le système VITAM, l'enregistrement de métriques s'effectue uniquement dans les composants logiciels Java à l'aide de la librairie `Dropwizard metrics `_. Les plugins suivants sont utilisés pour leur métriques respectives : * `Dropwizard Jersey integration `_ pour les métriques Jersey. * `Dropwizard JVM integration `_ pour les métriques JVM. L'enregistreur de métriques possède un registre interne qui peut stocker différentes métriques : **Gauges**, **Timer**, **Meter**, **Counter** ou **Histograms**. Ces métriques seront collectées dans le temps par le/les reporter(s) de métriques. Les métriques Jersey sont automatiquement générées par application VITAM. Elles représentent un jeu de 3 métriques, **Meter**, **Timer** et **ExceptionMeter** pour chaque end-point des ressources de l'application. Les métriques JVM sont aussi uniques par application. Elles représentent plusieurs types de métriques sur la consommation de ressources système. .. note:: Une description fonctionelle des métriques est disponible dans le `manuel utilisateur dropwizard metrics `_. Reporters de métriques ---------------------- Dans le système VITAM, un ou plusieurs reporters de métriques peuvent être utilisés. A ce jour, il existe deux reporters différents : * Un reporter logback ; * Un reporter ElasticSearch issue de la librairie `metrics elasticsearch reporter `_. Les reporters sont utilisés dans les composants logiciels Java. Ils sont en charge de récupérer les valeurs de toutes les métriques enregistrées et de les transmettre sur différents canaux, ici soit un logger logback ou une base de données ElasticSearch. Stockage des métriques ---------------------- Si un reporter de métriques ElasticSearch est utilisé, celles-ci seront stockées dans le moteur d'indexation ElasticSearch, dans un cluster dédié au stockage des logs/métriques (pour séparer les données de logs/métriques et les données métier d'archives). La description de ce cluster commun logs/métriques, incluant la gestion des index et la visualisation, se trouve :doc:`dans la section précédente<05-logs-architecture>`. * Index : chaque index stockant des données de métriques correspond à 1 jour de métriques (déterminé à partir du timestamp de la métrique). Les index définis sont les suivants : - ``metrics-vitam-jersey-YYYY.MM.dd`` pour les métriques de Jersey, avec un champ *name* automatiquement généré sous la forme : **uri:http_method:consumed_types:produced_types:metric_type** - ``metrics-vitam-jvm-YYYY.MM.dd`` pour les métriques JVM. - ``metrics-vitam-business-YYYY.MM.dd`` pour les métriques métier. - ``.kibana`` pour le stockage des paramètres (et notamment des dashboards) Kibana. Limites ======= La solution implémentée dans Vitam possède les limites connues suivantes : * Du fait que la librairie Dropwizard Metrics fait une agrégation des métriques et que le système de visualisation Kibana fonctionne lui aussi à l'aide d'agrégations, les résultats visualisés sont corrects dans la limite d'une certaine précision (certaines données deviennent non-représentatives de la réalité). * Il n'existe à ce jour que 3 types de métriques, **Meter**, **Timer** et **ExceptionMeter** supportés par le plugin Jersey Dropwizard Metrics.