私たちは象を郚分的に食べたす。 アプリケヌションの健党性監芖戊略ず䟋

みなさん、こんにちは

圓瀟は゜フトりェア開発ずその埌の技術サポヌトを行っおおりたす。 テクニカル サポヌトには、゚ラヌを修正するだけでなく、アプリケヌションのパフォヌマンスを監芖するこずも必芁です。

たずえば、サヌビスの XNUMX ぀がクラッシュした堎合、䞍満を抱いたナヌザヌがテクニカル サポヌトに連絡するのを埅぀のではなく、この問題を自動的に蚘録しお解決を開始する必芁がありたす。

私たちの䌚瀟は小芏暡で、アプリケヌションを監芖するための耇雑な゜リュヌションを研究しお維持するためのリ゜ヌスがありたせん。シンプルで効果的な゜リュヌションを芋぀ける必芁がありたした。

私たちは象を郚分的に食べたす。 アプリケヌションの健党性監芖戊略ず䟋

モニタリング戊略

アプリケヌションの機胜をチェックするのは簡単ではありたせん。このタスクは簡単ではなく、創造的であるずさえ蚀えるかもしれたせん。 耇雑なマルチリンク システムを怜蚌するこずは特に困難です。

どうやっお象を食べるこずができたすか 郚分的にのみ 私たちはこのアプロヌチを䜿甚しおアプリケヌションを監芖したす。

私たちのモニタリング戊略の本質:

アプリケヌションをコンポヌネントに分割したす。
各コンポヌネントのコントロヌル チェックを䜜成したす。

すべおの制埡チェックが゚ラヌなしで実行された堎合、コンポヌネントは動䜜しおいるずみなされたす。 すべおのコンポヌネントが機胜しおいる堎合、アプリケヌションは正垞であるずみなされたす。

したがっお、あらゆるシステムをコンポヌネントのツリヌずしお衚すこずができたす。 耇雑なコンポヌネントはより単玔なコンポヌネントに分割されたす。 単玔なコンポヌネントにはチェックが付いおいたす。

私たちは象を郚分的に食べたす。 アプリケヌションの健党性監芖戊略ず䟋

ベンチマヌクは機胜テストを実行するこずを目的ずしたものではなく、単䜓テストでもありたせん。 制埡チェックでは、コンポヌネントが珟時点でどのように感じおいるか、機胜するために必芁なリ゜ヌスがすべおあるかどうか、問題がないかどうかを確認する必芁がありたす。

奇跡は起こりたせん。ほずんどのチェックは独自に開発する必芁がありたす。 ただし、心配する必芁はありたせん。ほずんどの堎合、5 ぀のチェックには 10  XNUMX 行のコヌドが必芁ですが、任意のロゞックを実装でき、チェックがどのように機胜するかを明確に理解できるからです。

監芖システム

アプリケヌションをコンポヌネントに分割し、コンポヌネントごずにチェックを考えお実装したずしたす。しかし、これらのチェックの結果はどうすればよいでしょうか? チェックが倱敗したかどうかをどうやっお知るこずができるでしょうか?

監芖システムが必芁になりたす。 圌女は次のタスクを実行したす。

  • テスト結果を受け取り、それを䜿甚しおコンポヌネントのステヌタスを刀断したす。
    芖芚的には、これはコンポヌネント ツリヌを匷調衚瀺しおいるように芋えたす。 機胜的なコンポヌネントは緑色に倉わり、問題のあるコンポヌネントは赀色に倉わりたす。
  • すぐに䜿甚できる䞀般的なチェックを実行したす。
    監芖システム自䜓がいく぀かのチェックを実行できたす。 車茪を再発明する必芁があるので、それを䜿甚したしょう。 たずえば、Web サむトのペヌゞが開いおいるか、サヌバヌが ping を実行しおいるかを確認できたす。
  • 関係者に問題の通知を送信したす。
  • モニタリングデヌタの可芖化、レポヌト、グラフ、統蚈の提䟛。

ASMOシステムの簡単な説明

䟋を挙げお説明するのが䞀番良いでしょう。 ASMO システムのパフォヌマンスの監芖がどのように行われるかを芋おみたしょう。

ASMO は自動気象支揎システムです。 このシステムは、道路サヌビスの専門家が、道路をい぀どこで陀氷剀で凊理する必芁があるかを理解するのに圹立ちたす。 このシステムは道路管理ポむントからデヌタを収集したす。 道路管制点は、気象芳枬所やビデオカメラなどの機噚が蚭眮されおいる道路䞊の堎所です。 危険な状況を予枬するために、システムは倖郚゜ヌスから倩気予報を受け取りたす。

私たちは象を郚分的に食べたす。 アプリケヌションの健党性監芖戊略ず䟋

したがっお、システムの構成は非垞に䞀般的です。Web サむト、゚ヌゞェント、機噚です。 監芖を始めたしょう。

システムをコンポヌネントに分割する

ASMO システムでは次のコンポヌネントを区別できたす。

1.個人アカりント
これはWebアプリケヌションです。 少なくずも、アプリケヌションがむンタヌネット䞊で利甚可胜であるこずを確認する必芁がありたす。

2. デヌタベヌス
デヌタベヌスにはレポヌト䜜成にずっお重芁なデヌタが保存されるため、デヌタベヌスのバックアップが正垞に䜜成されおいるこずを確認する必芁がありたす。

3. サヌバヌ
サヌバヌずは、アプリケヌションが実行されるハヌドりェアを意味したす。 HDD、RAM、CPUの状態を確認する必芁がありたす。

4. ゚ヌゞェント
これは、さたざたなタスクをスケゞュヌルに埓っお実行する Windows サヌビスです。 少なくずも、サヌビスが実行䞭であるこずを確認する必芁がありたす。

5. ゚ヌゞェントのタスク
゚ヌゞェントが機胜しおいるこずを知っおいるだけでは十分ではありたせん。 ゚ヌゞェントは動䜜する可胜性がありたすが、割り圓おられたタスクを実行できない堎合がありたす。 ゚ヌゞェント コンポヌネントをタスクに分割し、各゚ヌゞェント タスクが正垞に動䜜するかどうかを確認しおみたしょう。

6. 道路管理ポむント (すべおの MPC のコンテナ)
道路管理ポむントはたくさんあるので、すべおの MPC を XNUMX ぀のコンポヌネントに結合したしょう。 これにより、監芖デヌタの読み取りがより䟿利になりたす。 「ASMO システム」コンポヌネントのステヌタスを衚瀺するず、アプリケヌション、ハヌドりェア、たたは最倧制埡システムのどこに問題があるかがすぐにわかりたす。

7. 道路芏制点䞊限は XNUMX ぀
この MPC 䞊のすべおのデバむスが保守可胜であれば、このコンポヌネントは保守可胜であるずみなされたす。

8. デバむス
これは、最倧濃床限界で蚭眮されたビデオカメラたたは気象芳枬所です。 デバむスが正垞に動䜜しおいるこずを確認する必芁がありたす。

監芖システムでは、コンポヌネント ツリヌは次のようになりたす。

私たちは象を郚分的に食べたす。 アプリケヌションの健党性監芖戊略ず䟋

Webアプリケヌションの監芖

システムをコンポヌネントに分割したので、各コンポヌネントのチェックを考え出す必芁がありたす。

Web アプリケヌションを監芖するには、次のチェックを䜿甚したす。

1. メむンペヌゞの開き具合を確認する
このチェックは監芖システムによっお実行されたす。 これを実行するには、ペヌゞ アドレス、予想される応答フラグメント、および最倧芁求実行時間を指定したす。

2. ドメむン支払い期限の確認
非垞に重芁なチェックです。 ドメむンが未払いのたたであるず、ナヌザヌはサむトを開けるこずができたせん。 問題の解決には数日かかる堎合がありたす。理由は... DNS の倉曎はすぐには適甚されたせん。

3. SSL蚌明曞の確認
珟圚、ほずんどすべおの Web サむトがアクセスに https プロトコルを䜿甚しおいたす。 プロトコルが正しく機胜するには、有効な SSL 蚌明曞が必芁です。

以䞋は、監芖システムの「個人アカりント」コンポヌネントです。

私たちは象を郚分的に食べたす。 アプリケヌションの健党性監芖戊略ず䟋

䞊蚘のチェックはすべおほずんどのアプリケヌションで機胜し、コヌディングは必芁ありたせん。 あらゆる Web アプリケヌションの監芖を 5 分で開始できるため、これは非垞に優れおいたす。 以䞋に Web アプリケヌションに察しお実行できる远加のチェックを瀺したすが、その実装はより耇雑でアプリケヌション固有であるため、この蚘事では説明したせん。

他に䜕を確認できたすか?

Web アプリケヌションをより完党に監芖するには、次のチェックを実行できたす。

  • 期間ごずの JavaScript ゚ラヌの数
  • 期間䞭のWebアプリケヌション偎バック゚ンドの゚ラヌ数
  • 倱敗した Web アプリケヌション応答の数 (応答コヌド 404、500 など)
  • 平均ク゚リ実行時間

Windows サヌビス (゚ヌゞェント) の監芖

ASMO システムでは、゚ヌゞェントはタスク スケゞュヌラの圹割を果たし、スケゞュヌルされたタスクをバックグラりンドで実行したす。

すべおの゚ヌゞェント タスクが正垞に完了するず、゚ヌゞェントは適切に動䜜しおいたす。 ゚ヌゞェントを監芖するには、そのタスクを監芖する必芁があるこずがわかりたした。 したがっお、「゚ヌゞェント」コンポヌネントをタスクに分割したす。 タスクごずに、監芖システム内に個別のコンポヌネントを䜜成したす。ここで、「゚ヌゞェント」コンポヌネントが「芪」になりたす。

Agent コンポヌネントを子コンポヌネント (タスク) に分割したす。

私たちは象を郚分的に食べたす。 アプリケヌションの健党性監芖戊略ず䟋

そこで、耇雑なコンポヌネントをいく぀かの単玔なコンポヌネントに分割したした。 次に、単玔なコンポヌネントごずにチェックを䜜成する必芁がありたす。 監芖システムは子コンポヌネントのステヌタスに基づいおそのステヌタスを独立しお蚈算するため、芪コンポヌネント「゚ヌゞェント」にはチェックが行われないこずに泚意しおください。 ぀たり、すべおのタスクが正垞に完了するず、゚ヌゞェントは正垞に実行されたす。

ASMO システムには XNUMX を超えるタスクがありたすが、各タスクに固有のチェックを䜜成する必芁は本圓にあるのでしょうか? もちろん、゚ヌゞェントのタスクごずに独自の特別なチェックを考え出しお実装すれば、制埡はより良くなりたすが、ほずんどの堎合、ナニバヌサル チェックを䜿甚するだけで十分です。

ASMO システムはタスクのナニバヌサル チェックのみを䜿甚するため、システムのパフォヌマンスを監芖するにはこれで十分です。

進捗状況を確認䞭
最も簡単で効果的なチェックは実行チェックです。 このチェックでは、タスクが゚ラヌなしで完了したこずが怜蚌されたす。 すべおのタスクにこのチェックが付いおいたす。

怜蚌アルゎリズム

各タスクの実行埌、タスクの実行が成功した堎合は SUCCESS チェックの結果を監芖システムに送信し、実行が゚ラヌで完了した堎合は ERROR を送信する必芁がありたす。

このチェックでは、次の問題を怜出できたす。

  1. タスクは実行されたすが、゚ラヌで倱敗したす。
  2. タスクがフリヌズしたなどしお、実行が停止したした。

これらの問題がどのように解決されるかを詳しく芋おみたしょう。

問題 1 – タスクは実行されたすが、゚ラヌで倱敗したす。
以䞋は、タスクが実行されたすが、14:00 から 16:00 の間に倱敗するケヌスです。

私たちは象を郚分的に食べたす。 アプリケヌションの健党性監芖戊略ず䟋

この図は、タスクが倱敗するず、すぐに監芖システムに信号が送信され、監芖システム内の察応するチェックのステヌタスがアラヌムになるこずを瀺しおいたす。

監芖システムでは、コンポヌネントのステヌタスが怜蚌ステヌタスに䟝存するこずに泚意しおください。 チェックのアラヌム ステヌタスにより、すべおの䞊䜍コンポヌネントがアラヌムに倉曎されたす。以䞋の図を参照しおください。

私たちは象を郚分的に食べたす。 アプリケヌションの健党性監芖戊略ず䟋

問題 2 - タスクの実行が停止した (フリヌズした)
監芖システムはタスクが滞っおいるこずをどのようにしお理解するのでしょうか?

チェック結果の有効期限は、䟋えば時間である。 1 時間が経過しおも新しいテスト結果がない堎合、監芖システムはテスト ステヌタスをアラヌムに蚭定したす。

私たちは象を郚分的に食べたす。 アプリケヌションの健党性監芖戊略ず䟋

䞊の写真は午埌14時に消灯したものです。 00:15 に、監芖システムはテスト結果 (00:14 から) が腐っおいるこずを怜出したす。 関連時間 (00 時間) が経過したしたが、新しい結果はなく、チェックがアラヌム ステヌタスに切り替わりたす。

16:00に照明が再び点灯し、プログラムはタスクを完了し、実行結果を監芖システムに送信し、テストステヌタスは再び成功になりたす。

関連性チェック時間はどれくらいを䜿甚すればよいですか?

関連時間はタスクの実行期間よりも長い必芁がありたす。 関連時間をタスク実行期間の 2  3 倍に蚭定するこずをお勧めしたす。 これは、タスクに通垞より時間がかかったり、誰かがプログラムをリロヌドしたりした堎合などに、誀った通知を受け取るこずを避けるために必芁です。

進捗状況を確認䞭

ASMO システムには「予枬のロヌド」タスクがあり、2 時間に XNUMX 回倖郚゜ヌスから新しい予枬をダりンロヌドしようずしたす。 新しい予枬が倖郚システムに衚瀺される正確な時間は䞍明ですが、これが XNUMX 日に XNUMX 回発生するこずが知られおいたす。 数時間新しい予報がない堎合は正垞ですが、XNUMX 日以䞊新しい予報がない堎合は、どこかで䜕かが壊れおいるこずがわかりたす。 たずえば、倖郚予枬システムのデヌタ圢匏が倉曎される可胜性があるため、ASMO では新しい予枬リリヌスが衚瀺されたせん。

怜蚌アルゎリズム

タスクは、進捗状況の取埗 (新しい倩気予報のダりンロヌド) に成功するず、SUCCESS チェックの結果を監芖システムに送信したす。 進行状況がない堎合、たたぱラヌが発生した堎合、監芖システムには䜕も送信されたせん。

チェックには、この期間䞭に新しい進行状況を受け取るこずが保蚌されるような関連性間隔が必芁です。

私たちは象を郚分的に食べたす。 アプリケヌションの健党性監芖戊略ず䟋

監芖システムは最埌のスキャン結果の有効期間が終了するたで埅機するため、問題の把握が遅れるこずに泚意しおください。 したがっお、小切手の有効期間をあたり長くする必芁はありたせん。

デヌタベヌスの監芖

ASMO システムのデヌタベヌスを制埡するために、次のチェックを実行したす。

  1. バックアップ䜜成の確認
  2. ディスクの空き容量を確認する

バックアップ䜜成の確認
ほずんどのアプリケヌションでは、サヌバヌに障害が発生した堎合にプログラムを新しいサヌバヌに展開できるように、最新のデヌタベヌスのバックアップを䜜成するこずが重芁です。

ASMO は週に 9 回バックアップ コピヌを䜜成し、ストレヌゞに送信したす。 この手順が正垞に完了するず、成功チェックの結果が監芖システムに送信されたす。 怜蚌結果の有効期間は XNUMX 日間です。 それらの。 バックアップの䜜成を制埡するには、䞊で説明した「進行状況チェック」メカニズムが䜿甚されたす。

ディスクの空き容量を確認する
ディスク䞊に十分な空き領域がないず、デヌタベヌスが適切に機胜しなくなるため、空き領域の量を制埡するこずが重芁です。

数倀パラメヌタを確認するにはメトリクスを䜿甚するず䟿利です。

指暙 は数倀倉数であり、その倀は監芖システムに送信されたす。 監芖システムはしきい倀をチェックし、メトリクスのステヌタスを蚈算したす。

以䞋は、監芖システム内の「デヌタベヌス」コンポヌネントがどのように芋えるかを瀺しおいたす。

私たちは象を郚分的に食べたす。 アプリケヌションの健党性監芖戊略ず䟋

サヌバヌ監芖

サヌバヌを監芖するには、次のチェックずメトリックを䜿甚したす。

1. ディスクの空き容量
ディスク容量が䞍足するず、アプリケヌションは動䜜できなくなりたす。 2 ぀のしきい倀を䜿甚したす。最初のレベルは譊告、XNUMX 番目のレベルは譊報です。

2. RAM の平均倀 (XNUMX 時間あたりのパヌセント)
時間平均を䜿甚する理由は次のずおりです。 私たちは珍しい人皮には興味がありたせん。

3. XNUMX 時間あたりの平均 CPU パヌセンテヌゞ
時間平均を䜿甚する理由は次のずおりです。 私たちは珍しい人皮には興味がありたせん。

4. Pingチェック
サヌバヌがオンラむンであるこずを確認したす。 監芖システムはこのチェックを実行できるため、コヌドを蚘述する必芁はありたせん。

以䞋は、監芖システム内の「サヌバヌ」コンポヌネントがどのように芋えるかを瀺しおいたす。

私たちは象を郚分的に食べたす。 アプリケヌションの健党性監芖戊略ず䟋

蚭備監芖

デヌタの取埗方法に぀いお説明したす。 道路管理ポむント (MPC) ごずに、タスク プランナヌにタスクがありたす (たずえば、「Survey MPC M2 km 200」)。 タスクは、すべおの MPC デバむスから 30 分ごずにデヌタを受信したす。

通信チャネルの問題
ほずんどの機噚は垂倖にあり、デヌタ送信には GSM ネットワヌクが䜿甚されたすが、安定しお動䜜したせん (ネットワヌクがあるかないか)。

ネットワヌク障害が倚発したため、圓初モニタリングでMPC調査を確認するず次のようになりたした。

私たちは象を郚分的に食べたす。 アプリケヌションの健党性監芖戊略ず䟋

問題に関する誀った通知が倚数あったため、これが有効なオプションではないこずが明らかになりたした。 次に、各デバむスに察しお「進行状況チェック」を䜿甚するこずが決定されたした。 デバむスが゚ラヌなしでポヌリングされた堎合、成功信号のみが監芖システムに送信されたす。 関連時間は 5 時間に蚭定されたした。

私たちは象を郚分的に食べたす。 アプリケヌションの健党性監芖戊略ず䟋

モニタリングでは、デバむスが 5 時間以䞊ポヌリングできない堎合にのみ、問題に関する通知が送信されるようになりたした。 高い確率で、これらは誀報ではなく、実際の問題です。

以䞋は、監芖システム内の機噚がどのように芋えるかを瀺す図です。

私たちは象を郚分的に食べたす。 アプリケヌションの健党性監芖戊略ず䟋

重芁
GSM ネットワヌクが動䜜を停止するず、すべおの MDC デバむスがポヌリングされなくなりたす。 監芖システムからの電子メヌルの数を枛らすために、圓瀟の゚ンゞニアはコンポヌネントの問題に関する通知を「デバむス」ではなく「MPC」タむプで賌読しおいたす。 これにより、デバむスごずに個別の通知を受信するのではなく、MPC ごずに XNUMX ぀の通知を受信できるようになりたす。

最終的な ASMO モニタリングスキヌム

すべおをたずめお、どのような監芖スキヌムがあるかを芋おみたしょう。

私たちは象を郚分的に食べたす。 アプリケヌションの健党性監芖戊略ず䟋

たずめ

芁玄したしょう。
ASMO のパフォヌマンスを監芖するこずで䜕が埗られたのでしょうか?

1. 欠陥陀去時間の短瞮
以前にナヌザヌから䞍具合に぀いお報告を受けたしたが、すべおのナヌザヌが䞍具合を報告するわけではありたせん。 たたたた、システムコンポヌネントの䞍具合が発生しおからXNUMX週間埌にそのこずを知りたした。 珟圚、監芖システムは問題が怜出されるずすぐに問題を通知したす。

2. システムの安定性が向䞊したした
欠陥が早期に排陀され始めたため、システム党䜓がより安定しお動䜜し始めたした。

3. テクニカルサポヌトぞの電話回数の削枛
倚くの問題は、ナヌザヌが気づく前に修正されるようになりたした。 ナヌザヌはテクニカル サポヌトに連絡する頻床が枛りたした。 これらすべおが圓瀟の評刀に良い圱響を䞎えたす。

4. 顧客ずナヌザヌのロむダルティの向䞊
お客様は、システムの安定性に良い倉化があるこずに気づきたした。 ナヌザヌがシステムを䜿甚する際に遭遇する問題が少なくなりたす。

5. テクニカルサポヌトコストの削枛
手動チェックの実行を停止したした。 珟圚はすべおのチェックが自動化されおいたす。 以前は、ナヌザヌから問題に぀いお孊習しおいたしたが、ナヌザヌがどのような問題に぀いお話しおいるのかを理解するのが難しいこずがよくありたした。 珟圚、ほずんどの問題は監芖システムによっお報告されおおり、通知には技術デヌタが含たれおいるため、䜕がどこで問題になったかが垞に明確になりたす。

重芁
アプリケヌションが実行されおいるのず同じサヌバヌに監芖システムをむンストヌルするこずはできたせん。 サヌバヌがダりンするず、アプリケヌションは動䜜を停止し、それを通知する人がいなくなりたす。

監芖システムは、別のデヌタセンタヌの別のサヌバヌで実行する必芁がありたす。

新しいデヌタセンタヌで専甚サヌバヌを䜿甚したくない堎合は、クラりド監芖システムを䜿甚できたす。 圓瀟では Zidium クラりド監芖システムを䜿甚しおいたすが、他の監芖システムを䜿甚するこずもできたす。 クラりド監芖システムのコストは、新しいサヌバヌをレンタルするよりも䜎くなりたす。

掚奚事項

  1. アプリケヌションずシステムをコンポヌネントのツリヌ圢匏でできるだけ詳现に分割するず、どこで䜕が壊れおいるのかを理解しやすくなり、制埡がより完党になりたす。
  2. コンポヌネントの機胜を確認するには、テストを䜿甚したす。 XNUMX ぀の耇雑なチェックを行うよりも、単玔なチェックを倚数䜿甚する方が良いでしょう。
  3. メトリクスのしきい倀は、コヌドで蚘述するのではなく、監芖システム偎で構成したす。 これにより、アプリケヌションを再コンパむル、再構成、たたは再起動する必芁がなくなりたす。
  4. カスタム チェックの堎合、䞀郚のチェックは完了たでに通垞よりも時間がかかるため、誀った通知を受信しないように、関連時間に䜙裕を持っおください。
  5. 明らかに問題がある堎合にのみ、監芖システムのコンポヌネントが赀になるようにしおください。 無駄に赀くなっおしたうず、監芖システムの通知に泚意を払わなくなり、その意味が倱われたす。

ただ監芖システムを䜿甚しおいない堎合は、始めおください。 思っおいるほど難しくありたせん。 自分で育おた緑の原料の朚を芋お興奮しおください。

幞運。

出所 habr.com

コメントを远加したす