Maison > développement back-end > Golang > Utilisation 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

PHPz
Libérer: 2023-06-23 09:34:40
original
1269 Les gens l'ont consulté

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
Copier après la connexion

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}"
    }
}
Copier après la connexion

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
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal