ホームページ > バックエンド開発 > Golang > Beego でのログ収集と分析に ELK を使用する

Beego でのログ収集と分析に ELK を使用する

PHPz
リリース: 2023-06-23 09:34:40
オリジナル
1264 人が閲覧しました

Beego でのログ収集と分析に ELK を使用する

ELK は非常に人気のあるログ収集および分析ツール セットであり、Elasticsearch、Logstash、Kibana の 3 つのオープン ソース ソフトウェアで構成されています。このツールセットを使用すると、大量のログ データをリアルタイムで検索、分析、視覚化できます。

Web アプリケーションの開発において、ログは、アプリケーションの動作の追跡、デバッグ、パフォーマンスの最適化に使用できる非常に便利な情報源です。 Beego は、Go 言語で書かれたオープンソースの Web フレームワークで、ログの収集と分析に ELK を簡単に使用できます。

この記事では、ログの収集と分析のために Beego で ELK を設定および使用する方法と、データ視覚化のために Kibana を使用する方法を紹介します。

1. ELK のインストールと設定

最初に ELK をインストールして設定する必要があります。ELK ソフトウェア パッケージの最新バージョンは公式 Web サイトからダウンロードできます: https://www.elastic .co/downloads/

ELK をインストールするには、まず Java をインストールして JAVA_HOME 環境変数を設定し、次に ELK パッケージを解凍して、Elasticsearch と Kibana を起動する必要があります:

cd elasticsearch-7.6.0/bin
./elasticsearch

cd kibana-7.6.0/bin
./kibana
ログイン後にコピー

次に、Logstash 構成ファイル logstash を編集します。 .conf、入力、フィルター、出力を構成します:

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

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

output {
    elasticsearch {
        hosts => ["localhost:9200"]
        index => "%{type}-%{+YYYY.MM.dd}"
    }
}
ログイン後にコピー

この構成ファイルは、Logstash がポート 5000 で TCP 接続をリッスンし、JSON エンコードとデコードを使用することを指定します。 Beego アプリケーションによって送信されたログ メッセージが受信されると、正規表現 grok フィルターを使用してログ メッセージが解析されます。解析されたログ メッセージは Elasticsearch に出力されます。

2. Beego アプリケーションでの ELK の使用

Beego アプリケーションでログ ライブラリとして logrus を使用すると、ログを 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
}
ログイン後にコピー

Thisコード スニペットでは、まず logrus ライブラリを使用してロガーを初期化し、ログをファイルと標準出力に出力します。次に、logrusHook を追加して、JSON 形式のログ メッセージをログに記録されるたびに Logstash サーバーに送信します。

logrus を Beego アプリケーションのログ ライブラリとして使用すると、非常に便利です。コードに logrus ライブラリをインポートし、logrus.WithFields() メソッドを使用してログ情報をフォームに記録するだけです。キーと値のペアの。

3. データ視覚化に Kibana を使用する

Kibana は、ログ データのクエリ、視覚化、分析ができる Web インターフェイスであり、Elasticsearch からデータを取得して視覚化できます。ブラウザで Kibana のアドレス (通常は http://localhost:5601) を開き、[検出] メニューを選択して、収集されたログ データを検索して視覚化します。

Kibana では、ダッシュボードを作成して複数のクエリをまとめて視覚化し、システムの実行ステータスを監視できます。フィルターとタグを使用して、データをより正確にクエリおよび視覚化することもできます。

4. 概要

Beego アプリケーションでのログ収集と分析に ELK を使用することは、非常に便利で実用的な方法です。 ELK は、アプリケーションの問題を迅速に特定し、パフォーマンスを最適化するための柔軟なログ フィルタリングおよび視覚化機能を提供します。同時に、アプリケーションの実行状況を視覚化とダッシュボードを通じてより直感的に監視できます。

以上がBeego でのログ収集と分析に ELK を使用するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート