recherche
Maisondéveloppement back-endGolangUtilisation d'ELK pour la collecte et l'analyse des journaux dans Beego

Utilisation d'ELK pour la collecte et l'analyse des journaux dans Beego

Jun 23, 2023 am 09:34 AM
Analyse des journauxbeegoelk

Utilisation d'ELK pour la collecte et l'analyse de journaux dans Beego

ELK est un ensemble d'outils de collecte et d'analyse de journaux très populaire, composé de trois logiciels open source : Elasticsearch, Logstash et Kibana. Cet ensemble d'outils peut être utilisé pour rechercher, analyser et visualiser de grandes quantités de données de journaux en temps réel.

Dans le développement d'applications Web, les journaux sont une source d'informations très utile qui peut être utilisée pour suivre le comportement des applications, le débogage et l'optimisation des performances, etc. Beego est un framework Web open source écrit en langage Go, qui peut facilement utiliser ELK pour la collecte et l'analyse des journaux.

Cet article expliquera comment configurer et utiliser ELK dans Beego pour la collecte et l'analyse des journaux, et comment utiliser Kibana pour la visualisation des données.

1. Installez et configurez ELK

Vous devez d'abord installer et configurer ELK. Vous pouvez télécharger la dernière version du logiciel ELK sur le site officiel : https://www.elastic.co/downloads/

Installation. ELK nécessite d'abord d'installer Java. Et définissez la variable d'environnement JAVA_HOME, puis décompressez le package ELK et démarrez Elasticsearch et Kibana :

cd elasticsearch-7.6.0/bin
./elasticsearch

cd kibana-7.6.0/bin
./kibana

Modifiez ensuite le fichier de configuration Logstash logstash.conf, configurez l'entrée, le filtre et la sortie :

input {
    tcp {
        port => 5000
        codec => json
    }
}

filter {
    if [type] == "beego" {
        grok {
            match => { "message" => "%{COMBINEDAPACHELOG}" }
        }
    }
}

output {
    elasticsearch {
        hosts => ["localhost:9200"]
        index => "%{type}-%{+YYYY.MM.dd}"
    }
}

Cette configuration. Le fichier spécifie que Logstash écoute sur la connexion TCP du port 5000 et utilise l'encodage et le décodage JSON. Lorsqu'un message de journal envoyé par une application Beego est reçu, le message de journal est analysé à l'aide d'un filtre grok d'expression régulière. Les messages du journal analysés sont ensuite envoyés à Elasticsearch.

2. Utilisez ELK dans l'application Beego

Utilisez logrus comme bibliothèque de journaux dans l'application Beego, et vous pouvez envoyer des journaux au serveur Logstash :

package main

import (
    "github.com/astaxie/beego"
    "github.com/sirupsen/logrus"
    "github.com/x-cray/logrus-prefixed-formatter"
    "gopkg.in/natefinch/lumberjack.v2"
)

func init() {
    logLevel, err := logrus.ParseLevel(beego.AppConfig.String("logrus.level"))
    if err != nil {
        logLevel = logrus.InfoLevel
    }

    logrus.SetLevel(logLevel)
    logrus.SetFormatter(&prefixed.TextFormatter{})
    logrus.SetOutput(&lumberjack.Logger{
        Filename:   beego.AppConfig.String("logrus.filename"),
        MaxSize:    10, // megabytes
        MaxBackups: 3,
        MaxAge:     28, // days
    })

    logrus.AddHook(&logrusHook{})
}

type logrusHook struct{}

func (h *logrusHook) Levels() []logrus.Level {
    return logrus.AllLevels
}

func (h *logrusHook) Fire(entry *logrus.Entry) error {
    message, err := entry.String()
    if err != nil {
        return err
    }

    logstash := beego.AppConfig.String("logstash.addr")
    connection, err := net.Dial("tcp", logstash)
    if err != nil {
        return err
    }

    defer connection.Close()

    _, err = connection.Write([]byte(message))
    return err
}

Dans cet extrait de code, utilisez d'abord la bibliothèque logrus pour initialiser l'enregistreur, et puis enregistrez la sortie dans les fichiers et la sortie standard. Ajoutez ensuite un logrusHook pour envoyer un message de journal au format JSON au serveur Logstash à chaque fois qu'il est enregistré.

Il est très pratique d'utiliser logrus comme bibliothèque de journalisation dans les applications Beego. Il vous suffit d'importer la bibliothèque logrus dans le code, puis d'utiliser la méthode logrus.WithFields() pour enregistrer les informations de journal sous forme de clé-valeur. paires.

