ログ収集シナリオでのクライアント評価
データ技術 (DT) の時代には、何億ものサーバー、モバイル端末、およびネットワークデバイスが毎日大量のログを生成します。 集中型ログ処理ソリューションは、ログデータのライフサイクルにおけるログ消費要件を効果的に満たします。 ログを消費する前に、デバイスからログを収集し、最初にクラウドに同期する必要があります。
3つのログ収集ツール
- Logstash
- ELKスタックの一部として、Logstashはオープンソースコミュニティで活動しています。 エコシステム内の広範なプラグインで動作します。
- LogstashはJRubyでコーディングされており、Java仮想マシン (JVM) 上のプラットフォーム間で実行できます。
- モジュール設計により、Logstashは高いスケーラビリティと相互運用性を備えています。
- Fluentd
- Fluendtdは、オープンソースコミュニティで人気のあるログ収集ツールです。 そのコアコンポーネントであるtdエージェントは、Treasure Dataによって市販されており、維持されています。 このトピックでは、Fluentdが評価用に選択されています。
- FluentdはCRubyでコード化されています。 そのパフォーマンスに関連するいくつかの重要なコンポーネントは、Cで再コード化されます。Fluentdの全体的なパフォーマンスは優れています。
- Fluentdはシンプルなデザインで、パイプラインで信頼性の高いデータ伝送を提供します。
- Logstashと比較して、Fluentdのプラグインは少なくなっています。
- Logtailは
- As生産者のAlibaba Cloud Log Service、Logtailビッグデータシナリオでテストされていで長年Alibaba Group。
- LogtailはC ++ でコーディングされており、安定性、リソース制御、および管理において優れたパフォーマンスを発揮します。
- LogstashやFluentdと比較して、Logtailはオープンソースコミュニティからのサポートが少なく、ログ収集に重点を置いています。
機能の比較
機能 | Logstash | Fluentd | Logtailは |
---|---|---|---|
ログデータの読み取り | 投票 | 投票 | イベントによるトリガー |
ファイル回転 | 対応 | 対応 | 対応 |
ローカルチェックポイントに基づくフェイルオーバー処理 | 対応 | 対応 | 対応 |
一般的なログ解析 | 正規表現に基づくGrokを使用した解析 | 正規表現を使用した解析 | 正規表現を使用した解析 |
特定のログタイプ | 区切り文字、キー値、JSONなどの主流形式 | 区切り文字、キー値、JSONなどの主流形式 | 区切り文字、キー値、JSONなどの主流形式 |
伝送のためのデータ圧缩 | プラグインでサポート | プラグインでサポート | LZ4 |
Data filtering | 対応 | 対応 | 対応 |
伝送用データバッファ | プラグインでサポート | プラグインでサポート | 対応 |
送信例外処理 | プラグインでサポート | プラグインでサポート | 対応 |
ランタイム環境 | JRubyでコード化され、JVM環境に依存 | CRubyとCでコード化され、Ruby環境に依存 | ランタイム環境の特別な要件なしで、C ++ でコード化 |
スレッドのサポート | マルチスレッド | グローバルインタプリタロック (GIL) によって制限されるマルチスレッド | マルチスレッド |
ホットアップグレード | 非対応 | 非対応 | 対応 |
集中構成管理 | 非対応 | 非対応 | 対応 |
実行中ステータスのセルフチェック | 非対応 | 非対応 | CPUまたはメモリしきい値保護をサポート |
ログ収集シナリオでのパフォーマンス比較
たとえば、次のNginxアクセスログには365バイトが含まれており、そこから14のフィールドを抽出できます。
シミュレートされたテストシナリオでは、このログは、異なる圧縮比で繰り返し書き込まれる。 各ログの時間フィールドは、ログが書き込まれるときに現在のシステム時間に設定され、他の13のフィールドは同じです。 Compared実際シナリオ、模擬シナリオは差がない解析でログ。 Theのみが違い高データ圧縮比低減することができるネットワーク上のトラフィック書き込みデータ。
Logstash
In Logstash 2.0.0、Logstash parsesログを使用してGrokと書き込みログにKafka内蔵使用してプラグイン可能GZIP圧縮。
ログ解析設定:
grok {
patterns_dir=>"/home/admin/workspace/survey/logstash/patterns"
match =>{ "message"=>"%{IPORHOST:ip} %{USERNAME:rt} - \[%{HTTPDATE:time}\] \" %{WORD:method} %{DATA:url}\"%{NUMBER:status} %{NUMBER:size} \" %{DATA:ref} "agent}\" \"%{DATA:cookie_unb}\" \"%{DATA:cookie_cookie2}\" \"%{DATA:monitor_traceid}\" %{WORD:cell} %{WORD:ups} %{BASE10NUM:remote_port}"}
remove_field=>["メッセージ"]
}
次の表にテスト結果を示します。
1秒あたりの書き込みトランザクション数 (TPS) | 書き込みトラフィック (単位: KB/s) | CPU使用率 (単位: %) | メモリ使用量 (単位: MB) |
---|---|---|---|
500 | 178.22 | 22.4 | 427 |
1,000 | 356.45 | 46.6 | 431 |
5,000 | 1,782.23 | 221.1 | 440 |
10,000 | 3,564.45 | 483.7 | 450 |
Fluentd
td-agent 2.2.1では、Fluentdは正規表現を使用してログを解析し、GZIP圧縮を有効にするサードパーティ製プラグインfluent-plugin-Kafkaを使用してログをkafkaに書き込みます。
ログ解析設定:
<source>
タイプテール
format /^(? <ip>\S +)\s(? <rt>\d +)\s-\s\[(? <time>[^\]]*)\]\s "(? <url>[^\"]+)"\s(? <status>\d +)\s(? <size>\d +)\s "(? <ref>[^\"]+)"\s "(? <agent>[^\"]+)"\s "(? <cookie_unb>\d +)"\s"(? <cookie_cookie2>\w +)"\s"(?
<monitor_traceid>\w +)"\s(? <cell>\w +)\s(? <ups>\w +)\s(? <remote_port>\d +) 。*$/
time_format % d/% b/% Y:% H:% M:% S % z
path /home/admin/workspace/temp/mock_log/access.log
pos_file /home/admin/workspace/temp/mock_log/nginx_access.pos
タグnginx.access
</source>
次の表にテスト結果を示します。
TPSの書き込み | 書き込みトラフィック (単位: KB/s) | CPU使用率 (単位: %) | メモリ使用量 (単位: MB) |
---|---|---|---|
500 | 178.22 | 13.5 | 61 |
1,000 | 356.45 | 23.4 | 61 |
5,000 | 1,782.23 | 94.3 | 103 |
説明 GILの制限により、Fluentdの単一プロセスは1つのCPUコアのみを使用します。 マルチプロセスプラグインをインストールして複数のプロセスを使用し、より高いログスループットを実現できます。
Logtail
Logtail 0.9.4では、Logtailは正規表現を使用してログフィールドを抽出し、LZ4圧縮アルゴリズムを使用してデータを圧縮し、HTTPに準拠してデータをAlibaba Cloud log Serviceに書き込みます。 batch_sizeパラメーターは4000に設定されています。
ログ解析設定:
logRegex : (\S +)\s(\d +)\s-\s\[([^]]+)]\s "([^"]+)"\s(\d +)\s(\d +)\s"([^ "]+)"\s "([^"]+)"\s"(\d ") +)"\s "(\w +)"\s "(\w +)"\s(\w +)\s(\w +)\s(\d +) 。*
キー: ip、rt、time、url、status、size、ref、agent、cookie_unb、cookie_cookie2、monitor_traceid、cell、ups、remote_port
timeformat : % d/% b/% Y:% H:% M:% S
次の表にテスト結果を示します。
TPSの書き込み | 書き込みトラフィック (単位: KB/s) | CPU使用率 (単位: %) | メモリ使用量 (単位: MB) |
---|---|---|---|
500 | 178.22 | 1.7 | 13 |
1,000 | 356.45 | 3 | 15 |
5,000 | 1,782.23 | 15.3 | 23 |
10,000 | 3,564.45 | 31.6 | 25 |
シングルコアCPU処理能力の比較
概要
The 3ログ収集ツールが独自の長所と短所:
- Logstashはすべての主流ログタイプ、最も豊富なプラグイン、と柔軟なカスタマイズ。 However、そのパフォーマンスログコレクションは比較的低、と必要高メモリ使用量JVM環境で実行しているとき。
- Fluentdは、すべての主流ログタイプと多くのプラグインをサポートします。 Itsパフォーマンスログコレクションは良好である。
- Logtail占有最少のCPUとメモリリソース機、達成高性能スループット、かつ包括的なサポート一般的なログコレクション。 ただし、プラグインのサポートが不足しているため、前の2つのツールよりも柔軟性とスケーラブル性が低くなります。