Alibaba Cloud Logstash は、オープンソースの Logstash と使用方法およびチューニングの点で同じです。Logstash パイプラインを使用したデータ処理は、入力、フィルター、出力の各ステージで構成されます。各ステージでは、データは独立したワーカースレッドによって処理されます。入力ステージでは、イベントはメモリまたはディスクの中央キューに書き込まれます。デフォルトでは、イベントはメモリの中央キューに書き込まれます。各パイプラインワーカースレッドは、中央キューからイベントのバッチを抽出します。フィルターステージでは、イベントが処理されます。出力ステージでは、処理されたイベントが宛先に転送されます。このトピックでは、Logstash のパフォーマンス問題のトラブルシューティング方法について説明します。このトピックで提供される手順は参考用です。
モニタリングの有効化
Alibaba Cloud Logstash クラスタを使用する必要がある場合は、次の方法を使用して、クラスタのモニタリングとアラートを設定することをお勧めします。
- Alibaba Cloud CloudMonitor で Logstash クラスタのカスタムアラートポリシーを設定する: Alibaba Cloud CloudMonitor で Logstash クラスタのカスタムアラートポリシーを設定すると、Logstash クラスタに関連するシステムメトリックのモニタリングデータを取得できます。詳細については、「カスタムアラートポリシーの設定」をご参照ください。
- X-Pack Monitoring 機能を有効にする: Logstash クラスタの X-Pack Monitoring 機能を有効にする場合は、Logstash クラスタに関連付けられている Alibaba Cloud Elasticsearch クラスタが、Logstash クラスタと同じ仮想プライベートクラウド (VPC) に存在することを確認する必要があります。 Logstash クラスタの CPU 使用率やメモリ使用量、Logstash クラスタがイベントを受信する速度、Logstash クラスタが処理済みイベントを転送する速度など、メトリックのモニタリングデータを取得できます。詳細については、「X-Pack Monitoring 機能の有効化」をご参照ください。
デバッグの推奨事項
- デバッグ中は、一度に 1 つのパラメーターの値をデバッグし、値を徐々に増減することをお勧めします。このプロセス中に、ソースと宛先のデータ書き込みとデータ消費の変化を観察できます。
- Logstash クラスタのシステムリソースが十分な場合は、最初に Pipeline Batch Size パラメーターの値をデバッグすることをお勧めします。宛先に書き込むことができるデータ量が上限に達したら、Pipeline Workers パラメーターの値をデバッグできます。Elasticsearch クラスタにデータを書き込む場合は、バルク書き込みリクエストで一度に書き込むデータ量を約 5 MB のサイズに設定することをお勧めします。詳細については、「パイプラインパラメーターの設定の確認」をご参照ください。
- デバッグ中は、ソース、Logstash クラスタ、および宛先の負荷に注意を払い、急増する例外を処理するために十分なヒープメモリが使用可能であることを確認する必要があります。詳細については、「Logstash クラスタのパフォーマンスの確認」をご参照ください。説明 Logstash は、パイプラインを使用してイベントを処理します。処理速度は、ソースと宛先の消費能力によって異なります。
- Logstash クラスタに logstash-output-file_extend プラグインをインストールできます。このようにして、Logstash パイプラインが開始された後、デバッグログに基づいてビジネスデータの処理の詳細を分析できます。詳細については、「パイプライン設定デバッグ機能の使用」をご参照ください。
Logstash クラスタのパフォーマンスの確認
説明 Logstash クラスタのリソースが完全に活用されている場合、データスループットを向上させることができます。Logstash クラスタの CPU またはメモリリソースが完全に活用されていない場合、リソースの仕様を増やしてもデータスループットは向上しません。
CPU
モニタリングデータに基づいて CPU 使用率を表示できます。Logstash クラスタの CPU 使用率が過度に高い場合は、Logstash クラスタのヒープメモリ使用量に注意する必要があります。
ヒープメモリ
- ほとんどの場合、Logstash クラスタに 4 GB から 8 GB の範囲のヒープメモリサイズを設定できます。リソース不足などの理由でより大きなヒープメモリサイズが必要な場合は、Logstash クラスタをスケールアウトできます。それ以外の場合は、Logstash クラスタのヒープメモリサイズを増やす必要はありません。本番環境でクラスタを使用する前に、Logstash クラスタでテストを実行し、ビジネス要件に基づいてクラスタのヒープメモリサイズを設定することをお勧めします。
- ヒープメモリ使用量が過度に高いか低すぎると、頻繁なガベージコレクション (GC) が発生し、CPU 使用率が増加します。Logstash クラスタの元のメモリサイズの 2 倍のメモリサイズを設定し、Logstash クラスタのパフォーマンスが向上するかどうかを確認することをお勧めします。
- オープンソース Logstash のベストプラクティスに基づいて、同じサイズのヒープメモリとオフヒープメモリを設定することをお勧めします。
パイプラインパラメーターの設定の確認
- Pipeline Workers: このパラメーターは、イベントのフィルタリングと、イベントの処理後の出力結果の転送に使用されるワーカースレッドの数を指定します。デフォルトでは、このパラメーターは、Logstash クラスタ内のノードの vCPU の数に設定されています。Logstash クラスタの CPU 使用率が高くない場合は、このパラメーターの値を増やしてイベント処理のパフォーマンスを向上させることができます。
- Pipeline Batch Size: このパラメーターは、フィルターステージと出力ステージで各ワーカースレッドによって処理されるイベントの数を指定します。このパラメーターの値を増やすと、イベント処理の効率を向上させることができます。このパラメーターは、Elasticsearch のバルク設定に対応しています。
一般的なシナリオ
Kafka
Kafka でメッセージの累積が発生した場合、Kafka のメッセージ消費能力を向上させるにはどうすればよいですか?
次の方法を使用して、Kafka のメッセージ消費能力を向上させることができます。詳細については、オープンソース Logstash のドキュメントのヒントとベストプラクティスを参照してください。Kafka のメッセージ消費能力を向上させるには、いずれかの方法を単独で使用するか、すべての方法を同時に使用できます。
- 大量のデータが存在するシナリオでは、Logstash クラスタ内のノードの数に各ノードのコンシューマースレッドの数を掛けて、Kafka トピックのパーティション数を決定できます。説明 パーティションが多いほど、オーバーヘッドが増えます。ビジネス要件に基づいてパーティションを設定することをお勧めします。
- Logstash クラスタ内の複数のパイプラインの設定で同じグループ ID を使用して、複数の物理サーバーに負荷を分散できます。トピック内のメッセージは、同じグループのコンシューマーに配信されます。これにより、メッセージ消費能力が向上します。
- Pipeline Workers パラメーターの値と Pipeline Batch Size パラメーターの値を増やすことができます。