Beego は、迅速な開発と簡単な拡張をサポートする効率的な Go 言語 Web フレームワークです。実際のアプリケーションでは、有用な情報や知識を得るために大量の Web ログ データを収集および分析する方法に直面することがよくあります。この記事では、Flume と Kafka を使用して Beego Web ログ データを収集および分析する方法を紹介します。
Flume は、さまざまなデータ ソースやさまざまなストリーミング データ パイプラインからの大量のログ データの収集、集約、送信をサポートできる、信頼性が高くスケーラブルな分散ログ収集、集約、および送信システムです。 Kafka は、大量のリアルタイム データ ストリームを処理でき、シンプルな水平スケーラビリティと柔軟なスケーラビリティを備えた、高スループット、分散型、耐久性の高いメッセージ ミドルウェア システムです。これらはすべて、Apache Foundation によってサポートおよび維持されているオープン ソース プロジェクトです。
1. Flume のインストールと設定
まず、Flume をインストールして設定する必要があります。この記事では、Flume バージョン 1.9.0 を使用し、ローカル環境でテストします。 Flume は公式 Web サイト http://flume.apache.org/download.html からダウンロードできます。
Flume をインストールした後、Flume エージェント構成ファイルを構成する必要があります。この記事では、Flume の簡単な設定方法を使用します。 Flume インストール ディレクトリに flume.conf という名前の設定ファイルを作成し、その中に Flume エージェントを定義する必要があります。
flume.conf ファイルでは、以下に示すように、ソース、チャネル、シンクを含む Flume エージェントを定義する必要があります。
agent.sources = avro-source agent.channels = memory-channel agent.sinks = kafka-sink # Define the source agent.sources.avro-source.type = avro agent.sources.avro-source.bind = localhost agent.sources.avro-source.port = 10000 # Define the channel agent.channels.memory-channel.type = memory agent.channels.memory-channel.capacity = 10000 # Define the sink agent.sinks.kafka-sink.type = org.apache.flume.sink.kafka.KafkaSink agent.sinks.kafka-sink.kafka.bootstrap.servers = localhost:9092 agent.sinks.kafka-sink.kafka.topic = beego-log agent.sinks.kafka-sink.batchSize = 20 agent.sinks.kafka-sink.requiredAcks = 1 # Bind the source and sink to the channel agent.sources.avro-source.channels = memory-channel agent.sinks.kafka-sink.channel = memory-channel
上記の設定ファイルでは、名前を定義します。 avro-source のソース。そのタイプは avro です。マシンのローカルホスト上のポート 10000 をリッスンし、Beego Web ログ データを受け入れます。また、メモリに最大 10,000 個のイベントを保存できる、タイプがメモリである、memory-channel という名前のチャネルを定義します。また、Beego Web ログ データがトピックに送信される、タイプが KafkaSink である kafka-sink という名前のシンクを提供します。 Kafka では beego-log という名前です。この構成では、batchSize (毎回 Kafka に書き込まれるメッセージの数) や requiredAcks (確認応答が必要な Kafka に書き込まれるメッセージの数) など、KafkaSink のいくつかのプロパティも設定します。
2. Kafka のインストールと構成
次に、Kafka をインストールして構成する必要があります。この記事では、Kafka バージョン 2.2.0 を使用し、ローカル環境でテストします。 Kafka は、公式 Web サイト http://kafka.apache.org/downloads.html からダウンロードできます。
Kafka をインストールした後、beego-log という名前のトピックを作成する必要があります。以下に示すように、Kafka のコマンド ライン ツールを使用してトピックを作成できます:
bin/kafka-topics.sh --zookeeper localhost:2181 --create --replication-factor 1 --partitions 1 --topic beego-log
上記のコマンドでは、 Kafka のコマンド ライン ツール kafka-topics.sh を使用して beego-log という名前のトピックを作成し、レプリケーション係数 (replication-factor) を 1 として、パーティション (partitions) を 1 として指定し、ZooKeeper のアドレスを localhost:2181 として使用します。
3. Beego Web Framework のアプリケーション
Beego Web Framework を使用して、簡単な Web アプリケーションを作成し、Web ログ データを記録します。この記事では、以下に示すように、コントローラーとルーターが 1 つだけあるアプリケーションを作成します。
package main import ( "github.com/astaxie/beego" ) type MainController struct { beego.Controller } func (c *MainController) Get() { // do something c.Ctx.WriteString("Hello, World!") } func main() { beego.Router("/", &MainController{}) beego.Run() }
上記のアプリケーションでは、MainController のコントローラーというアプリケーションを作成しました。このアプリケーションには Get メソッドが 1 つだけあります。 Get メソッドでは、いくつかのロジックを実装し、クライアントにメッセージを返します。 Beego のルーティング関数を使用して、ルート パス「/」を MainController の Get メソッドにマッピングしました。
Beego の設定ファイルでロギング (ログ) 機能を有効にし、ログ レベルをデバッグに設定して、より詳細な情報を記録および追跡できます。 Beego の設定ファイル app.conf に次の内容を追加する必要があります:
appname = beego-log httpport = 8080 runmode = dev [log] level = debug [[Router]] Pattern = / HTTPMethod = get Controller = main.MainController:Get
上記の設定ファイルでは、アプリケーション名、HTTP ポート、動作モード、およびログ レベルを定義します。また、Router という名前のルートを指定し、MainController という名前のコントローラーを定義し、ルート パス「/」を Get メソッドにマップしました。
4. ログ収集と分析に Flume と Kafka を使用する
単純な Beego アプリケーションと Flume エージェントができたので、それらを統合し、Kafka を使用してログ収集と分析を実行できます。
Beego アプリケーションを起動し、それに HTTP リクエストを送信して、ログ データを生成します。次のように、curl コマンドを使用して HTTP リクエストを Beego に送信できます:
$ curl http://localhost:8080/ Hello, World!
Flume エージェントを起動し、次のコマンドを使用して開始します:
$ ./bin/flume-ng agent --conf ./conf --conf-file ./conf/flume.conf --name agent --foreground
上記のコマンドでは、 Flume のコマンドライン ツール flume-ng を使用して、agent という名前の Flume エージェントを起動し、設定ファイルを ./conf/flume.conf として指定します。
これで、Kafka で Beego Web ログ データを表示できるようになりました。以下に示すように、Kafka のコマンド ライン ツール kafka-console-consumer.sh を使用して、beego-log トピックからのデータを使用できます。
$ bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic beego-log --from-beginning
上記のコマンドでは、Kafka のコマンド ライン ツール kafka-console- を使用します。 Consumer.sh を使用してコンシューマを起動し、beego-log という名前のトピックからデータを消費します。 --from-beginning オプションを使用して、最も古いメッセージから消費を開始します。
Beego アプリケーションをリクエストすると、Flume はログ イベントを収集し、メモリ内チャネルに保存して、beego-log という名前の Kafka トピックに転送します。 Kafka のコマンド ライン ツールまたは API を使用して、これらのログ データを消費および処理して、より貴重な情報と洞察を取得できます。
5. 概要
この記事では、Flume と Kafka を使用して Beego Web ログ データを収集および分析する方法を紹介します。まず Flume と Kafka をインストールして構成し、次に単純な Beego アプリケーションを作成してそのログ機能を構成しました。最後に、シンプルな Flume エージェントを作成し、ログの収集と分析に Kafka を使用して Beego アプリケーションと統合しました。
実際のアプリケーションでは、ニーズやシナリオに応じて Flume と Kafka のパラメーターとプロパティを柔軟に構成およびカスタマイズできるため、さまざまなデータ ソースや処理タスクにうまく適応し、より貴重な情報を取得できます。知識。
以上がBeego で Flume と Kafka を使用してログの収集と分析を行うの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。