Logstashのスケーリング(redis / elasticsearchを使用)
12 Centos 5.8サーバー以上のクラスター上で、ネイティブのLogstash Shipperを使用してlogstashをデプロイしました。これ/var/log/*/*.logは中央のlogstashサーバーに送り返します。 出荷者としてrsyslogdを使用しようとしましたが、rsyslogdのImFileモジュールのバグにより、リモートエンドが応答しない場合、ログがメモリに蓄積されます。 現在、Redisをトランスポートメカニズムとして使用しているため、logstash01はこれらのログのVLANのIPにバインドされたローカルで実行されているredisを持っています。 そのため、logstash-shipperはlogstash01のredisに送信します。logstash01は、別のプロセスで実行されているElasticsearchに送信します。 これが私たちが見ているものです。Elasticsearchには141個のブロックされたスレッドがあります。elasticsearchの親をたどることは以下を示します: futex(0x7f4ccd1939d0, FUTEX_WAIT, 26374, NULL ここにelasticsearchのjstackがあります これがlogstashのjstackです だから..昨夜、いくつかのウェブサーバー(ログはlogstashに追尾されています)が狂ってしまい、平均負荷は500を超えました。 logstash01には、これがあります Dec 19 00:44:45 logstash01 kernel: [736965.925863] Killed process 23429 (redis-server) total-vm:5493112kB, anon-rss:4248840kB, file-rss:108kB その後、もの..出荷されたサーバ上のメモリに積み上げログ意味のRedisサーバ、殺さOOM-killerがそう何とか Apacheはツイストでその半ズボンを取得することを意味します。(率直に言って、どのように私はそれがわからない、私はちょうどそれがログを尾行していると仮定する)。 これは、イベントがどのように展開したかに関する私の理論です。 トラフィックが急増しました。 膨大な量のログが生成されました。 これらはRedisに積み上げられ、logstash / elasticsearchは300〜400個の新しいイベント/秒しか処理できないようです。 RedisはOOM-killerが無意味に虐殺するまで完全にいっぱいになっていた。 Redisは新しいアイテムの受け入れを停止します。 アイテムは、リモートホスト側で積み上げられます。 すべてがおかしい。Apacheはリクエストの受け入れを停止します。(なぜ?)。 質問は次のとおりです。 ログの末尾に何かが残っているだけで、Apacheがおかしくなるのはなぜですか。apacheが書くことをブロックするのはそれが原因ですか? elasticsearchをより速く/より良く/弾力的にする正しい方法はありますか? redisを弾力的にし、OOMされたために死なないようにする正しい方法はありますか 私がそれをすべて設定した方法に根本的な欠陥がありますか、または誰もがこの問題を抱えていますか? -編集- @lusisのいくつかの仕様。 admin@log01:/etc/init$ free …