3. Utilisez Kibana pour la visualisation des données

Kibana est une interface Web qui peut interroger, visualiser et analyser les données de journal. Elle peut récupérer des données d'Elasticsearch et les visualiser. Ouvrez l'adresse de Kibana dans un navigateur, généralement http://localhost:5601, et sélectionnez le menu « Découvrir » pour rechercher et visualiser les données de journal collectées.

Des tableaux de bord peuvent être créés dans Kibana pour visualiser plusieurs requêtes ensemble afin de surveiller la santé du système. Des filtres et des balises peuvent également être utilisés pour interroger et visualiser les données plus précisément.

4. Résumé

Utiliser ELK pour la collecte et l'analyse des journaux dans l'application Beego est une méthode très pratique et pratique. ELK fournit des fonctions flexibles de filtrage et de visualisation des journaux pour localiser rapidement les problèmes d'application et optimiser les performances. Dans le même temps, l'état d'exécution de l'application peut être surveillé de manière plus intuitive grâce à la visualisation et aux tableaux de bord.

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!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Comment utiliser des canaux tamponnés par rapport aux canaux à mal à mal dans GO?Comment utiliser des canaux tamponnés par rapport aux canaux à mal à mal dans GO?Jul 23, 2025 am 04:15 AM

Dans GO, la sélection de la chaîne tamponnée ou non tamponnée dépend du fait que la communication synchrone soit requise. 1.LaBufferedChannel est utilisé pour une synchronisation stricte, et les opérations d'envoi et de réception sont bloquées les unes par les autres, adaptées à des scénarios tels que les chaînes de tâches, les poignées de main, les notifications en temps réel; 2. 3. Lors du choix, il faut décider un par un selon que l'envoi et la réception doivent être envoyés. Si la tâche doit être traitée immédiatement, utilisez non frappé et utilisez tamponné si la file d'attente ou le traitement parallèle est autorisée. maître

Comment gérer l'arrêt gracieux dans un serveur GO HTTP?Comment gérer l'arrêt gracieux dans un serveur GO HTTP?Jul 23, 2025 am 04:14 AM

Tohandleagracefulshutdowninagohttpsserver, écouterforsignalslikesiginTorterter, usethutdown () méthode withatimeout, EnsureMiddlewareandbackgroundTasksCloseproperly

Stack vs tas-tas allocation avec des pointeurs en GoStack vs tas-tas allocation avec des pointeurs en GoJul 23, 2025 am 04:14 AM

L'allocation de pile convient aux petites variables locales avec des cycles de vie clairs et est automatiquement géré, à vitesse rapide mais de nombreuses restrictions; L'allocation de tas est utilisée pour les données avec des cycles de vie longs ou incertains, et est flexible mais a un coût de performance. Le compilateur GO détermine automatiquement la position d'allocation variable par analyse d'échappement. Si la variable peut s'échapper de la portée de la fonction actuelle, elle sera allouée au tas. Les situations courantes qui provoquent une évasion comprennent: le renvoi des pointeurs de variables locales, l'attribution de valeurs aux types d'interface et le passage des goroutines. Les résultats de l'analyse d'échappement peuvent être visualisés via -gcflags = "- m". Lorsque vous utilisez des pointeurs, vous devez faire attention au cycle de vie variable pour éviter les évasions inutiles.

Aller une analyse statique pour l'assurance de la qualité du codeAller une analyse statique pour l'assurance de la qualité du codeJul 23, 2025 am 04:13 AM

L'analyse statique améliore la qualité du code grâce à la détection précoce des problèmes dans les projets en langue GO. 1. Utilisez GOVET, GOFMT et d'autres outils standard pour détecter les erreurs et les styles unifiés, et intégrez-les dans le processus CI pour éviter les erreurs de bas niveau. 2. Introduire des outils tiers tels que Golangci-lint pour améliorer les capacités d'inspection, prendre en charge l'intégration de configuration flexible avec CI et trouver des problèmes tels que des fonctions inutilisées et une mauvaise gestion des erreurs. 3. Combiné avec des éditeurs tels que VSCODE et Goland pour réaliser une rétroaction en temps réel, améliorer l'efficacité de la découverte de problèmes au stade de codage et ainsi améliorer l'efficacité globale du projet et de la collaboration.

Architecture axée sur l'événement avec Go et KafkaArchitecture axée sur l'événement avec Go et KafkaJul 23, 2025 am 04:12 AM

