Aller au contenu principal

Observabilité

Objectifs

  • Définir et différencier observabilité et monitoring
  • Définir et différencier logs, métriques et traces
  • Listes les indicateurs de performance DORA
  • Décrire la stack ELK

Cours

Observabilité

DevOps

Monitoring (supervision)

  • Collecte de métriques sur les

    • ressources (CPU, mémoire, disque, réseau)

    • performances (temps de réponse, latence, débit)

    • erreurs (code HTTP, exceptions, logs)

    • ...

Observabilité

  • Mesure de l'inférence de l'état interne d'un système à partir de ses observations externes

  • Trois piliers

    • Logs (journalisation)

    • Métriques (monitoring)

    • Traces (suivi)

Observabilité vs Monitoring

  • Monitoring

    • action de surveiller

    • dit s'il y a un problème

  • Observabilité

    • capacité à être surveillé

    • capacité à trouver et comprendre le problème

    • = Monitoring + Logs + Traces

Métriques DORA

  • DevOps Research and Assessment de Google

  • 4 indicateurs de performance

    • Deployment Frequency : fréquence de déploiement réussi en prod

    • Lead Time for Changes : temps d'exécution des changements (commit → prod)

    • Change Failure Rate : taux d'échec des changements

    • (Mean) Time to Restore Service (MTTR) : temps de rétablissement (moyen) du service

Métriques DORA

https://platformengineering.org/talks-library/track-dora-devops-metrics-with-logilica-and-humanitec

Dashboard DORA

https://cloud.google.com/blog/products/devops-sre/using-the-four-keys-to-measure-your-devops-performance

Métriques DORA

https://cloud.google.com/blog/products/devops-sre/using-the-four-keys-to-measure-your-devops-performance

Monitoring avec ELK

  • Elasticsearch : moteur de recherche et base de données

  • Logstash : agrège et transforme les données

    • ETL : Extract-transform-load

  • Kibana : interface de visualisation et d'exploration de données

  • Beats : collecte de données (agent)

  • Open source par Elastic

ELK Stack

https://openclassrooms.com/fr/courses/1750566-optimisez-la-securite-informatique-grace-au-monitoring/7145268-decouvrez-la-stack-elk

ELK Stack

https://www.datawrangler.in/blog/14-elk-stack/

Monitoring Stack

 

ELK

Alternative

Collect

Beats

Fluentd

Process

Logstash

Grafana Loki

Store

Elasticsearch

Grafana Loki

Visualize

Kibana

Grafana

Alert

Kibana

Grafana

Combinable !

Collecte

  • Agent

    • Indépendant du code

    • Lis la sortie standard (stdout) ou les fichiers de logs

    • Définition des métriques dans l'agent

  • Client/Library

    • Ajoute une nouvelle dépendance au code

    • Modification du code pour envoyer les logs

    • Définition des métriques dans le code

Agent

https://opentelemetry.io/docs/collector/deployment/agent/

Client/Library

https://opentelemetry.io/docs/collector/deployment/no-collector/

Fluentd Java


import java.util.HashMap;
import java.util.Map;
import org.fluentd.logger.FluentLogger;

public class Main {
    private static FluentLogger LOG = FluentLogger.getLogger("fluentd.test");

    public void doApplicationLogic() {
        // ...
        Map<String, Object> data = new HashMap<String, Object>();
        data.put("from", "userA");
        data.put("to", "userB");
        LOG.log("follow", data);
        // ...
    }
}

https://docs.fluentd.org/language-bindings/java

Elasticsearch

  • Moteur de recherche et base de données

  • Utilise Lucene pour l'indexation et la recherche de texte

  • Cluster de noeuds (distribué)

  • API REST

F pour passer en plein écran ou O pour afficher la vue d'ensemble.
Versions sans animation, plein écran, imprimable.

Références