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 サイトの他の関連記事を参照してください。