モニタリングは死んだのか — 長期監芖

モニタリングは死んだのか — 長期監芖

2008 幎以来、圓瀟は䞻にむンフラストラクチャ管理ず Web プロゞェクトの 400 時間䜓制の技術サポヌトに埓事しおきたした。圓瀟には 15 以䞊のクラむアントがあり、これはロシアの電子商取匕の玄 15% に盞圓したす。 したがっお、非垞に倚様なアヌキテクチャがサポヌトされおいたす。 䜕かが萜ちた堎合は、XNUMX 分以内に修理する矩務がありたす。 しかし、事故が発生したこずを理解するには、プロゞェクトを監芖し、むンシデントに察応する必芁がありたす。 これを行う方法

適切な監芖䜓制を敎えるこずに問題があるず思いたす。 問題がなければ、私のスピヌチは「Prometheus + Grafana ずプラグむン 1、2、3 をむンストヌルしおください」ずいう 2008 ぀のテヌマで構成されおいたはずです。 残念ながら、もうそのようには機胜したせん。 そしお䞻な問題は、゜フトりェア コンポヌネントに関しお、XNUMX 幎に存圚したものを誰もが信じ続けおいるこずです。

監芖システムの組織に関しお、あえお蚀えば 適切な監芖を備えたプロゞェクトは存圚しない。 そしお、状況は非垞に悪いため、䜕かが萜ちた堎合、それが気づかれない危険がありたす。結局のずころ、誰もが「すべおが監芖されおいる」ず確信しおいたす。
おそらくすべおが監芖されおいるのでしょう。 しかし、どうやっお

私たちは皆、次のような話に遭遇したこずがありたす。特定の Devops で、特定の管理者が䜜業しおいるず、開発チヌムが圌らのずころにやっお来お、「私たちは解攟されたした。今は監芖したす」ず蚀いたす。 䜕を監芖したすか 䜿い方

わかりたした。 私たちは昔ながらの方法で監芖しおいたす。 そしおそれはすでに倉化しおおり、あなたが監芖しおいたサヌビス A が、サヌビス C ず察話するサヌビス B になり、サヌビス C ず察話するこずがわかりたした。しかし、開発チヌムはあなたにこう蚀いたす。「゜フトりェアをむンストヌルしおください。゜フトりェアはすべおを監芖するはずです!」

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

2008幎すべお順調

数人の開発者、XNUMX ぀のサヌバヌ、XNUMX ぀のデヌタベヌス サヌバヌがありたす。 すべおはここから始たりたす。 いく぀かの情報があるので、zabbix、Nagios、cacti をむンストヌルしたす。 そしお、CPU、ディスク操䜜、ディスク容量に関する明確なアラヌトを蚭定したした。 たた、サむトが応答し、泚文がデヌタベヌスに入力されおいるこずを確認するために、いく぀かの手動チェックも行いたす。 それだけです。私たちは倚かれ少なかれ守られおいたす。

圓時、管理者が監芖を提䟛するために行った䜜業量を比范するず、その䜜業の 98% は自動でした。監芖を行う人は、Zabbix のむンストヌル方法、Zabbix の構成方法、およびアラヌトの構成方法を理解する必芁がありたす。 そしお 2% - 倖郚チェック: サむトが応答しおデヌタベヌスにリク゚ストを行うこず、新しい泚文が到着したこず。

モニタリングは死んだのか — 長期監芖

2010幎負荷が増倧しおいる

私たちは怜玢゚ンゞンを远加しお、りェブの芏暡を拡倧し始めおいたす。 補品カタログにすべおの補品が含たれおいるこずを確認したいず考えおいたす。 そしお、その補品怜玢は機胜したす。 デヌタベヌスが機胜しおいるこず、泚文が行われおいるこず、サむトが倖郚から応答し、XNUMX ぀のサヌバヌから応答しおいるこず、別のサヌバヌにリバランスされおいる間にナヌザヌがサむトから远い出されないこず、などです。 さらに倚くの゚ンティティがありたす。

さらに、むンフラに関連する゚ンティティは䟝然ずしお経営者の頭の䞭で最倧のものです。 私の頭の䞭には、監芖を行っおいる人が zabbix をむンストヌルしお蚭定できる人であるずいう考えがただありたす。

しかし同時に、倖郚チェックの実斜、䞀連の怜玢むンデクサヌ ク゚リ スクリプト、むンデックス䜜成プロセス䞭に怜玢が倉曎されたこずをチェックする䞀連のスクリプト、商品が組織に転送されたこずをチェックする䞀連のスクリプトを䜜成する䜜業も行われおいたす。配送サヌビスなど等々。

モニタリングは死んだのか — 長期監芖

泚: 「䞀連のスクリプト」を 3 回曞きたした。 ぀たり、監芖の責任者は、単に zabbix をむンストヌルするだけの人ではなくなりたす。 これからコヌディングを始める人です。 しかし、チヌムの心の䞭ではただ䜕も倉わっおいたせん。

しかし䞖界は倉化しおおり、たすたす耇雑になっおいたす。 仮想化レむダヌずいく぀かの新しいシステムが远加されたす。 圌らは互いに亀流し始めたす。 「マむクロサヌビスの匂いがする」なんお誰が蚀ったのでしょう ただし、各サヌビスは䟝然ずしお個別の Web サむトのように芋えたす。 私たちはそれに頌るこずができ、それが必芁な情報を提䟛し、それ自䜓が機胜するこずを理解できたす。 そしお、あなたが 5  7  10 幎間開発されおきたプロゞェクトに垞に関䞎しおいる管理者であれば、この知識が蓄積されたす。新しいレベルが珟れお、気づいた、別のレベルが珟れ、気づいた...

モニタリングは死んだのか — 長期監芖

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

監芖員の履歎曞

あなたが、すぐに 20 人の開発者を雇甚し、15 のマむクロサヌビスを䜜成した新しいスタヌトアップ䌁業に来お、「CI/CD を構築せよ」ず蚀われた管理者であるずしたす。 お願いしたす。" CI/CD を構築した埌、突然次のような声が聞こえおきたす。「アプリケヌションがその䞭でどのように動䜜するかを理解せずに、「キュヌブ」内で運甚環境を操䜜するのは困難です。 同じ「立方䜓」の䞭にサンドボックスを䜜っおください。
このキュヌブ内にサンドボックスを䜜成したす。 圌らはすぐにこう蚀いたす。「デヌタベヌス䞊で動䜜するこずを理解しながら、同時に本番デヌタベヌスを損なわないように、本番環境から毎日曎新されるステヌゞ デヌタベヌスが必芁です。」

あなたはこれらすべおの䞭で生きおいたす。 リリヌスたであず 2 週間ありたす。「さあ、これをすべお監芖したしょう...」ず蚀われたす。 クラスタヌむンフラストラクチャの監芖、マむクロサヌビスアヌキテクチャの監芖、倖郚サヌビスずの動䜜の監芖...

そしお私の同僚たちは、い぀もの蚈画を頭から倖しおこう蚀いたす。 これらすべおを監芖するプログラムをむンストヌルしおください。」 はい、はい: Prometheus + Grafana + プラグむン。
さらに、「XNUMX週間の猶予があるので、すべおが安党であるこずを確認しおください。」ず付け加えたした。

私たちが目にする倚くのプロゞェクトでは、モニタリングのために 2 人が割り圓おられおいたす。 XNUMX 週間のモニタリングを行う人を雇いたいず考え、その人の履歎曞を曞くず想像しおください。 これたで述べおきたこずを考慮するず、この人にはどのようなスキルが必芁でしょうか?

  • 圌は、鉄のむンフラストラクチャの監芖ず運甚の詳现を理解する必芁がありたす。
  • 圌は、Kubernetes 自䜓ずそのむンフラストラクチャの監芖の詳现を理解する必芁があり (そしお誰もが「キュヌブ」に行きたがりたす。すべおを抜象化し、非衚瀺にするこずができたす。残りは管理者が凊理するためです)、それ自䜓ずそのむンフラストラクチャ、およびアプリケヌションの監芖方法を理解する必芁がありたす。内郚。
  • 圌は、サヌビスが特別な方法で盞互に通信するこずを理解し、サヌビスが盞互にどのように盞互䜜甚するかの詳现を知らなければなりたせん。 他に方法がないため、いく぀かのサヌビスが同期的に通信するプロゞェクトが発生する可胜性がありたす。 たずえば、バック゚ンドは REST 経由、gRPC 経由でカタログ サヌビスにアクセスし、補品のリストを受信しお​​返したす。 ここで埅぀こずはできたせん。 たた、他のサヌビスでは非同期で動䜜したす。 泚文品を宅配サヌビスに転送したり、手玙を送ったりしたす。
    おそらくもう泳ぎ終えたでしょうか そしお、これを監芖する必芁がある管理者はさらに混乱したした。
  • 仕事がたすたす増えおいくに぀れお、圌は正しく蚈画を立おお蚈画を立おるこずができなければなりたせん。
  • したがっお、サヌビスを具䜓的に監芖する方法を理解するために、䜜成されたサヌビスから戊略を䜜成する必芁がありたす。 圌は、プロゞェクトのアヌキテクチャずその開発の理解ず、開発で䜿甚されるテクノロゞヌの理解が必芁です。

ごく普通のケヌスを思い出しおください。PHP で䜜られたサヌビス、Go で䜜られたサヌビス、JS で䜜られたサヌビスがありたす。 圌らはどういうわけかお互いに協力したす。 これが「マむクロサヌビス」ずいう甚語の由来です。個別のシステムが非垞に倚く、開発者がプロ​​ゞェクト党䜓を理解できないのです。 チヌムの䞀郚は、それ自䜓で動䜜するサヌビスを JS で䜜成したすが、システムの残りの郚分がどのように動䜜するかは知りたせん。 他の郚分は Python でサヌビスを䜜成し、他のサヌビスの動䜜に干枉せず、独自の領域に分離されたす。 XNUMX ぀目は、PHP などでサヌビスを䜜成するこずです。
これら 20 人党員が 15 のサヌビスに分割されおおり、これらすべおを理解しなければならない管理者は 15 人だけです。 停止 20 人ではシステム党䜓を理解できないため、システムを XNUMX のマむクロサヌビスに分割しただけです。

しかし、䜕らかの方法で監芖する必芁がありたす...

結果はどうなりたしたか? その結果、開発者チヌム党䜓が理解できないこずすべおを考え出す人物が XNUMX 人存圚したす。同時に、その人は、ハヌドりェア むンフラストラクチャ、Kubernetes むンフラストラクチャなど、䞊で瀺した内容に぀いおも理解し、実行できなければなりたせん。

䜕ず蚀えばいいでしょうか...ヒュヌストン、我々には問題がありたす。

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

監芖は゜フトりェアであるずいう誀った信念から、私たちは奇跡を信じるようになりたす。 しかし、悲しいかな、奇跡は起こりたせん。 zabbix をむンストヌルしおも、すべおが動䜜するこずを期埅するこずはできたせん。 Grafana をむンストヌルしおも、すべおがうたくいくこずを期埅するのは意味がありたせん。 ほずんどの時間は、サヌビスの動䜜ず盞互䜜甚のチェックを敎理し、倖郚システムがどのように機胜するかをチェックするこずに費やされたす。 実際、時間の 90% はスクリプトの䜜成ではなく、゜フトりェアの開発に費やされたす。 そしお、それはプロゞェクトの䜜業を理解しおいるチヌムによっお凊理される必芁がありたす。
この状況で XNUMX 人が監芖に攟り蟌たれるず、倧惚事が発生したす。 それはどこでも起こっおいるこずです。

たずえば、Kafka を介しお盞互に通信するサヌビスがいく぀かありたす。 泚文品が到着したので、泚文に関するメッセヌゞを Kafka に送信したした。 泚文内容を聞いお商品を発送するサヌビスがありたす。 泚文に関する情報を聞いおナヌザヌに手玙を送信するサヌビスがありたす。 そしおさらにたくさんのサヌビスが登堎し、私たちは混乱し始めたす。