Kafka et GO sont combinés pour construire des systèmes à haut débit et évolutifs. Kafka fournit un stockage de messages persistants et un support de groupe de consommateurs. GO atteint un traitement concurrent efficace par le goroutine; 2. Les composants principaux incluent les producteurs (utilisant Sarama pour envoyer des événements structurés à des sujets), les consommateurs (en utilisant des groupes de consommateurs pour paralléliser et traiter les événements) et des sujets et des mécanismes de partitionnement basés sur la conception du domaine commercial; 3. Les meilleures pratiques incluent: l'utilisation de formats d'événements structurés tels que JSON ou Protobuf pour assurer la cohérence des données, la mise en œuvre d'un mécanisme de rétractation avec un backoff exponentiel pour gérer les défaillances temporaires, en utilisant des groupes de consommateurs pour obtenir une mise à l'échelle horizontale, une surveillance de la consommation pour garantir le décalage en temps réel et le traitement des messages via des méthodes asynchrones non bloquant les méthodes pour éviter de bloquer le bloc

Travailler avec PostgreSQL et la base de données de GO / SQLTravailler avec PostgreSQL et la base de données de GO / SQLJul 23, 2025 am 04:11 AM

Utilisez le pilote PGX pour remplacer LiB / PQ pour une meilleure prise en charge des performances et de la maintenance; 2. Configurez correctement le pool de connexion (setMaxOpenConns, setMaxidleConns, etc.) pour éviter l'épuisement des ressources; 3. Utilisez pgx.NamedArgs pour obtenir une requête de paramètre nommée claire et sécurisée; 4. Utilisez SQL.NULLSTRING ou POINTER pour gérer correctement les valeurs nulles; 5. Toujours deffertx.rollback () dans les transactions pour éviter la fuite de connexion pendant les erreurs; 6. Stick pour utiliser les paramètres d'espace réservé pour empêcher l'injection SQL; 7. Vous pouvez utiliser directement l'interface native PGX pour améliorer l'efficacité des scénarios à haute performance.

Comment se remettre d'une panique en Go?Comment se remettre d'une panique en Go?Jul 23, 2025 am 04:11 AM

La panique est comme un programme "cardiaque" en Go. Le récupération peut être utilisé comme "outil de premiers soins" pour éviter les accidents, mais récupérer ne prend effet que dans la fonction de différence. 1. Le débit est utilisé pour éviter les laps de service, les journaux de journaux et les erreurs amicales de retour. 2. Il doit être utilisé en conjonction avec un repère et ne prend effet que sur la même goroutine. Le programme ne revient pas au point de panique après la récupération. 3. Il est recommandé de l'utiliser au niveau supérieur ou à l'entrée critique, et ne vous en abusez pas, et n'accordez pas la priorité à l'utilisation du traitement des erreurs. 4. Le modèle commun est d'encapsuler des fonctions Saferun pour envelopper une éventuelle logique de panique. Ce n'est qu'en maîtrisant ses scénarios d'utilisation et ses limitations qu'il peut jouer correctement son rôle.

GO SURCing d'événements et conception axée sur le domaineGO SURCing d'événements et conception axée sur le domaineJul 23, 2025 am 04:09 AM

Cinq points clés doivent être prêts à prêter attention dans la pratique des événements de l'espèce et du DDD dans GO. 1. La structure de l'événement doit être claire et stable. La dénomination du champ utilise le passé, y compris l'ID racine globale, l'horodatage, le type d'événement et la charge utile, et le numéro de version est ajouté pour prendre en charge l'expansion; 2. La racine agrégée est séparée du stockage d'événements, de la lecture et de l'écriture d'événements abstraits via l'interface d'entreposage, et la racine agrégée ne traite que les commandes et génère des événements; 3. Le modèle de requête adopte le mode CQRS, souscrit à la structure de données optimisée après la mise à jour et l'optimisation du flux d'événements pour améliorer l'efficacité de la requête; 4. La rediffusion de l'événement doit assurer la commande et l'idémpotence, et il est recommandé d'introduire un mécanisme instantané pour accélérer la reconstruction de l'État; 5. La solution de base peut être construite par les structures et les interfaces sur la mise en œuvre de GO, en se concentrant sur la conception d'événements, l'isolement logique et la séparation du modèle de lecture et d'écriture.

See all articles

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Oguri Cap Build Guide | Un joli Musume Derby
3 Il y a quelques semainesByJack chen
Pic comment émoter
4 Il y a quelques semainesByJack chen

Outils chauds

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

mPDF

mPDF

mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) ​​et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP