SmartMonitoring-Odnoklassnikiのビゞネスロゞックの監芖









珟圚、オドノクラシニキには、地理的に分散した4぀のデヌタセンタヌ、11,000台のサヌバヌ、1000台以䞊のネットワヌクデバむス、180のサヌビスがありたす。 サヌビスずは、写真、ビデオ、音楜、テヌプなどを意味したす。毎日、䜕千䞇人ものナニヌクなナヌザヌがサむトを蚪れたす。 そしお、このすべおの経枈のために、圌らが䜕をしおいるかを監芖する必芁がありたす。





サヌバヌをむンストヌルしお構成したすが、サヌバヌが非垞に倚いため、毎日䜕かが壊れるこずは避けられたせん。 この堎合の䞻なタスクは、ナヌザヌよりも早く故障を確認するこずです。 したがっお、監芖チヌム党䜓がポヌタル党䜓の運甚を担圓したす。 圌らはチャヌトを芋お、異垞を芋぀け、むンシデントを開始し、Zabbix + JIRAバンドルを䜿甚しお䜜成された「自動むンシデント」を配垃したす。 ビゞネスロゞックを監芖するだけでなく、自動的に分析したす。 これに぀いおは埌で詳しく説明したす。



グラフの衚瀺ず異垞の怜玢に専念したしょう。 私たちのスケゞュヌルは䜕ですか、 異垞ずは䜕ですか、 むンシデントずは䜕ですか







このグラフは、テヌプのロヌド時間nsを瀺しおいたす。 珟圚の日は赀で衚瀺されたす。 アクティビティテヌプのロヌド時間がゞャンプしたした。 これは私たちにずっおの出来事です。぀たり、ある時点でナヌザヌがサむトの䞻芁郚分であるアクティビティフィヌドをゆっくりロヌドした可胜性がありたす。 すべおの䞻芁なむンシデントは、そのような飛躍から正確に始たりたす。最初の事件、次に2回ですが、最終的にはすべおが壊れたす。 したがっお、監芖チヌムはゞャンプを怜出し、すべおの既知の情報を䜿甚しおJIRAでチケットを䜜成する必芁がありたす。 すべおのサヌビスずデヌタベヌスをチェックしお、理由を芋぀けおください。 䜕が壊れおいるかを知るたで、䜕を修理する必芁があるのか​​わかりたせん。 チャヌト䞊でゞャンプの理由を手動で芋぀けるには、数十、時には数癟の他のチャヌトを調べる必芁がありたす。







過去ぞの遠足



以前は、ポヌタルがあらゆる点ではるかに小さかったずきに、グラフ付きのダッシュボヌドを䜜成したしたが、そのうちダッシュボヌドはほずんどなく、玄100〜200個しかありたせんでした。 しかし、Odnoklassnikiは成長および発展し、たすたす倚くの新しいサヌビスが登堎し、より倚くのスケゞュヌルがありたした。



新しいサヌビスが開始されたずしたしょう。 それを䜜ったプログラマヌは、すべおの偎面から監芖されおいるサヌビスに興味がありたした。 そのため、圌は監芖チヌムに倚くのチャヌトを提䟛し、次のように述べたした。 しかし、その時点では、あたり倚くのグラフを衚瀺できたせんでした。 各サヌビスに数十個ある堎合、タスクはすぐに䞍可胜になりたす。 したがっお、最も重芁なサヌビスの䜜成者によるチャヌトのみを遞択しお監芖したした。 しかし、サヌビスが開始されたずきに、むンシデントが「重芁でない」チャヌトでのみ目立぀こずがありたした。これはメむンダッシュボヌドにはありたせん。 その結果、むンシデントを芋逃したした。



ある時点で、監芖チヌムは650個のグラフを凊理し、4぀のダッシュボヌドに分割したした。各グラフは、チヌムのメンバヌが特定の間隔で芋おいたした。 各ダッシュボヌドの衚瀺間隔は独自のものです15分から1時間。 8時間のシフト䞭に、平均で7000のスケゞュヌルがアテンダントを通過したした。 たくさん。 これで䜕かをしなければなりたせんでした。 結局、䜕千ものスケゞュヌルを監芖するだけでなく、むンシデントを調査するこずも必芁でした。 開発者ず管理者が問題の解決策に接続し、接続しおいるため、それは本圓に難しくお長いですそしおOdnoklassnikiの巚倧なシステムでは、ハヌドりェアたたは゜フトりェアに関するいく぀かの問題が絶えず発生するため、倧芏暡システムの公理です。 さらに、意志で手動で監芖するかどうかにかかわらず、䜕かが垞にスキップされおいたした。



最初の1時間に650枚の写真を芋るず、すべおに反応するようなものですが、2、3、4時間目が倉わるず目ががやけ、脳が疲れ、異垞を芋逃し始めたす。 その結果、䞊蚘のすべおの問題を解決するシステムを䜜成するこずにしたした。



すべおのOdnoklassnikiサヌビスは盞互にやり取りしたす。 たずえば、写真サヌビスずは、クラス、評䟡、コメントなどのサヌビスを指したす。 簡単に説明したす。詳现はこちらをご芧ください。 実際にやり取りするのはサヌビスではなく、これらのサヌビスを提䟛するサヌバヌです。 具䜓的には、2぀の特定のサヌバヌ間のリク゚ストに関する統蚈情報を収集し始めたした。





たずえば、これは、通垞のWebサヌバヌず兞型的なビゞネスロゞックサヌバヌずの盞互䜜甚のグラフの倖芳です。 グラフは、それらの間のリク゚ストの数を瀺したす。







サヌバヌが盞互に通信する方法を知っおいれば、次のようなポヌタル党䜓のグラフを䜜成できたす。







しかし、1぀の小さな問題がありたす。11,000台のサヌバヌがありたす。 そのようなグラフは巚倧になり、構築しお芖芚化するこずは困難です。 解決策は明癜です。 各サヌバヌは、むンフラストラクチャで圹割を果たしたす。぀たり、独自のマむクロサヌビス、合蚈280個の芁玠ニュヌスフィヌド、プラむベヌトメッセヌゞ、゜ヌシャルグラフフレンドシップグラフなどなどを備えおいたす。サヌバヌむンフラストラクチャの接続、物理サヌバヌを機胜別にグルヌプ化するこずを決定したした。実際、Odnoklassnikiでこのサブシステムたたはそのサブシステムにサヌビスを提䟛するクラスタヌを匷調しおいたす。 Webサヌバヌ、キャッシュ、ビゞネスロゞックサヌバヌなどの倧芏暡なマむクロサヌビスをデヌタセンタヌに分割したした。



このようなクラスタヌによるグルヌプ化の結果、グラフは倧幅に枛少したした。玄300の頂点ず、それらの間の2.5千の゚ッゞが残っおいたした。 これにより、Odnoklassnikiポヌタルが実際にどのように機胜するかのグラフを䜜成できたした。







マむクロサヌビスは円圢に配眮されおいたす。 ラむンは盞互接続です。 この図では、1぀のマむクロサヌビスが匷調衚瀺されおいたす右䞊。 緑の線-このマむクロサヌビスの行き先、茶色の線-誰が行きたすか。 グラフのトポロゞを適切に芖芚化しないず、䜕らかの方法でグラフを䜿甚するこずが困難だったため、グラフの頂点をさたざたな方法で平面に配眮しようずしたした。 圌らはそれを動的にし、問題のある接続、぀たり異垞があるグラフ䞊の接続を匷調するず考えたしたが、これは機胜したせんグラフは非垞に倧きいです。



しかし、なぜグラフ党䜓を垞に衚瀺するのでしょうか 元のタスクに戻り、実際のむンシデント時にそれを確認するこずにしたした。 そしお数日埌、そのような事件が珟れたした-パヌ゜ナルメッセヌゞングシステムで異垞が発生したした。ナヌザヌはメッセヌゞを曞きたいず思っおいたしたが、圌の通信履歎は非垞に長い間ロヌドされたした。 玠晎らしいケヌス 異垞のある接続のみを残しお、グラフを再構築するこずにしたした。 取埗したものは次のずおりです。







青色は2぀のマむクロサヌビス間の時間を瀺し各マむクロサヌビスには異なる数のサヌバヌがありたす、黄色は芁求の数を瀺し、玫色ぱラヌを瀺したす。 これがグラフの単なる新しいビュヌではないこずがすぐに明らかになりたした。 グラフは本圓に問題を指摘しおいたした。 問題が明らかになりたした  ドラむナンバヌの蚀語で蚀えば、蚘茉されおいるむンシデント発生時のモバむルWebサヌバヌからメッセヌゞサヌビスサヌバヌぞのリク゚ストの期間は玄0.5ミリ秒増加したした。 ビゞネスロゞックサヌバヌからメッセヌゞングプロキシぞの応答時間は10ミリ秒です。 そしお最も重芁なこずは、デヌタりェアハりスでのク゚リの平均遅延が40ミリ秒増加したこずです。 ゚ラヌが発生し、デヌタベヌスぞの呌び出しが少なくなりたした。おそらく、すべおのナヌザヌがメッセヌゞ履歎の読み蟌みの終了を埅っおいるわけではなく、通信りィンドりを閉じたした。 このグラフは、すぐにどこを掘るかを瀺しおいたす。これは、通信の履歎を保存するmessaging-conversation-cdbクラスタです。 蚀い換えれば、理由は明らかです。グラフの最埌のリンクは、時間の増加が最も重芁な堎所です。



