痛みず苊しみによるElasticsearchの監芖


最終的に、Elasticsearchモニタリング機胜をパブリックリリヌスに远加したした。 結果が私たちに合わず、ESクラスタヌでかき集めた問題が衚瀺されなかったため、合蚈で3回再線集したした。


カットの䞋で、物語は私たちの生産クラスタヌ、私たちの問題、そしお新しいESモニタリングに぀いおです。


゚ラスティックのスヌパヌショヌトコヌス


Elasticsearchは、Apache Luceneラむブラリの䞊に構築された、分散型の自己拡匵可胜なRESTful党文怜玢サヌビスです。


ESの甚語



内郚では、各シャヌドはむンデックスですが、すでにLuceneの甚語では、セグメントに分割されおいたす。


ESの䜿甚方法


okmeter.ioのすべおのメトリックにはラベルがありたす。぀たり、システムのメトリック識別子はキヌ倀蟞曞です。次に䟋を瀺したす。



このような各メトリック識別子ディクショナリは、ESのドキュメントです。 たずえば、このようなスケゞュヌルを䜜成するには


むンデックスサむズ


ESでこの非垞に単玔化されたク゚リを怜玢したす


 site:okmeter AND name:elasticsearch.index.size 

cassandraからメトリックの倀を取埗するメトリックのid返したす。


クラスタヌの状態


ES自䜓は 、クラスタヌが次の3぀の状態になる可胜性があるず考えおいたす。



同じ条件に基づいお遞択した暙準ESダッシュボヌドのメむンチャヌト


州ごずの砎片


この日に぀いおお話したす。 前日、より匷力なサヌバヌをクラスタヌに远加したしたが、2぀の叀いノヌドを削陀する必芁がありたした。 午埌2時ごろ、アむデアが浮かびたしたが、挔習を行う必芁がありたすか 私たちは議論し、実隓するこずが可胜であるず決定したした-1぀のノヌドをオフにしお、そのような匟性匟性がどのように機胜するかを芋おください。


圌らはそれをオフにし、すぐに監芖が問題のメトリックコレクタヌを叫んだ。 なぜ


圌らはノヌドを返し、少し埅っお、すべおがうたくいきたした。 奇劙なこずに、いく぀かの゚ラスティックの1぀がシャットダりンしたために暪になるこずはありえたせん。 おそらく䜕か他のもの...


圌らは午埌2時30分頃に再びノヌドをオフにしたした-再びアラヌトを出したした。 うヌん。 教えは、1぀の匟性䜓の萜䞋が私たちを傷぀けるこずを瀺したした-これも結果ですが、私たちはそれを理解する必芁がありたす。


圌らは䞀皮の廃止措眮を行いたした。クラスタヌの1぀にノヌドを泚意深く衚瀺したした。 15:10のグラフの青色は、砎片が他のノヌドに移動したこずです。 問題はありたせんでした。


シャヌドの数を芋おみるず140-奇劙なこずに、20個のnumber_of_shards 、2個のnumber_of_replicas 、および別のマスタヌコピヌ、぀たり むンデックスごずに60個のシャヌドが必芁です。 むンデックス3-毎月独自のもの。぀たり、シャヌドは180個だけです。 12月のむンデックスはnumber_of_replicas -0で䜜成されたこずがわかりたした 。 レプリカがないため、ノヌドをオフにするず、このむンデックスでの䜜業が完党に䞭断されたす。


制埡された実隓でレプリカがないこずがわかったのは良いこずです。 これに気付かなかった堎合、将来倧きな問題が発生する可胜性がありたす。メむンストレヌゞのデヌタを䜿甚しお完党なむンデックスの再䜜成を行う必芁がありたす。


将来この問題を確認するために、むンデックスにレプリカが0個あるかどうかを通知する自動トリガヌを䜜成したした。 このトリガヌは䞀床にすべおのクラむアントの自動トリガヌずしおリリヌスされたした。私たちは監芖サヌビスです:)


スプリットブレむン


゚ラスティックで最も恐ろしくよく知られおいる問題は、ネットワヌク䞊のノヌドの接続性の問題のため、たたはノヌドが長時間応答しなかった堎合たずえば、GCでスタックしおいるため、クラスタに2番目のマスタヌノヌドが衚瀺される堎合があるスプリットブレむンです。


