監芖は停止しおいたすか -長時間のラむブモニタリング



2008幎以来、圓瀟は䞻にむンフラストラクチャ管理ず24時間䜓制のWebプロゞェクトの技術サポヌトに埓事しおいたす。400を超えるクラむアントがあり、これはロシアのeコマヌスの玄15です。 したがっお、非垞に倚様なアヌキテクチャがサポヌトされおいたす。 䜕かが萜ちた堎合は、15分以内に修正する必芁がありたす。 ただし、事故が発生したこずを理解するには、プロゞェクトを監芖し、むンシデントに察応する必芁がありたす。 どうやっおやるの

適切な監芖システムの組織に問題があるず思いたす。 問題がなければ、私のスピヌチは「プロメテりス+ Grafanaずプラグむン1、2、3をむンストヌルしおください」ずいう1぀の論文で構成されおいたした。 残念ながら、これは今は機胜したせん。 そしお䞻な問題は、誰もが゜フトりェアコンポヌネントの芳点から2008幎に存圚した䜕かを信じ続けおいるこずです。

監芖システムの組織に関しおは、...有胜な監芖機胜を備えたプロゞェクトは存圚しないず蚀うリスクがありたす。 そしお、䜕かが萜ちた堎合、状況は非垞に悪くなり、気付かれないずいうリスクがありたす。誰もが「すべおが監芖されおいる」ず確信しおいたす。
おそらくすべおが監芖されおいたす。 しかし、どのように

特定の開発者、特定の管理者が働いおいる、開発チヌムが圌らに来お、「私たちはそれを手に入れたした、今は監芖されおいたす」ずいうような話に出くわしたした。 どのモニタヌですか どのように機胜したすか

わかった 昔ながらの方法を監芖したす。 しかし、すでに倉化しおおり、サヌビスAを監芖し、サヌビスBになり、サヌビスCず察話したす。しかし、開発チヌムは「゜フトりェアを提䟛し、すべおを監芖する必芁がありたす」ず蚀いたす。

それで、䜕が倉わったのでしょうか -すべおが倉曎されたした

2008幎。 すべお順調です


2人の開発者、1人のサヌバヌ、1人のデヌタベヌスサヌバヌがいたす。 ここからすべおが始たりたす。 いく぀かのinfaがあり、zabbix、Nagios、cactiを配眮したす。 そしお、CPU、ディスクの操䜜、ディスク䞊の堎所に明確なアラヌトを蚭定したす。 たた、泚文がデヌタベヌスに送信されたこずをサむトが回答するかどうかを手動で確認したす。 そしおそれだけです-私たちは倚かれ少なかれ保護されおいたす。

管理者が監芖を確認するために行った䜜業量を比范するず、98自動でした。監芖しおいる人は、Zabbixのむンストヌル方法、蚭定方法、アラヌトの蚭定方法を理解する必芁がありたす。 2-倖郚チェックの堎合サむトが応答し、デヌタベヌスにリク゚ストを送信し、新しい泚文が到着したこず。



2010幎。 負荷が増倧しおいたす


Webのスケヌリングを開始し、怜玢゚ンゞンを远加したす。 補品カタログにすべおの補品が含たれおいるこずを確認する必芁がありたす。 そしお、その補品怜玢は機胜したす。 デヌタベヌスが機胜しおいるこず、泚文が行われおいるこず、サむトが倖郚から応答しおいるこず、2぀のサヌバヌから応答しおいるこず、ナヌザヌが別のサヌバヌにリバランスされおいる間はサむトから陀倖されないこずなど さらに゚ンティティがありたす。

さらに、むンフラストラクチャに関連付けられおいる本質は、マネヌゞャヌの頭の䞭で最倧のたたです。 それでも、監芖しおいる人はzabbixをむンストヌルしお蚭定できる人であるずいう考えが私の頭の䞭にありたす。

しかし同時に、倖郚チェックの実行、怜玢むンデクサヌを照䌚するための䞀連のスクリプトの䜜成、むンデックス䜜成プロセス䞭に怜玢の倉曎を確認するための䞀連のスクリプト、商品が配送サヌビスに転送されるこずを確認するための䞀連のスクリプトなどの䜜業がありたす。 など



泚「スクリプトセット」を3回䜜成したした。 ぀たり、監芖の責任者は、単にzabbixをむンストヌルするだけではありたせん。 これがコヌディングを開始する人です。 しかし、これたでのずころ、チヌムの心には䜕も倉わっおいたせん。

しかし、䞖界は倉化し、より耇雑になっおいたす。 仮想化局、いく぀かの新しいシステムが远加されたす。 圌らは互いに察話し始めたす。 誰が「マむクロサヌビスのスマック」ず蚀ったのですかしかし、各サヌビスはただ個々にサむトのように芋えたす。 私たちは圌に目を向け、圌が必芁な情報を提䟛し、それ自䜓で働くこずを理解するこずができたす。 そしお、あなたが5-7-10幎間開発しおいるプロゞェクトに絶えず埓事しおいる管理者であれば、あなたはこの知識を蓄積しおいたす新しいレベルが珟れたす-あなたはそれを認識し、別のレベルが珟れたす-あなたはそれを認識しおいたす...



しかし、10幎間プロゞェクトに同行する人はほずんどいたせん。

人の監芖の抂芁


すぐに20人の開発者を獲埗し、15のマむクロサヌビスを䜜成した新しいスタヌトアップに来お、あなたが次のように蚀われる管理者であるずしたす。 お願いしたす。」 CI / CDを䜜成したしたが、突然、アプリケヌションがどのように動䜜するかを理解せずに「キュヌブ」で本番を操䜜するこずは困難です。 同じ「キュヌブ」にサンドボックスを䜜成したす。
このキュヌブにサンドボックスを䜜成したす。 圌らはすぐにあなたに蚀う「私たちは、デヌタベヌスで動䜜するが、同時に本番デヌタベヌスを損なわないこずを理解するために、本番から毎日曎新されるステヌゞデヌタベヌスが欲しい。」

あなたはすべおこれに䜏んでいたす。 リリヌスたであず2週間です。圌らはあなたに次のように蚀いたす。 クラスタヌむンフラストラクチャの監芖、マむクロサヌビスアヌキテクチャの監芖、倖郚サヌビスずの連携の監芖...

そしお同僚は頭からこのような銎染みのあるスキヌムを取埗し、次のように蚀いたす。 すべおを監芖するプログラムをむンストヌルしたす。」 はいプロメテりス+ Grafana +プラグむン。
さらに、「2週間ありたす。すべおが信頌できるこずを確認しおください。」

私たちが芋るプロゞェクトの山の䞭で、䞀人の人が監芖のために割り圓おられおいたす。 監芖のために2週間人を雇いたいず想像しおください。履歎曞を曞きたす。 この人はどのようなスキルを持っおいる必芁がありたすか-以前に蚀ったこずをすべお考えるず


絶察に通垞のケヌスを思い出したしょう。phpのサヌビスの䞀郚、Goのサヌビスの䞀郚、JSのサヌビスの䞀郚です。 圌らはどういうわけか圌ら自身の間で働きたす。 これが「マむクロサヌビス」ずいう甚語の由来です。開発者がプロ​​ゞェクト党䜓を理解できないほど倚くの個別のシステムがあるためです。 チヌムの䞀郚は、独自に機胜するサヌビスをJSで蚘述したすが、システムの残りの郚分がどのように機胜するかはわかりたせん。 他の郚分はPythonでサヌビスを蚘述し、他のサヌビスが機胜する方法には入らず、圌らの分野では孀立しおいたす。 第䞉-phpなどでサヌビスを蚘述したす。
これら20人はすべお15のサヌビスに分かれおおり、これをすべお理解する必芁がある管理者は1人だけです。 やめお 20人がシステム党䜓を理解できないため、システムを15個のマむクロサヌビスに分割したした。

しかし、どういうわけか監芖する必芁がありたす...

結果は䜕ですか その結果、開発者のチヌム党䜓が理解できないものすべおを含む1人の人物がいたすが、圌はたた、䞊蚘で瀺した内容鉄のむンフラストラクチャ、Kubernetesむンフラストラクチャなどを知り、それを実珟する必芁がありたす。

䜕が蚀えたすか...ヒュヌストン、問題がありたす。

最新の゜フトりェアプロゞェクトの監芖は、それ自䜓が゜フトりェアプロゞェクトです


監芖は゜フトりェアであるずいう誀った信念から、私たちは奇跡を信じおいたす。 しかし、残念ながら、奇跡は起こりたせん。 zabbixをむンストヌルしお、すべおが機胜するのを埅぀こずはできたせん。 Grafanaを眮いお、すべおが倧䞈倫であるこずを期埅するのは意味がありたせん。 ほずんどの時間は、サヌビスの運甚ず盞互の盞互䜜甚のチェック、倖郚システムの動䜜のチェックに費やされたす。 実際、時間の90はスクリプトの䜜成ではなく、゜フトりェア開発に費やされたす。 そしお、プロゞェクトの仕事を理解するチヌムでなければなりたせん。
この状況で1人が監芖のために投げられるず、トラブルが発生したす。 それはどこでも起こっおいたす。

たずえば、Kafkaを介しお盞互に通信するいく぀かのサヌビスがありたす。 泚文が来たので、泚文メッセヌゞをカフカに送信したした。 泚文に関する情報を聞き、商品の出荷を実行するサヌビスがありたす。 泚文に関する情報をリッスンし、ナヌザヌに手玙を送信するサヌビスがありたす。 そしお、ただたくさんのサヌビスがあり、混乱し始めおいたす。

そしお、リリヌスたでに少し時間が残っおいる段階で、ただ管理者ず開発者にこれを枡した堎合、その人はこのプロトコル党䜓を理解する必芁がありたす。 ぀たり この芏暡のプロゞェクトにはかなりの時間がかかり、これをシステムの開発に組み蟌む必芁がありたす。
しかし、非垞に頻繁に、特に曞き蟌みの際に、スタヌトアップでは、監芖が埌たで延期される方法を確認しおいたす。 「今、抂念実蚌を䜜成し、それから始めお、それを萜ずしたしょう-犠牲にする準備ができおいたす。 そしお、これらすべおを監芖したす。」 プロゞェクトが収益を䞊げ始めた堎合たたは開始した堎合、ビゞネスはさらに倚くの機胜を削枛したいず考えおいたす。 そしお、最初は以前のすべおを監芖する必芁がありたす。これには1の時間ではなく、はるかに時間がかかりたす。 ずころで、開発者は監芖が必芁になり、それらを新しい機胜に組み蟌むのが簡単になりたす。 その結果、新しい機胜が䜜成され、すべおがたずめられ、無限のデッドロック状態に陥りたす。

では、プロゞェクトを最初からどのように監芖したすか。監芖する必芁があるが、どこから始めればよいかわからないプロゞェクトがあった堎合はどうでしょうか。

たず、蚈画を立おる必芁がありたす。

叙情的な䜙談倚くの堎合、むンフラストラクチャの監芖から始たりたす。 たずえば、Kubernetesがありたす。 たず、PrometheusずGrafanaを配眮し、プラグむンを「キュヌブ」の監芖䞋に配眮したす。 開発者だけでなく、管理者にも残念なプラクティスがありたす。「このプラグむンをむンストヌルしたす。プラグむンはおそらくこれを行う方法を知っおいたす。」 人々は重芁な行動ではなく、シンプルで理解しやすいものから始めるのが奜きです。 たた、むンフラストラクチャの監芖は簡単です。

他の人はあなたのために考えるこずができないので、最初に、あなたが監芖したいものず方法を決定し、次に楜噚を拟いたす。 はい、圌らはすべきですか 他の人々は、普遍的なシステムに぀いお考えた-たたは、このプラグむンが曞かれたずきにたったく考えなかった。 そしお、このプラグむンが5000人のナヌザヌを持っおいるずいう事実は、それが䜕らかの利益をもたらすずいう意味ではありたせん。 おそらく、以前に5,000人がすでにそこにいたからこそ、あなたは5001番目になるでしょう。

むンフラストラクチャの監芖を開始し、アプリケヌションのバック゚ンドが応答しなくなった堎合、すべおのナヌザヌはモバむルアプリケヌションずの接続を倱いたす。 間違いが飛び出したす。 圌らはあなたに来お、「アプリケヌションが動䜜しない、ここで䜕をしおいるの」-「私たちは監芖しおいたす」ず蚀うでしょう。 「アプリケヌションが動䜜しおいないこずがわからない堎合、どのように監芖したすか」

  1. ナヌザヌの゚ントリポむントから監芖を開始する必芁があるず思いたす。 ナヌザヌがアプリケヌションが動䜜しおいるこずを確認できない堎合-それだけで倱敗です。 そしお、監芖システムは最初にこれに぀いお譊告する必芁がありたす。
  2. そしお、そうしお初めおむンフラストラクチャを監芖できたす。 たたは䞊行しお行いたす。 むンフラストラクチャはよりシンプルです-ここで、ようやくzabbixをむンストヌルできたす。
  3. そしお今、あなたはそれが機胜しない堎所を理解するために、アプリケヌションのルヌトに行く必芁がありたす。

私の䞻な考えは、監芖は開発プロセスず䞊行しお行われるべきだずいうこずです。 他のタスクCI / CD、サンドボックスの䜜成、むンフラストラクチャの再線成のために監芖チヌムを匕き離すず、監芖が遅れ始め、開発に远い付かないこずがありたすたたは遅かれ早かれ停止する必芁がありたす。

レベルごずのすべお


これは私が監芖システムの組織を芋る方法です。

1アプリケヌションレベル

2むンフラストラクチャレベル

3もう䞀床、アプリケヌションレベル-゚ンゞニアリング補品ずしお

4アラヌト

重芁 アラヌトはその埌ではなく、すぐに届きたす 監芖を開始し、「䜕らかの圢で」アラヌトを受信する人を考える必芁はありたせん。 結局のずころ、監芖のタスクは䜕ですかシステムのどこで機胜しおいないかを理解し、適切な人々にそれを知らせたす。 これが最埌たで残されおいる堎合、適切な人々は、「䜕も圹に立たない」ず呌ぶだけで、䜕かが間違っおいるこずを知るでしょう。

アプリケヌション局-ビゞネスロゞックの監芖


ここでは、ナヌザヌにずっおアプリケヌションが機胜するこずを確認するこずに぀いお話しおいたす。

このレベルは、蚭蚈段階で行う必芁がありたす。 たずえば、条件付きプロメテりスがありたす。チェックに関䞎しおいるサヌバヌにクロヌルし、゚ンドポむントをプルし、゚ンドポむントがAPIをチェックしたす。

メむンペヌゞを監芖しおサむトが機胜しおいるこずを確認するように頻繁に求められる堎合、プログラマヌは、APIが機胜するこずを確認する必芁があるたびに匕っ匵るこずができるペンを提䟛したす。 そしお、珟時点では、プログラマヌは、/ api / test / helloworld
すべおが機胜するこずを確認する唯䞀の方法は -いや


技術的なヒント


アプリケヌション局-ヘルスメトリックの監芖


珟圚、サヌビスの倖郚ヘルスメトリックに぀いお説明しおいたす。

倖郚監芖システムから呌び出す倖郚チェックを䜿甚しお、アプリケヌションのすべおの「ペン」を監芖するこずにしたした。 しかし、これらはたさにナヌザヌが「芋る」「ペン」です。 サヌビス自䜓が私たちのために機胜するこずを確認したいのです。 より良いストヌリヌは次のずおりです。K8sにはヘルスチェックがあり、少なくずもキュヌブがサヌビスが機胜するこずを確認したす。 しかし、私が芋たチェックの半分は、同じ「hello world」の印刷物です。 ぀たり ここで圌は展開埌に䞀床動揺し、圌はすべおがうたくいっおいるず圌に答えたした-それはそれです。 たた、サヌビスがAPIを保持しおいる堎合、API自䜓の膚倧な数の゚ントリポむントがありたす。APIが機胜するこずを知りたいため、監芖する必芁もありたす。 そしお、すでに内郚で監芖しおいたす。

技術的に正しく実装する方法各サヌビスは珟圚のパフォヌマンスに぀いお゚ンドポむントを蚭定し、Grafanaたたは他のアプリケヌションのグラフですべおのサヌビスのステヌタスを確認したす。


アプリケヌション局-統合監芖


統合監芖は、ビゞネスに䞍可欠なシステム間の通信の監芖に重点を眮いおいたす。

たずえば、互いに通信する15のサヌビスがありたす。 これらはもはや個々のサむトではありたせん。 ぀たり サヌビスを単独で取埗したり、helloworldを取埗したり、サヌビスが機胜しおいるこずを理解したりするこずはできたせん。 泚文を出すためのWebサヌビスは泚文に関する情報をバスに送信する必芁があるため、倉庫サヌビスはバスからこのメッセヌゞを受信し、さらに凊理する必芁がありたす。 そしお、電子メヌル配信サヌビスはこれを䜕らかの方法でさらに凊理する必芁がありたす。

したがっお、個々のサヌビスを突っ蟌んで、これがすべお機胜するこずを理解するこずはできたせん。 すべおが通信し、やり取りする特定のバスがあるからです。
したがっお、この段階は、他のサヌビスず察話するためのサヌビスをテストする段階を瀺す必芁がありたす。 メッセヌゞブロヌカヌを監芖するず、通信の監芖を敎理できたせん。 デヌタを発行するサヌビスずそれを受け入れるサヌビスがある堎合、ブロヌカヌを監芖するずきに、巊右に飛んでいくデヌタのみが衚瀺されたす。 䜕らかの方法で内郚のこのデヌタの盞互䜜甚を監芖できた堎合でも䞀郚のプロデュヌサヌがデヌタを投皿し、誰かがそれを読み取った堎合、このストリヌムは匕き続きKafkaに移動したす、1぀のサヌビスが1぀のバヌゞョンでメッセヌゞを提䟛した堎合でも、情報は提䟛されたせんが、別のサヌビスはこのバヌゞョンを予期せず、スキップしたした。 サヌビスはすべおが機胜しおいるこずを教えおくれるので、これに぀いおは知りたせん。

私がするこずをお勧めしたす


通垞、バス䞊にデヌタをスロヌするサヌビスがありたす。 このサヌビスにアクセスしお、統合の健党性に぀いおお話しください。 たた、サヌビスがさらにどこかでメッセヌゞを販売する必芁がある堎合WebApp、このテストメッセヌゞが生成されたす。 そしお、OrderProcessing偎でサヌビスをプルするず、たず独立しお投皿できるものを投皿し、䟝存するものがある堎合は、バスから䞀連のテストメッセヌゞを読み取り、それらを凊理できるこずを理解しお、レポヌトし、 、必芁に応じおそれらをさらに投皿し、これに぀いお圌は蚀いたす-すべおはOKです、私は生きおいたす。

「戊闘デヌタでこれをどのようにテストできたすか」ずいう質問をよく耳にしたす。たずえば、同じ泚文サヌビスに぀いお話しおいたす。 泚文はメッセヌゞが倉庫に送られ、そこで商品が償华されたす。「商品は償华されたす」ずいう理由で、戊闘デヌタでこれをテストするこずはできたせん。 モックを行う単䜓テストがありたす。 そのため、ビゞネスに害を及がさない通信チャネルを䜿甚する、より深いレベルでそれを実行しおください。

むンフラレベル


むンフラストラクチャの監芖は、以前から監芖自䜓ず芋なされおきたものです。


ビゞネスナニットずしおのアプリケヌションレベル


キヌポむント


アラヌト



技術スタック


次のスタックがあるず想像しおみたしょう。




オプションの遞択は重芁ではありたせん。 なぜなら、最初にシステムの監芖方法を理解し、蚈画を立おたのであれば、芁件に合ったツヌルを遞択し始めおいるからです。 問題は、最初に監芖するこずを遞択したものです。 おそらく、最初に遞択したツヌルであるため、芁件にたったく適合しないためです。

最近私が芋おいるいく぀かの技術的なポむント

プロメテりスはKubernetesの䞭に抌し蟌みたす-誰がこれを発明したしたか クラスタヌが萜ちた堎合、どうしたすか 内郚に耇雑なクラスタヌがある堎合、クラスタヌ内の䞀郚の監芖システムが動䜜し、䞀郚はクラスタヌの内郚からデヌタを収集する倖郚のシステムを動䜜させる必芁がありたす。

クラスタヌ内では、ログずその他すべおを収集したす。 ただし、監芖システムは倖郚にある必芁がありたす。 非垞に倚くの堎合、内郚にむンストヌルされたプロムテりスがあるクラスタヌでは、サむトの倖郚チェックを行うシステムがありたす。 そしお、倖の䞖界ぞの接続が萜ちお、アプリケヌションが機胜しない堎合はどうなりたすか あなたの䞭ですべおがうたくいくこずがわかりたすが、これはナヌザヌにずっお簡単ではありたせん。

結論



これは、Saint Highload ++䌚議でのレポヌトの拡匵バヌゞョンです。

UPDコメントだけでなく、コメントの䌚話の結果に埓う

1.ずりわけ、この蚘事の目的は、「管理者、心配しないで、監芖はあなたの関心事ではなく、プログラマを苊しめる」ずいう論文にあるように思えるかもしれたせん。 もちろん、これはそうではありたせん。DevOpsがプログラマヌず管理者を結集したように、この蚘事の目的は、ずりわけコラボレヌションを瀺すこずです。
2.私はほのめかそうずはしおいたせん、圌らは蚀いたす、「すべおはどこでも悪いですが、私たちはあなたのために監芖をするこずができたす-ITSummaに来おください。」 いいえ、プロゞェクトが開始された堎合、サヌドパヌティ䌁業による監芖はできたせん。 もちろん、ビゞネス目暙もありたす。私たちが本圓に考えおいるのは、開発のモニタリング郚分を適切に実斜する方法を䌝えるために、開発の過皋でプロゞェクトをサポヌトするコンサルティングを導入するこずです。

あなたが私のアむデアや考えなどに興味があるなら、あなたはチャンネルを読むこずができたす :-)

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


All Articles