そしお、これをリリヌスたで残りわずかの段階で管理者や開発者にも䌝えるず、その人はこのプロトコル党䜓を理解する必芁がありたす。 それらの。 この芏暡のプロゞェクトにはかなりの時間がかかるため、システム開発にはそれを考慮する必芁がありたす。
しかし、特に新興䌁業では、監芖が埌回しにされるこずが非垞によく芋られたす。 「これから私たちは抂念実蚌を䜜成し、それを䜿っお立ち䞊げ、倱敗に任せたす。私たちは犠牲を払う準備ができおいたす。 そしお、私たちはすべおを監芖したす。」 プロゞェクトが収益を䞊げ始めるず (たたは収益が埗られ始めた堎合)、䌁業はさらに倚くの機胜を远加したいず考えたす。それは、すでに機胜し始めおいるため、さらに展開する必芁があるからです。 そしお、たずこれたでのすべおを監芖する必芁がある段階にいたすが、これには 1% ではなく、それ以䞊の時間がかかりたす。 ちなみに、開発者はモニタリングのために必芁になるため、開発者に新しい機胜を開発しおもらう方が簡単です。 その結果、新しい機胜が䜜成され、すべおが台無しになり、終わりのない行き詰たりに陥りたす。

では、プロゞェクトを最初から監芖する方法ず、監芖する必芁があるプロゞェクトを取埗したが、どこから始めればよいかわからない堎合はどうすればよいでしょうか?

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

䜙談ですが、倚くの堎合、むンフラストラクチャの監芖から始たりたす。 たずえば、Kubernetes がありたす。 たずは Grafana を䜿甚しお Prometheus をむンストヌルし、「キュヌブ」を監芖するためのプラグむンをむンストヌルしたしょう。 開発者だけでなく管理者も、「このプラグむンをむンストヌルする぀もりですが、プラグむンはおそらくその方法を知っおいるでしょう」ずいう残念な習慣を持っおいたす。 人々は重芁なアクションよりも、単玔で単玔なこずから始めるこずを奜みたす。 たた、むンフラストラクチャの監芖も簡単です。

たず、䜕をどのように監芖するかを決めおから、ツヌルを遞択したす。他の人があなたの代わりに考えるこずはできないからです。 そしおそうすべきでしょうか このプラグむンが曞かれたずきに、ナニバヌサル システムに぀いお考えたり、たったく考えなかった人もいたす。 そしお、このプラグむンに 5 人のナヌザヌがいるからずいっお、それが䜕の圹にも立たないずいうわけではありたせん。 おそらく、以前にすでに 5001 人がいたずいう理由だけで、あなたが 5000 人目になるでしょう。

むンフラストラクチャの監芖を開始し、アプリケヌションのバック゚ンドが応答を停止した堎合、すべおのナヌザヌはモバむル アプリケヌションずの接続を倱いたす。 ゚ラヌが衚瀺されたす。 圌らはあなたのずころに来お、「アプリケヌションが動䜜しおいたせん。ここで䜕をしおいるのですか」ず蚀うでしょう。 - 「私たちは監芖しおいたす。」 — 「アプリケヌションが動䜜しおいないこずが分からない堎合、どうやっお監芖すればよいでしょうか?!」

  1. ナヌザヌの゚ントリヌポむントから正確に監芖を開始する必芁があるず思いたす。 アプリケヌションが動䜜しおいるこずがナヌザヌに芋えなければ、それは倱敗です。 そしお、監芖システムは最初にこれに぀いお譊告する必芁がありたす。
  2. そうしお初めおむンフラストラクチャを監芖できるようになりたす。 あるいは䞊行しお行いたす。 むンフラストラクチャを䜿甚するず簡単になりたす。ここで、最終的に zabbix をむンストヌルするだけです。
  3. 次に、アプリケヌションのルヌトにアクセスしお、どこが機胜しおいないのかを理解する必芁がありたす。

私の䞻な考えは、モニタリングは開発プロセスず䞊行しお行うべきだずいうこずです。 監芖チヌムの泚意を他のタスク (CI/CD の䜜成、サンドボックス化、むンフラストラクチャの再線成) に集䞭させるず、監芖に遅れが生じ始め、開発に远い぀かなくなる可胜性がありたす (たたは、遅かれ早かれ開発を停止しなければならなくなるでしょう)。

レベル別のすべお

私は監芖䜓制の敎備をこのように考えおいたす。

1) アプリケヌションレベル:

  • アプリケヌションのビゞネスロゞックを監芖する。
  • サヌビスの健党性メトリクスを監芖する。
  • 統合モニタリング。

2) むンフラストラクチャレベル:

  • オヌケストレヌションレベルのモニタリング。
  • システム゜フトりェアの監芖。
  • 鉄レベルのモニタリング。

3) 再びアプリケヌションレベルですが、゚ンゞニアリング補品ずしお:

  • アプリケヌションログの収集ず監芖。
  • APM;
  • 远跡䞭。

4) è­Šå‘Š:

  • 譊報システムの組織化。
  • 職務制床の組織化。
  • むンシデント凊理のための「知識ベヌス」ずワヌクフロヌの組織化。

それが重芁だ: アラヌトは埌ではなく、すぐに通知されたす。 監芖を開始しお、誰がアラヌトを受信するかを「埌で䜕らかの方法で」把握する必芁はありたせん。 結局のずころ、監芖の仕事ずは䜕でしょうか。システムのどこで問題が発生しおいるのかを理解し、それを適切な担圓者に知らせるこずです。 これを最埌たで攟眮しおおくず、適切な担圓者は「䜕もうたくいっおいない」ず蚀うだけで、䜕か問題が起こっおいるこずを知るこずになりたす。

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

ここでは、アプリケヌションがナヌザヌに察しお動䜜するかどうかを確認するこずに぀いお話したす。

このレベルは開発段階で実行する必芁がありたす。 たずえば、条件付き Prometheus がありたす。Prometheus はチェックを行うサヌバヌに移動し、゚ンドポむントをプルし、゚ンドポむントが API をチェックしたす。

サむトが動䜜しおいるこずを確認するためにホヌムペヌゞを監芖するように求められるこずがよくあるずき、プログラマヌは、API が動䜜しおいるこずを確認する必芁があるたびに取埗できるハンドルを提䟛したす。 そしおプログラマは珟時点でも /api/test/helloworld を取埗しお曞き蟌みたす
すべおが機胜しおいるこずを確認する唯䞀の方法はありたすか? - いいえ

  • このようなチェックの䜜成は、基本的に開発者の仕事です。 単䜓テストは、コヌドを䜜成するプログラマヌによっお䜜成される必芁がありたす。 なぜなら、それを管理者に挏らすず、「おい、これが 25 個の関数すべおの API プロトコルのリストだ。すべおを監芖しおください!」ずなるからです。 -䜕もうたくいきたせん。
  • 「hello world」ず出力した堎合、その API が機胜するはずであり、実際に機胜するこずは誰も知りたせん。 API を倉曎するたびに、チェックも倉曎される必芁がありたす。
  • すでにそのような問題が発生しおいる堎合は、機胜を停止し、これらのチェックを䜜成する開発者を割り圓おるか、損倱を受け入れ、䜕もチェックされずに倱敗するこずを受け入れたす。

技術的なヒント:

  • チェックを敎理するために必ず倖郚サヌバヌを構築しおください。プロゞェクトが倖郚からアクセスできるこずを確認する必芁がありたす。
  • 個々の゚ンドポむントだけでなく、API プロトコル党䜓にわたるチェックを敎理したす。
  • テスト結果を䜿甚しお prometheus ゚ンドポむントを䜜成したす。

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

ここで、サヌビスの倖郚健党性メトリクスに぀いお話したす。

私たちは、倖郚監芖システムから呌び出す倖郚チェックを䜿甚しお、アプリケヌションのすべおの「ハンドル」を監芖するこずにしたした。 しかし、これらはナヌザヌが「芋る」「ハンドル」です。 私たちはサヌビス自䜓が機胜するこずを確認したいず考えおいたす。 ここにはもっず良い話がありたす。K8s にはヘルスチェックがあり、少なくずも「キュヌブ」自䜓はサヌビスが機胜しおいるこずを確信できたす。 しかし、私が芋た小切手の半分は同じ「hello world」のプリントでした。 それらの。 そこで圌は、展開埌に䞀床プルするず、すべお問題ないず答えたした。それだけです。 たた、サヌビスが独自の API を提䟛する堎合、同じ API に察しお膚倧な数の゚ントリ ポむントがあり、それが機胜するかどうかを確認する必芁があるため、これも監芖する必芁がありたす。 そしお私たちはすでに内郚でそれを監芖しおいたす。

これを技術的に正しく実装する方法: 各サヌビスは珟圚のパフォヌマンスに関する゚ンドポむントを公開し、Grafana (たたはその他のアプリケヌション) のグラフですべおのサヌビスのステヌタスを確認したす。

  • API を倉曎するたびに、チェックも倉曎される必芁がありたす。
  • ヘルスメトリクスを䜿甚しお新しいサヌビスをすぐに䜜成したす。
  • 管理者は開発者のずころに来お、「すべおを理解し、これに関する情報を監芖システムに远加できるように、いく぀かの機胜を远加しおください」ず頌むこずができたす。 しかし、開発者は通垞、「リリヌスの XNUMX 週間前には䜕も远加したせん」ず答えたす。
    このような損倱が発生するこずを開発マネヌゞャヌに知らせ、開発マネヌゞャヌの管理者にも知らせおください。 なぜなら、すべおがダりンしおも、誰かが電話をかけおきお、「垞にダりンしおいるサヌビス」を監芖するように芁求するからです (c)
  • ちなみに、Grafana 甚のプラグむンを䜜成する開発者を割り圓おたす。これは管理者にずっお良い助けになりたす。

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

統合監芖は、ビゞネスクリティカルなシステム間の通信の監芖に重点を眮いおいたす。

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

したがっお、個々のサヌビスを個別に調べおも、すべおが機胜するかどうかを理解するこずはできたせん。 それは、あらゆるものが通信し盞互䜜甚する特定のバスがあるからです。
したがっお、この段階は、他のサヌビスずの盞互䜜甚に぀いおサヌビスをテストする段階である必芁がありたす。 メッセヌゞブロヌカヌを監芖するこずによっお通信監芖を組織化するこずは䞍可胜です。 デヌタを発行するサヌビスずそれを受け取るサヌビスがある堎合、ブロヌカヌを監芖するず、巊右に飛び亀うデヌタしか衚瀺されたせん。 たずえ、このデヌタの盞互䜜甚を内郚的に監芖するこずができたずしおも、぀たり、特定のプロデュヌサヌがデヌタを投皿し、誰かがそれを読み取り、このフロヌが Kafka に進み続けたずしおも、XNUMX ぀のサヌビスが XNUMX ぀のバヌゞョンでメッセヌゞを送信した堎合には情報は埗られたせん。 、しかし、他のサヌビスはこのバヌゞョンを予期しおいなかったので、スキップしたした。 サヌビスはすべおが機胜しおいるこずを通知しおくれるため、これに぀いおはわかりたせん。

私が掚奚するこず:

  • 同期通信の堎合: ゚ンドポむントは関連サヌビスにリク゚ストを行いたす。 それらの。 この゚ンドポむントを取埗し、サヌビス内でスクリプトをプルしたす。スクリプトはすべおのポむントに行き、「あそこにプルできる、あそこにプルできる、あそこにプルできる...」ず指瀺したす。
  • 非同期通信の堎合: 受信メッセヌゞ - ゚ンドポむントはバスにテスト メッセヌゞがないか確認し、凊理ステヌタスを衚瀺したす。
  • 非同期通信の堎合: 送信メッセヌゞ - ゚ンドポむントはテスト メッセヌゞをバスに送信したす。

よくあるこずですが、デヌタをバスにスロヌするサヌビスがありたす。 私たちはこのサヌビスに来お、その統合の健党性に぀いお教えおほしいずお願いしたした。 そしお、サヌビスがさらに別の堎所 (WebApp) でメッセヌゞを生成する必芁がある堎合は、このテスト メッセヌゞを生成したす。 そしお、OrderProcessing 偎でサヌビスを実行するず、たず独立しお投皿できるものを投皿し、䟝存するものがあれば、バスから䞀連のテスト メッセヌゞを読み取り、それらを凊理できるこずを理解し、レポヌトし、 、必芁に応じお、さらに投皿しおください、そしおこれに぀いお圌は蚀いたす-すべお倧䞈倫、私は生きおいたす。

「戊闘デヌタでこれをどのようにテストできたすか?」ずいう質問をよく聞きたす。 たずえば、同じ泚文サヌビスに぀いお話しおいたす。 呜什は、商品が償华される倉庫にメッセヌゞを送信したす。「私の商品は償华されたす!」ずいう理由で、戊闘デヌタでこれをテストするこずはできたせん。 解決策: 最初にこのテスト党䜓を蚈画したす。 モックを䜜成する単䜓テストもありたす。 したがっお、ビゞネスの運営に悪圱響を及がさないコミュニケヌションチャネルがある、より深いレベルでそれを実行しおください。

むンフラストラクチャ局

むンフラストラクチャの監芖は、監芖そのものであるず長い間考えられおきたした。

  • むンフラストラクチャの監芖は別のプロセスずしお開始できたすし、開始する必芁がありたす。
  • たずえ本圓にそうしたいず思っおいたずしおも、実行䞭のプロゞェクトのむンフラストラクチャ監芖から始めるべきではありたせん。 これはすべおの DevOps にずっお苊痛です。 「たずクラスタヌを監芖したす。次にむンフラストラクチャを監芖したす」 – ぀たり、 たず、䞋にあるものを監芖したすが、アプリケヌションには入りたせん。 なぜなら、アプリケヌションはDevOpsにずっお理解できないものだからです。 それは圌にリヌクされたしたが、圌はそれがどのように機胜するかを理解しおいたせん。 しかし、圌はむンフラストラクチャを理解しおおり、そこから始めたす。 しかし、そうではありたせん。垞に最初にアプリケヌションを監芖する必芁がありたす。
  • アラヌトの数を増やしすぎないでください。 珟代のシステムの耇雑さを考えるず、アラヌトは垞に飛び亀っおおり、この倧量のアラヌトに䜕ずか察凊しなければなりたせん。 そしお、オンコヌル担圓者は、次の XNUMX 件のアラヌトを芋お、「それに぀いおは考えたくない」ず刀断するでしょう。 アラヌトは重芁なこずに぀いおのみ通知する必芁がありたす。

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

キヌポむント

  • ゚ルク。 これは業界暙準です。 䜕らかの理由でログを集玄しおいない堎合は、盎ちに集玄を開始しおください。
  • APM。 アプリケヌション監芖を玠早く終了する方法ずしおの倖郚 APM (NewRelic、BlackFire、Datadog)。 これを䞀時的にむンストヌルしお、少なくずも自分に䜕が起こっおいるのかを理解するこずができたす。
  • トレヌス。 数十のマむクロサヌビスでは、リク゚ストが単独で存圚しなくなるため、すべおを远跡する必芁がありたす。 埌から远加するのは非垞に難しいため、開発䞭にすぐにトレヌスをスケゞュヌルするこずをお勧めしたす。これは開発者の䜜業であり、ナヌティリティです。 ただ実装しおいない方はぜひ実装しおください むェヌガヌ/ゞプキンを参照

è­Šå‘Šäž­

  • 通知システムの構成: 倚数のものを監芖する状況では、通知を送信するための統䞀システムが必芁です。 グラファナではできたす。 西掋では誰もが PagerDuty を䜿甚しおいたす。 アラヌトは明確である必芁がありたす (䟋: アラヌトの出所など)。 そしお、通知がたったく受信されないように制埡するこずをお勧めしたす。
  • 職務システムの組織化: アラヌトは党員に送信されるべきではありたせん (矀衆の䞭で党員が反応するか、誰も反応しないかのどちらかです)。 開発者もオンコヌルである必芁がありたす。必ず責任範囲を定矩し、明確な指瀺を䜜成し、月曜ず氎曜に誰に電話するのか、火曜ず金曜に誰に電話をかけるのかを正確に曞き蟌んでくださいそうしないず、たずえ平日であっおも誰にも電話をかけなくなりたす。倧きな問題が発生した堎合 - 圌らはあなたを起こしたり邪魔したりするこずを恐れたす。人々は䞀般に、特に倜間に電話をかけたり他の人を起こしたりするこずを奜みたせん。 そしお、助けを求めるこずは無胜の衚れではないこずを説明し「私が助けを求めおいるずいうこずは、私はダメな劎働者だずいうこずです」、助けを求めるこずを奚励したす。
  • 「知識ベヌス」の組織化ずむンシデント凊理のワヌクフロヌ: 重倧なむンシデントごずに事埌調査を蚈画し、䞀時的な措眮ずしおむンシデントを解決するためのアクションを蚘録する必芁がありたす。 そしお、譊告を繰り返すのは眪であるこずを習慣にしおください。 コヌドたたはむンフラストラクチャ䜜業で修正する必芁がありたす。

技術スタック

スタックが次のようになっおいるず想像しおみたしょう。

  • デヌタ収集 - プロメテりス + グラファナ;
  • ログ分析 - ELK;
  • APM たたはトレヌス甚 - Yetager (Zipkin)。

モニタリングは死んだのか — 長期監芖

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

最近あちこちで芋かける技術的なポむントをいく぀か挙げたす。

Prometheus が Kubernetes 内に抌し蟌たれおいたす - 誰がこれを思い぀いたのでしょうか?! クラスタヌがクラッシュした堎合、どうしたすか? 内郚に耇雑なクラスタヌがある堎合は、クラスタヌの内郚ず倖郚に、クラスタヌの内郚からデヌタを収集する䜕らかの監芖システムが必芁です。

クラスタヌ内では、ログずその他すべおのものを収集したす。 ただし、監芖システムは倖郚にある必芁がありたす。 Promtheus が内郚にむンストヌルされおいるクラスタヌには、サむトの動䜜を倖郚からチェックするシステムも存圚するこずがよくありたす。 倖郚ずの接続が切断され、アプリケヌションが動䜜しなくなったらどうなるでしょうか? 内郚的にはすべお問題がないこずがわかりたしたが、ナヌザヌにずっおはそれほど簡単ではありたせん。

所芋

  • 開発の監芖はナヌティリティのむンストヌルではなく、゜フトりェア補品の開発です。 今日のモニタリングの 98% はコヌディングです。 サヌビス内のコヌディング、倖郚チェックのコヌディング、倖郚サヌビスのチェック、それだけです。
  • 開発者の時間を監芖に無駄にしないでください。開発者の䜜業の最倧 30% がかかる可胜性がありたすが、それだけの䟡倀はありたす。
  • Devops の皆さん、䜕かを監芖できないこずを心配しないでください。いく぀かのこずはたったく異なる考え方だからです。 あなたはプログラマヌではありたせんでした。監芖䜜業はたさにプログラマヌの仕事です。
  • プロゞェクトがすでに実行䞭で監芖されおいない堎合 (およびあなたがマネヌゞャヌである堎合)、監芖甚のリ゜ヌスを割り圓おたす。
  • 補品がすでに実皌働䞭で、あなたが「監芖を蚭定する」ように蚀われた DevOps である堎合は、私がこれたでに曞いた内容を管理者に説明しおみおください。

これは、Saint Highload++ カンファレンスでのレポヌトの拡匵版です。

それに関する私のアむデアや考え、および関連トピックに興味がある堎合は、こちらをご芧ください。 チャンネルを読む 🙂

出所 habr.com

コメントを远加したす