ログ収集シナリオでのクライアント評価
データ技術 (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}\" \"%{DATA:agent}\" \"%{DATA:cookie_unb}\" \"%{DATA:cookie_cookie2}\" \"%{DATA:monitor_traceid}\" %{WORD:cell} %{WORD:ups} %{BASE10NUM:remote_port}" }
remove_field=>["message"]
}
次の表にテスト結果を示します。
1秒あたりの書き込みトランザクション数 (TPS) | 書き込みトラフィック (単位: KB/s) | CPU使用率 (単位: %) | メモリ使用量 (単位: MB) |
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>
type tail
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
tag 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+).*
keys : 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つのツールよりも柔軟性とスケーラブル性が低くなります。