Rumah >pembangunan bahagian belakang >Golang >Menggunakan ELK untuk pengumpulan dan analisis log dalam Beego

Menggunakan ELK untuk pengumpulan dan analisis log dalam Beego

PHPz
PHPzasal
2023-06-23 09:34:401269semak imbas

Menggunakan ELK dalam Beego untuk pengumpulan dan analisis log

ELK ialah set alat pengumpulan dan analisis log yang sangat popular, yang terdiri daripada tiga perisian sumber terbuka: Elasticsearch, Logstash dan Kibana. Set alat ini boleh digunakan untuk mencari, menganalisis dan menggambarkan sejumlah besar data log dalam masa nyata.

Dalam pembangunan aplikasi web, log ialah sumber maklumat yang sangat berguna yang boleh digunakan untuk menjejak tingkah laku aplikasi, penyahpepijatan dan pengoptimuman prestasi. Beego ialah rangka kerja web sumber terbuka yang ditulis dalam bahasa Go, yang boleh menggunakan ELK dengan mudah untuk pengumpulan dan analisis log.

Artikel ini akan memperkenalkan cara mengkonfigurasi dan menggunakan ELK dalam Beego untuk pengumpulan dan analisis log, dan cara menggunakan Kibana untuk visualisasi data.

1. Pasang dan konfigurasikan ELK

Mula-mula anda perlu memasang dan mengkonfigurasi ELK Anda boleh memuat turun versi terkini pakej perisian ELK di laman web rasmi: https://www.elastic .co/downloads/

Untuk memasang ELK, anda perlu memasang Java terlebih dahulu dan menetapkan pembolehubah persekitaran JAVA_HOME, kemudian nyahzip pakej ELK, dan mulakan Elasticsearch dan Kibana:

cd elasticsearch-7.6.0/bin
./elasticsearch

cd kibana-7.6.0/bin
./kibana

Kemudian edit Fail konfigurasi Logstash logstash.conf, konfigurasikan input, Penapis dan Output:

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

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

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

Fail konfigurasi ini menentukan bahawa Logstash mendengar sambungan TCP pada port 5000 dan menggunakan pengekodan dan penyahkodan JSON. Apabila mesej log yang dihantar oleh aplikasi Beego diterima, mesej log dihuraikan menggunakan penapis grok ungkapan biasa. Mesej log yang dihuraikan kemudiannya dikeluarkan kepada Elasticsearch.

2. Menggunakan ELK dalam aplikasi Beego

Menggunakan logrus sebagai pustaka log dalam aplikasi Beego, anda boleh menghantar log ke pelayan 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
}

Coretan kod ini, penggunaan pertama perpustakaan logrus untuk memulakan logger dan mengeluarkan log ke fail dan output standard. Kemudian tambahkan logrusHook untuk menghantar mesej log berformat JSON ke pelayan Logstash setiap kali ia dilog.

Adalah sangat mudah untuk menggunakan logrus sebagai perpustakaan pengelogan dalam aplikasi Beego Anda hanya perlu mengimport perpustakaan logrus dalam kod, dan kemudian menggunakan kaedah logrus.WithFields() untuk merekod maklumat log dalam borang. pasangan nilai kunci.

3. Gunakan Kibana untuk visualisasi data

Kibana ialah antara muka web yang boleh membuat pertanyaan, memvisualisasikan dan menganalisis data log dan memvisualisasikannya. Buka alamat Kibana dalam penyemak imbas, biasanya http://localhost:5601, dan pilih menu "Discover" untuk mencari dan menggambarkan data log yang dikumpul.

Papan pemuka boleh dibuat di Kibana untuk menggambarkan berbilang pertanyaan bersama-sama untuk memantau kesihatan sistem. Penapis dan teg juga boleh digunakan untuk membuat pertanyaan dan menggambarkan data dengan lebih tepat.

4. Ringkasan

Menggunakan ELK untuk pengumpulan dan analisis log dalam aplikasi Beego ialah kaedah yang sangat mudah dan praktikal. ELK menyediakan fungsi penapisan dan visualisasi log yang fleksibel untuk mengesan masalah aplikasi dengan cepat dan mengoptimumkan prestasi. Pada masa yang sama, status berjalan aplikasi boleh dipantau dengan lebih intuitif melalui visualisasi dan papan pemuka.

Atas ialah kandungan terperinci Menggunakan ELK untuk pengumpulan dan analisis log dalam Beego. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn