ペシミスト芳枬ポストLamodaモニタリングシステムの技術的および抂念的な゜リュヌション

こんにちは私の名前はアレクサンダヌアフェノフです。ラモダで働いおいたす。この蚘事は、HighLoad 2019からの私の話に基づいおいたす。その蚘録はここにありたす。



以前はチヌムリヌダヌで、いく぀かの重芁なサヌビスを担圓しおいたした。そしお、䜕か問題が発生した堎合、実際のビゞネスプロセスが停止したした。たずえば、泚文は倉庫内のアセンブリに行くのをやめたした。



私は最近ディレクションリヌドになり、珟圚では1チヌムではなく3チヌムを担圓しおいたす。それぞれがITシステムを実行しおいたす。各システムで䜕が起こっおいるのか、䜕が壊れるのかを理解したい。



この蚘事で私は話したす



  • 私たちが監芖するもの
  • 監芖方法
  • そしお最も重芁なのは、これらの芳察結果をどのように凊理するかです。


画像



ラモダには倚くのシステムがありたす。それらはすべお解攟され、䜕かが圌らの䞭で倉化し、䜕かがテクノロゞヌで起こっおいたす。そしお、少なくずも故障を簡単に突き止めるこずができるずいう幻想が欲しいです。私は理解しようずする譊告に垞にさらされおいたす。抜象化を避けお詳现に進むために、最初の䟋を玹介したす。



時々䜕かが爆発する火のクロニクル



暖かい倏の朝、宣戊垃告なしで、い぀ものように、私たちの監芖は機胜したした。譊告ずしお、Icingaを䜿甚したす。 Alertによるず、DBMSサヌバヌには50 GBのハヌドディスクが残っおいたす。ほずんどの堎合、50ギガバむトは海の萜䞋であり、すぐに終了したす。残りの空き容量を正確に確認するこずにしたした。これらは仮想マシンではなくアむアンサヌバヌであり、デヌタベヌスの負荷が高いこずを理解する必芁がありたす。 1.5テラバむトのSSDがありたす。すぐにこの蚘憶は終わりを迎えたす。それは20〜30日間続きたす。これは非垞に小さいので、問題をすばやく解決する必芁がありたす。



次に、1〜2日で実際に消費されたメモリ量をさらに確認したした。 50ギガバむトは玄5〜7日続くこずがわかりたした。その埌、このベヌスで動䜜するサヌビスは予枬どおりに終了したす。結果に぀いお考え始めたす。緊急にアヌカむブするもの、削陀するデヌタ。デヌタ分析郚門にはすべおのバックアップがあるため、2015幎より叀いものはすべお安党に削陀できたす。



私たちはそれを削陀しようずしたすが、MySQLはハヌフキックではこのように機胜しないこずを芚えおいたす。削陀されたデヌタは玠晎らしいですが、テヌブルずDBに割り圓おられたファむルのサむズは倉わりたせん。 MySQLはこのスペヌスを䜿甚したす。぀たり、問題は解決されず、スペヌスがなくなりたした。



別のアプロヌチを詊すラベルを、期限切れの早いSSDから遅いSSDに移行したす。これを行うには、重量は倧きいが負荷が小さいタブレットを遞択し、Perconaモニタリングを䜿甚したす。テヌブルを移動したしたが、サヌバヌ自䜓の移動もすでに怜蚎しおいたす。 2番目の移動埌、サヌバヌは1.5ではなく4テラバむトのSSDを䜿甚したす。



私たちはこの火を消したした移動を蚈画し、そしおもちろん、固定監芖をしたした。これで、譊告は50ギガバむトではなく、半テラバむトでトリガヌされ、重芁な監芖倀は50ギガバむトになりたす。しかし、実際には、これは埌郚を芆う単なる毛垃です。しばらく続きたす。しかし、ベヌスをパヌツに分割せずにシャヌディングを考えずに、状況の繰り返しを蚱可するず、すべおが異垞終了したす。



サヌバヌをさらに倉曎したずしたす。ある段階で、マスタヌを再起動する必芁がありたした。おそらく、この堎合ぱラヌになりたす。私たちの堎合、ダりンタむムは玄30秒でした。しかし、リク゚ストが来お、どこにも曞くこずができず、゚ラヌが降り、監芖は機胜したした。私たちはPrometheus監芖システムを䜿甚しおいたす-そしお、泚文を䜜成するずきの500゚ラヌのメトリックたたぱラヌの数が急増しおいるこずがわかりたす。しかし、詳现はわかりたせん。䜜成されなかった泚文の皮類などです。



さらに、そのような状況にならないようにするために、監芖をどのように凊理するかを説明したす。



モニタリングのレビュヌずカスタマヌサポヌトの明確な説明



芳察しおいるいく぀かの領域ず指暙がありたす。オフィスのいたるずころにテレビがあり、そこにはさたざたな技術ラベルやビゞネスラベルがあり、開発者に加えお、サポヌトサヌビスによっお監芖されおいたす。



この蚘事では、私たちがどのようにそれを持っおいるかに぀いお話し、私たちが行きたいものを远加したす。これはレビュヌの監芖にも適甚されたす。 「プロパティ」のむンベントリを定期的に実斜した堎合、叀いものすべおを曎新しお修正し、fakapの繰り返しを回避できたす。これを行うには、明確なリストが必芁です。



私たちのリポゞトリには、珟圚4678行あるアラヌト付きの蚭定がありたす。このリストから、各特定の監芖が䜕に぀いお話しおいるかを理解するこずは困難です。メトリックがdb_disc_space_leftであるずしたしょう。サポヌトサヌビスは、これが䜕であるかをすぐには理解したせん。フリヌスペヌスに぀いおの䜕か、玠晎らしい。



もっず深く掘り䞋げたい。この監芖の構成を芋お、それがどこから来たかを理解したす。



pm_host: "{{ prometheus_server }}" 
pm_query: ”mysql_ssd_space_left" 
pm_warning: 50 
pm_critical: 10 pm_nanok: 1 


このメトリックには名前があり、独自の制限がありたす。譊告監芖を有効にするタむミングず、重芁な状況を報告するアラヌトです。メトリックの呜名芏則を䜿甚したす。各メトリックの先頭には、システム名がありたす。これのおかげで、責任の領域が明らかになりたす。システムの担圓者がメトリックを開始するず、誰に行くべきかすぐにわかりたす。



アラヌトは電報たたはスラックに泚がれたす。サポヌトサヌビスは、24時間幎䞭無䌑で察応する最初のサヌビスです。これが正垞な状況である堎合、圌らは正確に䜕が爆発したかを芋たす。圌らは指瀺がありたす



  • 亀換するために䞎えられたもの、
  • 継続的に合流しお修正される指瀺。展開された監芖の名前によっお、それが䜕を意味するかを芋぀けるこずができたす。最も重芁なのは、䜕が壊れおいるか、どのような結果が生じるか、誰を䞊げる必芁があるかに぀いお説明されおいたす。


たた、䞻芁なシステムを担圓するチヌムにシフトシフトがありたす。各チヌムには、垞に察応できる人がいたす。䜕かが起こったら、圌らは圌を迎えに行きたす。



アラヌトがトリガヌされるず、サポヌトチヌムはすべおの重芁な情報をすばやく芋぀ける必芁がありたす。゚ラヌメッセヌゞに添付されおいる監芖の説明ぞのリンクを甚意しおおくず䟿利です。たずえば、そのような情報があるように



  1. この監芖の説明は、理解しやすく、比范的単玔です。
  2. 所圚地の䜏所。
  3. このメトリックの説明;
  4. 結果間違いを蚂正しない堎合、どのように終了するか。
  5. , , . , , . -, .


たた、Prometheusむンタヌフェヌスでトラフィックダむナミクスをすぐに確認できるず䟿利です。



モニタリングごずにそのような蚘述をしたいず思いたす。圌らはあなたのレビュヌを構築し、調敎を行うのに圹立ちたす。私たちはこのプラクティスを実装しおいたす。アむシング構成には、この情報ずの合流ぞのリンクがすでに含たれおいたす。私はほが4幎間1぀のシステムに取り組んできたしたが、基本的にそのような説明はありたせん。だから今私は䞀緒に知識を集めおいたす。説明は、チヌムの意識の​​欠劂も解決したす。



特定のビゞネスぞの圱響に぀ながるものを瀺しおいるほずんどのアラヌトの指瀺がありたす。このため、状況を迅速に敎理する必芁がありたす。起こり埗るむンシデントの重芁床は、ビゞネスずずもにサポヌトサヌビスによっお決定されたす。



䟋を挙げたしょう。泚文凊理サヌビスのRabbitMQサヌバヌでのメモリ消費の監芖がトリガヌされた堎合、これはキュヌサヌビスが数時間たたは数分でクラッシュする可胜性があるこずを意味したす。これにより、倚くのビゞネスプロセスが停止したす。その結果、顧客は泚文、SMS /プッシュ通知、ステヌタス倉曎などを埅たずに倱敗したす。



ビゞネスずの監芖に぀いおの議論は、重倧な事件の埌にしばしば起こりたす。䜕かが壊れおいる堎合、私たちは、私たちの釈攟たたは事件に匕っかかった指瀺の代衚者ず共に委員䌚を集めたす。䌚議では、むンシデントの原因、二床ず起こらないようにする方法、被害を受けた被害、損倱額、および損倱額を分析したす。



顧客のために䜜成された問題を解決するには、ビゞネスを接続する必芁がある堎合がありたす。そこでは、予防的なアクションに぀いお説明したす。これが再び発生しないように、どのような監芖を開始するかです。



サポヌトサヌビスは、電報ボットを䜿甚しおメトリックの倀を監芖したす。新しい監芖が行われるず、サポヌトワヌカヌは、内蚳がどこにあり、それに察しお䜕をすべきかを芋぀けるための簡単なツヌルを必芁ずしたす。アラヌトの説明ぞのリンクはこの問題を解決したす。



私はファカップを珟実のように芋おいたす報告のためのセントリヌの䜿甚



゚ラヌを芋぀けるだけでは䞍十分で、詳现を確認したい堎合。暙準的な䜿甚䟋は次のずおりです。リリヌスをロヌルアりトし、K8Sスタックからアラヌトを受け取りたした。監芖のおかげで、ポッドのステヌタスを確認したす。ロヌルアりトされたアプリケヌションのバヌゞョン、展開がどのように終了したかなど、すべお良奜です。



次に、RMMを確認したす。これは、ベヌスずそれに負荷がかかっおいるものです。 Grafanaずボヌドでは、りサギぞの接続数を調べたす。圌はクヌルですが、メモリが䞍足したずきにリヌクする方法を知っおいたす。私たちはこれらを監芖し、次にセントリヌをチェックしたす。次の倧倱敗がどのように詳现に展開されるかをオンラむンで芋るこずができたす。この堎合、リリヌス埌の監芖は䜕がどのように壊れおいるかを報告したす。



PHPプロゞェクトでは、レむノンクラむアントを䜿甚し、さらにそれをデヌタで匷化したす。セントリヌはそれをすべおうたくたずめおいたす。そしお、各fakapのダむナミクス、それが発生する頻床を確認したす。たた、リク゚ストが倱敗した、アりトされたリク゚ストの䟋も確認したす。

画像



これはおおよその倖芳です。次のリリヌスでは、通垞よりも倚くの゚ラヌがあるこずがわかりたす。具䜓的に䜕が壊れたかをチェックしたす。そしお、必芁に応じお、状況に応じお倱敗した泚文を取埗し、修正したす。



Jiraぞのバむンド-クヌルなものがありたす。これはチケットトラッカヌです。ボタンを抌すず、JiraがSentryぞのリンクずこの゚ラヌのスタックトレヌスを含む゚ラヌタスクを䜜成したした。タスクには特定のラベルが付いおいたす。



開発者の䞀人が賢明なむニシアチブをもたらしたした-"Clean Project、Clean Sentry"。蚈画では、Sentryから䜜成された少なくずも1〜2個のタスクをスプリントに投入するたびに。システムで䜕かが垞に壊れおいる堎合、Sentryには䜕癟䞇もの小さな愚かなバグが殺到しおいたす。本圓に深刻なものを芋萜ずさないように、私たちは定期的にそれらを掃陀したす。



䜕らかの理由でブレむズ監芖が䞍芁になり、誰もがそれに芋舞われたす



  • 間違いに慣れる


䜕かが垞に点滅しお壊れおいるように芋える堎合、それは誀った基準の感芚を䞎えたす。サヌビスデスクは、状況が適切であるず誀解するこずがありたす。そしお、深刻な䜕かが壊れたずき、圌らはそれを無芖したす。「狌、狌」ず叫ぶ少幎の寓話のように。



兞型的なケヌスは、泚文凊理を担圓する私たちのプロゞェクトです。倉庫自動化システムず連携しお、そこにデヌタを転送したす。このシステムは通垞午前7時にリリヌスされ、その埌監芖を開始したす。誰もがそれに慣れ、詰たるので、あたり良くありたせん。これらのコントロヌルを調敎するこずは賢明でしょう。たずえば、特定のシステムのリリヌスず䞀郚のアラヌトをPrometheusでリンクするには、䜙分なアラヌムを切り取らないでください。



  • モニタリングではビゞネス指暙は考慮されたせん


泚文凊理システムはデヌタを倉庫に転送したす。このシステムに監芖機胜を远加したした。誰も解雇せず、すべおが順調に進んでいるようです。カりンタヌは、デヌタが残っおいるこずを瀺しおいたす。このケヌスは石鹞を䜿甚しおいたす。実際には、カりンタヌは次のようになりたす。緑の郚分は着信亀換、黄色の郚分は発信です。



画像



デヌタが本圓に満足する堎合がありたしたが、曲線です。泚文は支払われたせんでしたが、支払枈みずマヌクされたした。぀たり、賌入者は無料でそれらを受け取るこずができたす。怖いみたいです。しかし、その逆の方がより楜しいです。人が支払われた泚文を受け取るために来お、システムの゚ラヌのために圌は再び支払うように求められたす。



この状況を回避するために、テクノロゞヌだけでなくビゞネス指暙も監芖しおいたす。受領時に支払いが必芁な泚文の数を監芖する特定の監芖がありたす。このメトリックの倧きな飛躍は、䜕か問題が発生したかどうかを瀺したす。



ビゞネスむンゞケヌタヌの監芖は圓たり前のこずですが、私たちを含め、新しいサヌビスがリリヌスされるず、忘れられがちです。誰もが、ディスクに関連する玔粋に技術的なメトリック、パヌセントなど、新しいサヌビスを塗り぀ぶしたす。オンラむンストアずしお、私たちは重芁なものを持っおいたす-䜜成された泚文の数。マヌケティングプロモヌションに合わせお調敎された、通垞の賌入額を把握しおいたす。したがっお、リリヌス䞭にこのむンゞケヌタを監芖したす。



もう1぀の重芁なこずクラむアントが同じ䜏所ぞの配達を繰り返し泚文する堎合、コヌルセンタヌずの通信によっおクラむアントを苊しめるこずはありたせんが、自動的に泚文を確認したす。システムクラッシュは、カスタマヌ゚クスペリ゚ンスに倧きな圱響を䞎えたす。異なるシステムからのリリヌスが倧きな圱響を䞎える可胜性があるため、この枬定基準にも埓いたす。



珟実の䞖界を芳察する健康的なスプリントずパフォヌマンスを管理する



䌁業がさたざたな指暙を远跡できるように、小さなリアルタむムダッシュボヌドシステムを曞き留めたした。もずもず別の目的のために䜜られたした。このビゞネスには、来月の特定の日に販売したい泚文数の蚈画がありたす。このシステムは、蚈画の遵守を瀺し、実際に䜜成されたした。スケゞュヌルに぀いおは、圌女は生産拠点からデヌタを取埗し、その堎でその堎で読み取りたす。



レプリカが壊れたら。モニタリングがなかったので、それを知る時間はありたせんでした。しかし、ビゞネスは、私たちが埓来の10泚文の蚈画を満たしおいないこずを知り、コメントを出したした。私たちはその理由を理解し始めたした。壊れたレプリカから無関係なデヌタが読み取られおいるこずがわかりたした。これは、䌁業が興味深い指暙を芳察するケヌスであり、問​​題が発生したずきに私たちは互いに助け合いたす。



長い間開発が続けられおおり、各チヌムによっお垞に調敎されおいる、実䞖界の別の監芖に぀いおお話したす。Jira Viewerがありたす。開発プロセスを監芖できたす。システムは非垞にシンプルです。PHPフレヌムワヌクSymfonyは、Jira Apiにアクセスし、入力ずしお指定された内容に応じお、タスクやスプリントなどに関するデヌタをそこから取埗したす。Jira Viewerは、チヌムずそのプロゞェクトに関連するメトリックを定期的にPrometeusに曞き蟌みたす。そこで監芖され、譊告され、そこからGrafanaに衚瀺されたす。このシステムのおかげで、私たちは進行䞭の䜜業を远跡したす。



  • 進行䞭の瞬間から本番環境にロヌルアりトするたでのタスクの継続時間を監芖したす。数が倚すぎる堎合、理論的には、これはプロセス、チヌム、タスクの説明などに問題があるこずを瀺しおいたす。タスクの寿呜は重芁なメトリックですが、それだけでは十分ではありたせん。
  • . , , . , .
  • – ready for release, . - - , « ».
  • : , . .
  • . 400 150. , , .
  • 勀務時間倖の開発者からのプルリク゚ストの数をチヌムで監芖したした。特に、午埌8時以降。そしお、メトリックが急䞊昇したずき、これは憂慮すべき兆候です人は䜕かのための時間がないか、あたりにも倚くの努力を費やし、遅かれ早かれ燃え尜きたす。


画像



スクリヌンショットは、Jira Viewerがデヌタを衚瀺する方法を瀺しおいたす。これは、スプリントからのタスクのステヌタスの抂芁、各タスクの重量などが蚘茉されおいるペヌゞです。そのようなものも集たり、プロメテりスに飛びたす。



技術的な枬定基準だけでなく、すでに監芖しおいるもの、監芖できるもの、なぜこれがすべお必芁なのか



たずめるず、プロセス、開発、ビゞネスに関連するテクノロゞヌずメトリックの䞡方を䞀緒に監芖するこずをお勧めしたす。技術的な指暙だけでは十分ではありたせん。



  • , -, Grafana-. . , , .
  • : , . , , crontab supervisor. . , , .
  • – , , .
  • : , - , . , .
  • , . – Sentry . - , . - , . Sentry , , .
  • . , , .
  • , . , - , - . .



All Articles