ログ収集シナリオでのクライアント評価

データ技術 (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つのツールよりも柔軟性とスケーラブル性が低くなります。