Dans une ère numérique de plus en plus complexe, l'observabilité est la clé principale de la gestion des systèmes logiciels modernes. L'un des piliers les plus importants de l'observabilité est la logging. Explorons pourquoi la journalisation est si importante et comment en faire un usage optimal.
La journalisation est le processus d'enregistrement des activités et des événements dans un système. Cela inclut une variété d'informations, depuis les messages d'erreur, l'activité de l'utilisateur jusqu'aux performances du système. Considérez la journalisation comme une « boîte noire » d'avion pour votre système : elle enregistre toujours ce qui se passe, prête à fournir des informations en cas de besoin.
Voici quelques points qui peuvent expliquer pourquoi les journaux sont importants :
Résolution plus rapide des problèmes
Avec de bons journaux, les équipes de développement peuvent identifier les causes profondes sans conjectures. C'est comme avoir une carte au trésor lorsque l'on cherche des insectes !
Améliorations de la sécurité
Les journaux peuvent être votre « espion » pour détecter les activités suspectes. Les équipes de sécurité peuvent réagir plus rapidement aux menaces, par exemple en ayant un service d'incendie toujours en attente.
Analyse des performances
Grâce aux journaux, vous pouvez identifier les goulots d'étranglement dans le système. C'est comme avoir un médecin personnel pour la santé de votre application.
Comprendre le comportement des utilisateurs
Les journaux d'activité des utilisateurs fournissent des informations précieuses sur la manière dont le produit est utilisé. C'est comme avoir un assistant personnel observant et signalant constamment les préférences des clients.
Pour maximiser les avantages de la journalisation, vous trouverez ci-dessous quelques-unes des meilleures pratiques qui peuvent être mises en œuvre :
L'utilisation de ces niveaux de journalisation appropriés peut vous aider à filtrer rapidement les informations, par exemple en triant les journaux par urgence.
Ce qui suit est un exemple d'affichage de journaux en utilisant le langage Golang avec différents niveaux. Ici, nous utilisons le Logrus.
package main import ( "github.com/sirupsen/logrus" ) func main() { log := logrus.New() log.SetLevel(logrus.DebugLevel) log.Debug("Starting app..") log.Info("User has successfully logged in") log.Warn("CPU usage exceeds 80%") log.Error("Failed to save data to database") log.Fatal("A critical error occurs, the application will stop") }
Ce qui suit est une explication des différents niveaux de journalisation ci-dessus :
Chaque entrée de journal doit fournir suffisamment de contexte pour comprendre ce qui s'est passé. Cela pourrait inclure :
Ceci est un exemple de code lors de l'impression d'un journal, comprenant des informations contextuelles qui nous aideront à tracer.
package main import ( "github.com/sirupsen/logrus" "time" ) type UserAction struct { UserID int Action string Timestamp time.Time } func main() { log := logrus.New() log.SetLevel(logrus.DebugLevel) // Use format json log.SetFormatter(&logrus.JSONFormatter{}) // Dummy data action := UserAction{ UserID: 12345, Action: "checkout", Timestamp: time.Now(), } // Print log log.WithFields(logrus.Fields{ "user_id": action.UserID, "action": action.Action, "timestamp": time.Now().Format(time.RFC3339), "session_id": generateSessionID(), "module": "payment_processor", "ip_address": "192.168.1.100", }).Error("Payment failed") } func generateSessionID() string { return "sess_abc123" }
Nous pouvons constater que nous avons inclus plusieurs éléments d'informations contextuelles qui peuvent nous permettre d'effectuer plus facilement le traçage à l'avenir. Quelles sont les commodités en question, à savoir que nous pouvons rechercher des journaux en fonction du niveau, par exemple le niveau d'erreur dans l'exemple de code ci-dessus, et également en fonction du temps et d'autres en fonction des informations que nous saisissons.
Un format de journal cohérent facilite l'analyse et l'analyse, surtout si vous utilisez des outils automatisés (en ce qui concerne les outils, cela sera discuté ci-dessous). Le formatage nous permet également de rechercher plus facilement les journaux en fonction de critères, par exemple le niveau de journalisation, le message ou l'heure. Exemple de format :
[TIMESTAMP] [LEVEL] [MODULE] [MESSAGE]
Ou au format JSON pour une analyse facile comme les résultats dans l'exemple de code ci-dessus :
{ "action": "checkout", "ip_address": "192.168.1.100", "level": "error", "module": "payment_processor", "msg": "Payment failed", "session_id": "sess_abc123", "time": "2024-06-26T20:59:02+07:00", "timestamp": "2024-06-26T20:59:02+07:00", "user_id": 12345 }
La rotation des journaux empêche les fichiers journaux de devenir trop volumineux et difficiles à gérer. Cela implique :
Limite la taille des fichiers journaux.
Créez périodiquement de nouveaux fichiers journaux (par exemple quotidiennement ou hebdomadairement).
Archiver ou supprimer les anciens fichiers journaux.
Utiliser des outils tels que logrotate sous Linux ou un framework de journalisation prenant en charge la rotation.
La sécurité et la confidentialité sont très importantes dans la journalisation :
N'enregistrez pas de données sensibles telles que des mots de passe ou des informations de carte de crédit.
Masquer ou chiffrer les données personnelles si nécessaire.
Assurez-vous que l'accès aux fichiers journaux est limité au personnel autorisé uniquement.
Mettre en œuvre une politique de conservation pour supprimer les anciens journaux conformément aux politiques et réglementations de l'entreprise.
À mesure que la complexité du système augmente, le besoin d'outils sophistiqués pour surveiller et analyser les journaux devient également de plus en plus important. Voici quelques outils populaires qui peuvent faciliter l'observabilité et l'analyse des journaux :
Grafana
Grafana est une plateforme open source pour visualiser nos données de journaux. Ces outils peuvent être intégrés à diverses sources de données, notamment les journaux. Permet la création de tableaux de bord personnalisés et interactifs. Convient pour la visualisation en temps réel des métriques et des journaux.
Nouvelle relique
New Relic est une plateforme d'observabilité tout-en-un
Fournit une analyse des journaux, un traçage et des métriques en un seul endroit. Il existe également des fonctionnalités d'IA pour détecter les anomalies et corréler les problèmes.
Convient à la surveillance d'applications et d'infrastructures à grande échelle.
Loki
Loki est un système d'agrégation de journaux léger et rentable. Loki est conçu pour bien fonctionner avec Grafana
Utilise des index basés sur des étiquettes, similaires à Prometheus
Idéal pour les organisations utilisant déjà Prometheus et Grafana.
AWS CloudWatch Logs Insights
Ce service d'analyse de journaux intégré d'AWS permet d'interroger et d'analyser les journaux de divers services AWS.
Fonctionnalité pour détecter les requêtes lentes dans RDS et autres services de base de données
Intégration facile avec d'autres services AWS.
La journalisation n'est pas seulement une fonctionnalité supplémentaire, mais un élément essentiel dans la construction d'un système fiable. Avec une mise en œuvre appropriée, la journalisation peut devenir votre supercapteur : elle offre une visibilité complète sur les opérations du système, aide à prévenir les problèmes avant qu'ils ne surviennent et accélère leur résolution lorsque des problèmes surviennent.
Alors, commencez dès aujourd’hui à investir dans de bonnes pratiques d’exploitation forestière. N'oubliez pas que dans un monde technologique complexe, de bonnes bûches peuvent être un guide au milieu d'une tempête !
Si vous avez des informations supplémentaires, veuillez les saisir dans la colonne commentaires ci-dessous.
Référentiel Github
Journalisation des applications et son importance
Pourquoi la gestion des journaux est-elle importante ?
10 outils d'observabilité en 2024 : fonctionnalités, part de marché et choisissez celui qui vous convient
Top 20 des meilleurs outils d'analyse de journaux et analyseur de journaux (avantages et inconvénients)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!