このアプロヌチをさらに数回テストした結果、機胜するこずがわかりたした。 問題のある関係のグラフを構築するずいうアむデアが本圓に気に入ったので、サヌバヌの盞互䜜甚の統蚈だけで停止するのではなく、システムをさらに開発するこずにしたした。 たた、時間、゚ラヌ、リク゚スト、トラフィックなど、Webサヌバヌからのコンテンツのリタヌンの統蚈情報の分析も開始したした。 支払いお金の監芖を远加したした。倚くの堎合、支払いアグリゲヌタヌの問題を自分よりも早く芋぀け、「幞犏の手玙」を送信するこずでそれらに぀いお通知したす。 さらに、モバむルバヌゞョンずWebバヌゞョンの䞡方でログむンを囜別に監芖し始め、さたざたな技術チャヌトを远加したした。 その結果、珟圚10䞇件のチャヌトをリアルタむムで監芖しおいたす。 これは本圓にたくさんありたす



システム構成





すべおのログはデヌタりェアハりスに曞き蟌たれたす。 これは、 Druidに基づいお構築された集䞭統蚈リポゞトリシステムです。 日䞭に3兆のむベントが発生し、集蚈埌、30億のレコヌド、぀たり玄600 GBになりたす。 .NETで蚘述されたデヌタコレクタヌサヌビスは、システムに必芁なデヌタを取埗しすべおのグラフを監芖するわけではなく、他の目的で䜜成されるグラフもありたす、デヌタ分析甚に準備されたMSSQL䞊のデヌタベヌスであるストレヌゞに保存したす。 Anomaly Detectorは、デヌタず分析をキャプチャし、数倀シヌケンスの異垞の怜玢を支揎したす。 圌が異垞を芋぀けた堎合、結果をマヌクし、ストレヌゞに戻したす。 Application Serverこれも.NETで蚘述されおいたすは、芋぀かった異垞に関するデヌタず远加のサヌビスJIRA、ポヌタル管理システム、LiveInternetなど、むンタヌネット党䜓のアクティビティを調べたすのストレヌゞに移動し、すべおの情報を準備しおWebクラむアントに枡したす。



ここで最も興味深いモゞュヌルであるAnomaly Detectorは、.NETで蚘述されたサヌビスです。 これがその仕組みです。







入力は、トレヌニング甚のシステムに必芁なものです。







これらは、42日前の7、14、...、同時に6週間かかった倀です぀たり、今日が月曜日の堎合、月曜日はすべおトレヌニングサンプルに移動したす。 珟圚分析䞭の時点での倀に加えお、巊右の2぀の隣接する倀を取りたす。 これは、サンプルの正芏分垃に察しお行われたす。 その時点でシステムがいく぀かの倀を異垞ずしおマヌクした堎合、それらの倀はサンプルに含たれたせん。



次に、 Grubbsテストを適甚したす。数倀シヌケンスで異垞倀を探し、これが異垞かどうかを瀺したす。 異垞の䟋を次に瀺したす。これはOdnoklassnikiコンポヌネントの1぀のロヌド時間のグラフです。







グラフから、午前6時30分に異垞が発生したこずがわかりたす。 これが、Grubbsテストに基づいたシステムの芋方です。







巊偎には、同じ期間の早い方の倀がありたす。巊右に2぀の倀がありたす。 以䞋は珟圚の倀です。 Grubbsのテストでは、これは異垞であり、異垞倀が怜出されおいたす。 次に、フィルタリングを行いたす。 Grubbsテストはすべおを怜出するため、フィルタリングは誀怜知ずの戊いですが、私たちにずっおは垞に異垞ずは限りたせん。 これらは「停の異垞」です。



わずかなトレンド偏差







グラフは、マむクロサヌビス接続の1぀の平均ク゚リ時間を瀺しおいたす。 赀い線問題の日は、残りの日のすぐ䞊にありたす。 ここには実際に逞脱があり、Grubbsテストはそれを芋぀けたすが、私たちにずっおは重芁ではありたせん。 状況は2぀ありたす。異垞を怜出するこずは重芁ですが、誀怜出はありたせん。 経隓的に、時間の20の偏差ず、芁求に応じお15の偏差は重芁ではないずいう結論に達したした。 確かに、すべおの接続ではなく、メむンの接続でのみです。 したがっお、この堎合、接続は異垞ずしおマヌクされたせん。 ただし、Webサヌバヌからビゞネスロゞックサヌバヌたでの時間など、重芁な接続のグラフである堎合、ナヌザヌぞの圱響はほずんどないため、異垞ずしおマヌクされたす。 気付く前に理解する必芁がありたす。



ノむズの倚いグラフィックス







非垞にノむズの倚いグラフでは、デヌタ集蚈を䜿甚したす。぀たり、システムは、異垞がレヌダヌに連続しお数回衝突した堎合にのみ、グラフに異垞があるず蚀いたす。 問題に぀いお少し埌で孊ぶこずは重芁ではありたせん。䞻なこずは、私たちが孊ぶこずであり、これが間違いなく問題であるこずです。 しかし、ゞャンプが十分に倧きい堎合、トレンドの急激な倉化だけでなく短期的なプラグもキャッチするこずが重芁であるため、ルヌルは機胜したせんそれらはしばしば深刻な問題に぀ながりたす。



ポヌタルの曎新



曎新䞭、サヌバヌのグルヌプはロヌテヌションから削陀され、停止されたす。 ぀たり、それからの芁求ずれロぞの芁求がれロになり、システムはそのようなケヌスを異垞ずしお瀺したすそしお正しく行いたす。 これはナヌザヌにはたったく圱響しないため、誀怜知。 8぀のサヌバヌグルヌプがあり、2぀が衚瀺されおいるずしたす。 2぀が撀回され、党負荷が他のグルヌプに移されたした。 誀怜知が発生しないように、切り替えを行いたした。曎新䞭にオンにしお、デヌタセンタヌによっお切断されおいるマむクロサヌビスの合蚈を確認したす。 そのようなグルヌプによるク゚リの数のグラフがどのように矎しく芋えるかを以䞋に瀺したす。







ネットワヌキング



ネットワヌクで䜜業する堎合、 ナニキャストストヌムが頻繁に発生し、ネットワヌクを詰たらせるため、2぀のマむクロサヌビスの盞互䜜甚時間はほずんどの堎合長続きしたせんが、倧幅にゞャンプしたす。 したがっお、デヌタセンタヌでのナニキャストストヌムの発生を远跡したす䞀床に倚くのパケットが送信されたしたか。 ストヌムが怜出された堎合、それが発生したデヌタセンタヌを衚瀺し、圓盎者が理由を芋぀けたす。



掻動の季節倉動







これは4月30日の写真です。倧きな祝日が来る前に、人々は䌑暇を取り、800からの赀い線は少し䜎くなりたした。 そしお、これはすべおのサヌビスのためです。 これは季節性の圱響であり、䜕らかの方法でアルゎリズムを再構築する必芁があるこずを理解しおいたす。 次に、ナヌザヌアクティビティのおおよその偏差を知る別のアルゎリズムをオンにしたす。 圌はオンラむンおよび他の指暙を芋お、それらを再解釈し、そのような肯定的な結果は衚瀺したせん。



システムはどのように機胜したすか



監芖チヌムのメンバヌは、グラフたたは接続のみを受け取り、それを䜿甚しお4぀のこずを実行できたす。





䜜業を容易にするシステムの機胜





システム結果



珟圚、10䞇のスケゞュヌルを監芖し、むンシデントを芋逃すこずなく、調査に費やす時間を倧幅に削枛しおいたす。 新しいサヌビスはすべお自動的に監芖されたす。 チヌムの生産性が向䞊したした。 管理者やプログラマは誰でもシステムにログむンしお、珟圚䜕が起こっおいるのかを確認できたす。重倧な問題でも小さな問題でもありたす。 これは、管理者ずプログラマの䞡方が人生を楜しむのに圹立ちたす。



あなたが誰かがそのようなシステムを䜜成する堎合、私たちはあなたを助ける蚘事のリストを䜜りたした。 あなたはそれらをここで芋぀けるでしょう。



All Articles