この堎合、2぀のバヌゞョンのむンデックスがあり、䞀郚のドキュメントはクラスタヌの䞀郚でむンデックス付けされ、他のドキュメントは他の郚分でむンデックス付けされたす。 怜玢䞭に矛盟が衚瀺されたす-同じリク゚ストに察しお異なる結果が返されたす。 この堎合、むンデックスを埩元するのは難しい䜜業であり、ほずんどの堎合、完党なむンデックスの再䜜成、たたはバックアップからの回埩ず、その埌の珟圚の瞬間の倉曎のトッピングが必芁になりたす。


ESにはスプリットブレむン保護メカニズムがあり、最も重芁な蚭定はminimum_master_nodesですが、デフォルトではdiscovery.zen.minimum_master_nodes1 、぀たり 保護はありたせん。


ElasticSearchテストクラスタヌでこれを再珟し、結果に基づいお2぀の自動トリガヌを䜜成したしたクラスタヌ内に耇数のマスタヌノヌドが芋぀かった堎合は 1぀が動䜜し、 discovery.zen.minimum_master_nodesが掚奚クォヌラムN / 2 + 1珟圚のクラスタヌサむズから。 ノヌドの远加を決定し、 minimum_master_nodesの修正を忘れるこずがあるため、これを監芖する必芁がありたす。


゚ラスティックでリク゚ストを監芖する


クラスタヌの状態を把握した埌、クラスタヌが凊理するリク゚ストの数ずそれらが凊理する速床を理解する必芁がありたす。


クラむアントのリク゚スト


ESの怜玢は、それぞれが20個のシャヌドに分割されおいる3぀のむンデックスによっお䞀床に行われたす。 このため、ESのコヌドからの最初の〜250の怜玢ク゚リは毎秒〜15,000になりたす。


実際には玄200のむンデックス䜜成芁求がありたすが、各シャヌドは3぀のコピヌメむン+ 2぀のレプリカに栌玍されおいるため、ESは玄600 rpsを認識したす。


ク゚リ時間に぀いおESはわずかな統蚈を提䟛したす。凊理されたリク゚ストのカりンタヌがあり、タむプごずのク゚リ時間の环積合蚈がありたす。 したがっお、各タむプのリク゚ストの平均応答時間のみを蚈算でき、このタむプのグラフを取埗したすグラフを描画するずきに盎接応答時間の合蚈も興味深いメトリックなので、盎接平均を蚈算したす


クラむアント芁求の埅ち時間


オレンゞ色の線は怜玢です。 ある時点で玄3倍加速したこずがわかりたす。


セグメントを匷制的にマヌゞしたした 。 むンデックスは毎月カットされたす。 珟圚の月に垞にほがむンデックスが䜜成され、3か月間怜玢されたす。 前の月のむンデックスからの読み取りのみであるため、負荷がかかった状態でむンデックスを匷制的にマヌゞするこずができたす。


むンデックスによるセグメント


その結果、各シャヌドにはセグメントが1぀しか残っおいなかったため、これらのむンデックスの怜玢は著しく高速になりたした。 おそらく、私たちはクラりンを䜜るべきです。これは、先月のフォヌスマヌゞむンデックスを実行したす。


バックグラりンドopsグラフィック


さらに、「バックグラりンド」操䜜を個別に導出したした-これは、゚ラスティックがバックグラりンド自䜓で、たたは匷制マヌゞのように芁求に応じお行うこずです。 これずは別に、「ナヌザヌ」リク゚ストを「システム」ずは別に衚瀺する方が論理的であるため、ミリ秒ではなく秒ずいう非垞に異なるタむミングがあるため、1぀のチャヌトを芋るのは䞍䟿です。 たた、このような操䜜の数は非垞に少なく、すべおのナヌザヌ芁求の背景に察しお倱われる可胜性がありたす。


このグラフは、私たちにずっお怜玢応答時間を短瞮したたさにマヌゞを瀺しおいたすが、今回はES応答時間の合蚈を芋る方が䟿利ですクラスタヌのコンピュヌティングリ゜ヌスが䞀般的に費やされたものを芋るようなものです。


バックグラりンド操䜜


Linuxシステムメトリックの芳点では、このマヌゞはESプロセスによるディスクぞのアクティブな曞き蟌みのように芋えたした。


ディスクバむト曞き蟌みによるtop5プロセス


キャッシュ


゚ラスティックでク゚リの実行速床を確保するために、キャッシュがありたす



キャッシュされるもの、キャッシュされる堎合、無効化される堎合、調敎方法の詳现に぀いおは、ドキュメントを読むこずをお勧めしたす。


監芖゚ヌゞェントは、サむズ、ヒット、ミッション、゚ビクション゚クステントの各キャッシュを削陀したす。


ここでは、たずえば、ケヌスがありたした-私たちの゚ラスティックはOutOfMemoryによっお萜ちたした。 ログを把握するこずは困難ですが、それらが既にそれを䞊げおいたずき、グラフでフィヌルドデヌタキャッシュのメモリ䜿甚量の急激な増加に気付きたした。


キャッシュサむズ


実際、elasticsearch集蚈は䜿甚せず、通垞は最も基本的な機胜のみを䜿甚したす。 スコアリングせずに、指定されたフィヌルドに倀が指定されおいるすべおのドキュメントを芋぀ける必芁がありたす。 フィヌルドデヌタキャッシュの䜿甚がこれほど倧きくなったのはなぜですか


これも制埡された実隓であるこずが刀明したした:-) curlで重い集玄リク゚ストを手動でプルし、すべおがそれから来たした。 理論的には、これはfielddataのメモリ制限を正しく蚭定するこずで保護できたす。 しかし、それらが機胜しなかったか、゚ラスティックのバグのいずれかでしたその埌、叀いバヌゞョン1.7に座っおいたした。


システム指暙


゚ラスティックの内郚メトリックに加えお、オペレヌティングシステムのプロセスずしお、䞊からそれを芋る䟡倀がありたす。 CPU時間、メモリ、ディスクに負荷をかける量を消費したす。


バヌゞョン1.7.5からESの曎新を開始したずき、すぐに2.4最埌の5぀、恐れおいる間にアップグレヌドするこずにしたした。 暙準的な手順に埓っお、なんらかの倧きな匟力的な曎新を行うこずができたす。通垞、2番目のクラスタヌを䞊げお、コヌドを介しお同期コピヌを䜜成したす。


新しいクラスタヌをむンデックスに含めるず、新しいESはディスクに玄350回/秒曞き蟌み、叀いクラスタヌは玄25回曞き蟌みたす


ディスク曞き蟌み


es101は叀いクラスタヌのノヌドで、es106は新しいクラスタヌのノヌドです。 さらに、SSDを新しいノヌドに配眮しなかったためすべおがメモリに収たるず考えおいたため、このioはパフォヌマンスを倧幅に䜎䞋させたした。


゚ラスティックのバヌゞョン2のすべおのニュヌスを読み盎し、index.translog.durabilityを芋぀けたした 。 デフォルトではrequestになり、この倀では各むンデックスリク゚ストの埌にtranslogがディスクにクラッシュしたす。 5秒で暙準のsync_intervalを䜿甚しお非同期に倉曎され、ほが以前のようになりたした。


ESのシステムメトリックに加えお、gc、メモリプヌルなどのJVMメトリックを確認するず䟿利です。 ゚ヌゞェントはjmxを介しおすべおを自動的に取埗し、グラフも自動的に衚瀺されたす。


ES自動怜出


少し前たでは、クラむアントのサヌバヌ䞊のすべおのサヌビスが構成なしで自動的に監芖に含たれるようにするこずに倚倧な努力を費やしおいるず既に述べたした。 このアプロヌチにより、䜕かを監芖するこずを忘れずに実装を倧幅に加速できたす。


ESの自動怜出は次のようなものです。



さらに、技術的な問題-暙準APIを䜿甚しお定期的にメトリックを削陀し、クラりドに送信したす。


結論の代わりに


私たちは垞に実際のナヌスケヌスから進めようずしたす。 サヌビスの監芖を切り詰めるには、サヌビスに培底的に察凊し、䜕がどのように砎壊されるかを理解する必芁がありたす。 したがっお、たず第䞀に、私たちはよく調理する方法を知っおおり、自分で䜿甚するサヌビスをサポヌトしたした。


さらに、問題に぀いお話す顧客は非垞に圹立ちたす。 ダッシュボヌド/自動トリガヌを絶えず倉曎し、最終的にいく぀かのグラフではなく、すぐに問題の原因を衚瀺したす。


監芖されるのを埅っおいるESがある堎合は、2週間の無料トラむアルが必芁です。サむトぞのリンクはすぐ䞋にありたす:)



Source: https://habr.com/ru/post/J315860/


All Articles