Heim > Backend-Entwicklung > Golang > Verwendung von ELK zur Protokollerfassung und -analyse in Beego

Verwendung von ELK zur Protokollerfassung und -analyse in Beego

PHPz
Freigeben: 2023-06-23 09:34:40
Original
1263 Leute haben es durchsucht

Verwendung von ELK zur Protokollerfassung und -analyse in Beego

ELK ist ein sehr beliebtes Protokollerfassungs- und Analysetoolset, das aus drei Open-Source-Software besteht: Elasticsearch, Logstash und Kibana. Mit diesem Toolset können große Mengen an Protokolldaten in Echtzeit durchsucht, analysiert und visualisiert werden.

Bei der Entwicklung von Webanwendungen sind Protokolle eine sehr nützliche Informationsquelle, die zum Verfolgen des Anwendungsverhaltens, zum Debuggen und zur Leistungsoptimierung usw. verwendet werden kann. Beego ist ein in der Go-Sprache geschriebenes Open-Source-Webframework, das ELK problemlos zur Protokollerfassung und -analyse verwenden kann.

In diesem Artikel erfahren Sie, wie Sie ELK in Beego für die Protokollerfassung und -analyse konfigurieren und verwenden und wie Sie Kibana für die Datenvisualisierung verwenden.

1. ELK installieren und konfigurieren

Zuerst müssen Sie ELK installieren und konfigurieren. Sie können die neueste Version des ELK-Softwarepakets auf der offiziellen Website herunterladen: https://www.elastic.co/downloads/

Installing ELK erfordert zuerst die Installation von Java. Legen Sie dann die Umgebungsvariable JAVA_HOME fest, entpacken Sie dann das ELK-Paket und starten Sie Elasticsearch und Kibana:

cd elasticsearch-7.6.0/bin
./elasticsearch

cd kibana-7.6.0/bin
./kibana
Nach dem Login kopieren

Bearbeiten Sie dann die Logstash-Konfigurationsdatei logstash.conf und konfigurieren Sie Eingabe, Filter und Ausgabe:

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

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

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

Diese Konfiguration Die Datei gibt an, dass Logstash die TCP-Verbindung über Port 5000 überwacht und JSON-Kodierung und -Dekodierung verwendet. Wenn eine von einer Beego-Anwendung gesendete Protokollnachricht empfangen wird, wird die Protokollnachricht mithilfe eines Grok-Filters für reguläre Ausdrücke analysiert. Die geparsten Protokollmeldungen werden dann an Elasticsearch ausgegeben.

2. Verwenden Sie ELK in der Beego-Anwendung.

Verwenden Sie Logrus als Protokollbibliothek in der Beego-Anwendung, und Sie können Protokolle an den Logstash-Server senden:

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
}
Nach dem Login kopieren

In diesem Codeausschnitt verwenden Sie zuerst die Logrus-Bibliothek, um den Logger zu initialisieren, und dann Protokollausgabe in Dateien und Standardausgabe. Fügen Sie dann einen logrusHook hinzu, um bei jeder Protokollierung eine JSON-formatierte Protokollnachricht an den Logstash-Server zu senden.

Es ist sehr praktisch, Logrus als Protokollierungsbibliothek in Beego-Anwendungen zu verwenden. Sie müssen nur die Logrus-Bibliothek in den Code importieren und dann die Methode logrus.WithFields() verwenden, um Protokollinformationen in Form eines Schlüsselwerts aufzuzeichnen Paare.

3. Verwenden Sie Kibana zur Datenvisualisierung.

Kibana ist eine Weboberfläche, die Protokolldaten abfragen, visualisieren und analysieren kann. Sie kann Daten aus Elasticsearch abrufen und visualisieren. Öffnen Sie die Adresse von Kibana in einem Browser, normalerweise http://localhost:5601, und wählen Sie das Menü „Entdecken“, um die gesammelten Protokolldaten zu durchsuchen und anzuzeigen.

Dashboards können in Kibana erstellt werden, um mehrere Abfragen zusammen zu visualisieren und so den Zustand des Systems zu überwachen. Auch Filter und Tags können genutzt werden, um die Daten genauer abzufragen und zu visualisieren.

4. Zusammenfassung

Die Verwendung von ELK zur Protokollerfassung und -analyse in der Beego-Anwendung ist eine sehr praktische und praktische Methode. ELK bietet flexible Protokollfilter- und Visualisierungsfunktionen, um Anwendungsprobleme schnell zu lokalisieren und die Leistung zu optimieren. Gleichzeitig kann der Laufstatus der Anwendung durch Visualisierung und Dashboards intuitiver überwacht werden.

Das obige ist der detaillierte Inhalt vonVerwendung von ELK zur Protokollerfassung und -analyse in Beego. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage