サむト信頌性ワヌクブック実甚的なアプリケヌション

画像こんにちは䜏民サむト信頌性゚ンゞニアリングの本は、癜熱した議論を匕き起こしたした。今日の搟取ずは䜕ですか、そしおなぜ信頌性の問題がそれほど根本的なのですか珟圚、このベストセラヌの本の背埌にあるGoogle゚ンゞニアは、理論から実践ぞの移行を提案しおいたす。サむト信頌性ワヌクブックは、SREの原則ず実践がプロダクションでどのように具䜓化されるかを瀺しおいたす。Googleの専門知識は、Google CloudPlatformのナヌザヌケヌスによっお補完されたす。 Evernote、The Home Depot、New York Times、およびその他の䌁業の代衚者は、圌らの戊闘経隓を説明し、採甚したプラクティスず採甚しおいないプラクティスを説明したす。この本は、䌚瀟の芏暡に関係なく、SREを自分の実践の珟実に適応させるのに圹立ちたす。次のこずを孊びたす。



  • 完党に制埡しおいないクラりドおよび環境でのサヌビスの信頌性を確保したす。
  • SLOに焊点を圓お、サヌビスを䜜成、起動、監芖するさたざたな方法を適甚したす。
  • 管理チヌムをSRE゚ンゞニアに倉換したす。
  • SREを最初から開始し、既存のシステムに基づいお開始する方法を実装したす。Betsy Beyer、Neil Richard Murphy、David Renzin、Kent Kawahara、Stephen Thorneはすべお、Googleシステムの信頌性の確保に関䞎しおいたす。


監芖システム管理



監芖システムは、䜿甚する他のサヌビスず同じくらい重芁です。したがっお、監芖は十分な泚意を払っお凊理する必芁がありたす。



構成をコヌドずしお扱う



システム構成をコヌドずしお扱い、バヌゞョン制埡システムに保存するこずは䞀般的な方法であり、倉曎履歎の保存、特定の倉曎のタスク管理システムぞのリンク、単玔化されたロヌルバック、゚ラヌの静的コヌド分析などの機胜がありたす。匷制コヌド怜査手順。



たた、監芖構成をコヌドずしお扱うこずを匷くお勧めしたす構成の詳现に぀いおは、第14章を参照しおください。 WebむンタヌフェむスたたはCRUDスタむルのAPIのみを提䟛するシステムではなく、目暙ず機胜の敎圢匏の説明を䜿甚しおカスタマむズをサポヌトする監芖システムhttp://bit.ly/1G4WdV1。この構成アプロヌチは、構成ファむルのみを読み取る倚くのオヌプン゜ヌスバむナリの暙準です。 grafanalibhttp://bit.ly/2so5Wrxなどの䞀郚のサヌドパヌティ゜リュヌションは、UIを䜿甚しお埓来からカスタマむズ可胜なコンポヌネントに察しおこのアプロヌチをサポヌトしおいたす。



䞀貫性を促進する



監芖を䜿甚する耇数のプロゞェクトチヌムを持぀倧䌁業は、埮劙なバランスを取る必芁がありたす。䞀方で、集䞭型のアプロヌチにより䞀貫性が確保されたすが、他方では、個々のチヌムが構成の動䜜を完党に制埡したい堎合がありたす。



正しい決定は、組織のタむプによっお異なりたす。時間の経過ずずもに、Googleのアプロヌチは、䞀元化されたサヌビスずしお機胜する単䞀のプラットフォヌムにすべおのベストプラクティスをたずめる方向に進化しおきたした。これは私たちにずっお良い決断であり、これにはいく぀かの理由がありたす。統合されたむンフラストラクチャにより、゚ンゞニアはあるチヌムから別のチヌムにすばやく簡単に移動でき、デバッグ䞭の共同䜜業が容易になりたす。さらに、各チヌムのダッシュボヌドが開いおアクセスできる䞀元化されたダッシュボヌドサヌビスがありたす。他のチヌムから提䟛された情報をよく理解しおいれば、自分の問題ず他のチヌムの問題の䞡方をすばやく修正できたす。



可胜な限り、基本的な監芖範囲をできるだけ単玔にしおください。すべおのサヌビスが䞀貫したベヌスラむンのセットを゚クスポヌトする堎合、組織党䜓でそれらのメトリックを自動的に収集し、䞀貫したダッシュボヌドのセットを提䟛できたす。このアプロヌチは、自動的に起動する新しいコンポヌネントの基本的な監芖があるこずを意味したす。このようにしお、瀟内の倚くのチヌム゚ンゞニアリングチヌムでさえもが監芖デヌタを䜿甚できるようになりたす。



匱い結び぀きを奜む



ビゞネス芁件は倉化し、生産システムは1幎で異なっお芋えるでしょう。制埡するサヌビスず同様に、監芖システムは、さたざたな䞀般的な問題を通過しながら、時間の経過ずずもに開発および進化する必芁がありたす。



制埡システムのコンポヌネント間の結合はそれほど匷くないこずをお勧めしたす。各コンポヌネントを構成し、監芖デヌタを転送するには、信頌できるむンタヌフェむスが必芁です。さたざたなコンポヌネントが、監芖デヌタの収集、保存、アラヌト、および芖芚化を担圓する必芁がありたす。安定したむンタヌフェヌスにより、特定のコンポヌネントを最も適切な代替品に簡単に眮き換えるこずができたす。



オヌプン゜ヌスの䞖界では、機胜を個別のコンポヌネントに分解するこずが䞀般的になり぀぀ありたす。10幎前、Zabbixhttps://www.zabbix.com/などの監芖システムは、すべおの機胜を1぀のコンポヌネントに統合しおいたした。最新の蚭蚈では通垞、ルヌルの収集ず実行を分離しPrometheusサヌバヌhttps://prometheus.io/などの゜リュヌションを䜿甚、長期的な時系列を保存しInfluxDB、www.influxdata.com、アラヌトを集玄したす Alertmanager、bit.ly / 2soB22bおよびダッシュボヌドの䜜成Grafana、grafana.com。



この蚘事の執筆時点では、゜フトりェアに必芁なツヌルを装備し、メトリックを提䟛できるようにする、少なくずも2぀の䞀般的なオヌプンスタンダヌドがありたす。



  • statsd — , Etsy, ;
  • Prometheus — , . Prometheus OpenMetrics (https://openmetrics.io/).


耇数のデヌタ゜ヌスを䜿甚する個別のダッシュボヌドシステムは、サヌビスの集䞭化された統合ビュヌを提䟛したす。 Googleは最近、この利点を実際に䜓隓したした。埓来の監芖システムBorgmon1は、アラヌトルヌルず同じ構成でダッシュボヌドをバンドルしおいたした。新しいシステムMonarch、youtu.be / LlvJdK1xsl4に切り替えるずきに、ダッシュボヌドを別のサヌビスViceroy、bit.ly / 2sqRwadに移動するこずにしたした。 ViceroyはBorgmonたたはMonarchコンポヌネントではなかったため、Monarchの機胜芁件は少なくなりたした。ナヌザヌはViceroyを䜿甚しお、䞡方の監芖システムからのデヌタに基づいおグラフを衚瀺できるため、BorgmonからMonarchに埐々に移行するこずができたした。



意味のあるメトリック



第5章では、サヌビス品質SLIメトリックを䜿甚しお、予算に察する脅嚁を远跡および報告する方法を瀺したす。 SLIメトリックは、サヌビス品質SLOタヌゲットに基づいおアラヌトがトリガヌされたずきにチェックする最初のメトリックです。これらの指暙は、サヌビスのダッシュボヌド、理想的にはフロントペヌゞに衚瀺されたす。



SLO違反の根本原因を調査する堎合、SLOパネルから十分な情報が埗られない可胜性がありたす。これらのパネルは違反があるこずを瀺しおいたすが、違反に至った理由を知るこずはほずんどありたせん。ダッシュボヌドには他にどのようなデヌタを衚瀺する必芁がありたすか



指暙を実装する際には、次のガむドラむンが圹立぀ず考えおいたす。これらの指暙は、本番環境の問題を調査し、サヌビスに関する幅広い情報を提䟛できる有意矩な監芖を提䟛する必芁がありたす。



意図的な倉曎

SLO関連のアラヌトを蚺断する堎合、ナヌザヌに圱響を䞎える問題を通知するアラヌトメトリックから、それらの問題の根本原因を譊告するメトリックに移行できる必芁がありたす。このような理由は、サヌビスに察する最近の意図的な倉曎である可胜性がありたす。生産の倉曎を通知する監芖を远加したす。倉曎が加えられたこずを怜出するには、次のこずをお勧めしたす。



  • バむナリファむルのバヌゞョンを監芖する。
  • , ;
  • , .


これらのコンポヌネントのいずれかがバヌゞョン管理されおいない堎合は、コンポヌネントが最埌に組み立おたたはパッケヌゞ化された日時を远跡する必芁がありたす。



新たなサヌビスの問題を展開ず関連付けようずする堎合、事埌にCI / CDログをめくるよりも、アラヌトで参照されおいるチャヌトたたはパネルを確認する方がはるかに簡単です。



䟝存関係



サヌビスが倉曎されおいない堎合でも、その䟝存関係は倉曎される可胜性がありたす。したがっお、盎接の䟝存関係からの応答も远跡する必芁がありたす。



䟝存関係ごずに、芁求ず応答のサむズをバむト単䜍、応答時間、および応答コヌドで゚クスポヌトするこずをお勧めしたす。チャヌトのメトリックを遞択するずきは、これら4぀のゎヌルデンシグナルを念頭に眮いおくださいセクションを参照「4぀の黄金の信号」、サむト信頌性゚ンゞニアリングの第6章。

メトリックで远加のラベルを䜿甚しお、応答コヌド、RPCリモヌトプロシヌゞャコヌルメ゜ッド名、および呌び出されるサヌビスの名前でそれらを区切るこずができたす。



理想的には、各RPCクラむアントラむブラリにそのようなラベルを゚クスポヌトするように䟝頌する代わりに、この目的のために䞋䜍レベルのRPCクラむアントラむブラリを䞀床ツヌルするこずができたす。これにより、䞀貫性が高たり、新しい䟝存関係を簡単に監芖できたす。



非垞に限定されたAPIを提䟛する䟝存関係があり、すべおの機胜はGet、Query、たたはたったく情報がないずいう単䞀のRPCメ゜ッドを介しお利甚でき、実際のコマンドはそのメ゜ッドぞの匕数ずしお指定されたす。クラむアントラむブラリのツヌルぞのシングルポむントアプロヌチは、このタむプの䟝存関係では機胜したせん。埅ち時間に倚くの倉動があり、この「泥だらけ」の䞀郚を瀺しおいる堎合ず瀺しおいない堎合がある゚ラヌの特定の割合が衚瀺されたす。 APIは完党に機胜しなくなりたした。この䟝存関係が重芁な堎合は、次の方法で適切な監芖を実装できたす。



  • この䟝存関係のために特別に蚭蚈された個々のメトリックを゚クスポヌトしたす。ここで、リク゚ストは有効なシグナルを取埗するために解凍されたす。
  • 䟝存関係の所有者に、䟝存関係を曞き盎しお、個々のRPCサヌビスずメ゜ッド間の機胜の分離をサポヌトする拡匵APIを゚クスポヌトするように䟝頌したす。


ワヌクロヌドのレベル



サヌビスが機胜するすべおのリ゜ヌスの䜿甚を制埡および远跡するこずが望たしいです。䞀郚のリ゜ヌスには、超えるこずのできない厳しい制限がありたす。たずえば、RAMのサむズ、アプリケヌションに割り圓おられたハヌドディスク、CPUクォヌタなどです。開いおいるファむル蚘述子、スレッドプヌル内のアクティブなスレッド、キュヌタむムアりト、曞き蟌たれるログの量などの他のリ゜ヌスには、明確なハヌドキャップがない堎合がありたすが、それでも管理する必芁がありたす。



䜿甚しおいるプログラミング蚀語に応じお、いく぀かの远加リ゜ヌスを远跡する必芁がありたす。



  • Javaでは、ヒヌプずメタスペヌスのサむズhttp://bit.ly/2J9g3Ha、および䜿甚されるガベヌゞコレクションのタむプに応じたより具䜓的なメトリック。
  • 囲碁では、ゎルヌチンの数。


プログラミング蚀語自䜓は、これらのリ゜ヌスを远跡するためのさたざたなサポヌトを提䟛したす。



第5章で説明されおいるように、重芁なむベントを譊告するだけでなく、特定のリ゜ヌスが重倧な枯枇に近づいたずきにトリガヌされるアラヌトを蚭定するこずもできたす。これは、たずえば、次の状況で圹立ちたす。



  • リ゜ヌスに厳しい制限がある堎合。
  • 䜿甚量のしきい倀を超えたずきにパフォヌマンスが䜎䞋した堎合。


監芖は、サヌビスが適切に管理しおいるリ゜ヌスも含め、すべおのリ゜ヌスにずっお䞍可欠です。これらのメトリックは、リ゜ヌスず機胜を蚈画するずきに䞍可欠です。



発行されたトラフィックのステヌタス



ダッシュボヌドにメトリックたたはメトリックラベルを远加しお、発行されたトラフィックをステヌタスコヌドで分類できるようにするこずをお勧めしたすSLIの目的でサヌビスによっお䜿甚されるメトリックにこの情報が含たれおいない堎合。ここにいく぀かのガむドラむンがありたす。



  • 誀ったクラむアントの動䜜の可胜性があるためにアラヌトを発行する理由ではないものも含め、HTTPトラフィックのすべおの応答コヌドを远跡したす。
  • ナヌザヌに時間制限たたは割り圓お制限を適甚する堎合は、割り圓おが䞍足しおいるために拒吊された芁求の数を远跡したす。


このデヌタのプロットは、生産の倉曎䞭に゚ラヌ率が著しく倉化する時期を刀断するのに圹立ちたす。



タヌゲットメトリックの実装



各メトリックはその目的を果たす必芁がありたす。生成が簡単であるずいう理由だけで、耇数のメトリックを゚クスポヌトしようずしないでください。代わりに、それらがどのように䜿甚されるかを考えおください。メトリクスアヌキテクチャたたはその欠劂には圱響がありたす。理想的には、アラヌトに䜿甚されるメトリック倀は、システムで問題が発生した堎合にのみ突然倉化したすが、通垞の操䜜䞭は倉曎されたせん。䞀方、これらの芁件はデバッグメトリックに課せられおいたせん-アラヌトがトリガヌされたずきに䜕が起こるかに぀いおのアむデアを提䟛する必芁がありたす。優れたデバッグメトリックは、システムの朜圚的に問題のある郚分を瀺したす。事埌分析を䜜成するずきは、問題をより迅速に蚺断できる远加のメトリックを怜蚎しおください。



アラヌトロゞックのテスト



理想的な䞖界では、監芖およびアラヌトコヌドは、開発コヌドず同じテスト暙準に埓う必芁がありたす。珟圚、そのような抂念を実装できるようにする広く受け入れられおいるシステムはありたせん。最初の兆候の1぀は、Prometheusに新しく远加されたルヌルナニットテスト機胜です。



Googleでは、合成時系列の䜜成を可胜にするドメむン固有の蚀語を䜿甚しお、監芖およびアラヌトシステムをテストしおいたす。次に、導出された時系列の倀を確認するか、特定のアラヌトが発生しお必芁なラベルが付いおいるかどうかを明確にしたす。



アラヌトの監芖ず発行は倚くの堎合、耇数のステップからなるプロセスであるため、ナニットテストの耇数のファミリが必芁です。



この領域はただ開発が進んでいたせんが、ある時点で監芖テストを実装する堎合は、図1に瀺すように3局のアプロヌチをお勧めしたす。4.1。



  1. バむナリファむル。゚クスポヌトされたメトリック倉数が特定の条件䞋で期埅どおりに倀を倉曎するこずを確認しおください。
  2. 監芖むンフラストラクチャ。ルヌルが守られ、特定の条件が予想されるアラヌトであるこずを確認しおください。
  3. アラヌトマネヌゞャヌ。生成されたアラヌトが、ラベル倀に基づいお事前定矩された宛先にルヌティングされるこずを確認したす。


画像


合成ツヌルを䜿甚しお監芖システムをテストできない堎合、たたはステップをたったくテストできない堎合は、芁求や゚ラヌなどの既知のメトリックを゚クスポヌトする実皌働システムを䜜成するこずを怜蚎しおください。このシステムを䜿甚しお、時系列ずアラヌトを確認できたす。アラヌトルヌルは、蚭定埌数か月たたは数幎は起動しない可胜性がありたす。メトリックが特定のしきい倀を超えた堎合でも、アラヌトが意味のあるものであり、目的の゚ンゞニアに配信されるこずを確認する必芁がありたす。



章のたずめ



SR゚ンゞニアは生産システムの信頌性に責任を負わなければならないため、これらの専門家はしばしば監芖システムずその機胜を深く理解し、それず密接に盞互䜜甚する必芁がありたす。このデヌタがないず、SREは、どこを調べれば、システムの異垞な動䜜を特定する方法や、緊急時に必芁な情報を芋぀ける方法を知らない可胜性がありたす。



私たちの芳点から有甚な監芖システムの機胜を指摘し、遞択を正圓化するこずにより、監芖システムがどのようにニヌズを満たしおいるかを評䟡するのに圹立぀こずを願っおいたす。さらに、䜿甚できる远加機胜のいく぀かを調べお、加えたいず思われる倉曎を確認するのに圹立ちたす。監芖戊略でメトリックずログの゜ヌスを組み合わせるず䟿利な堎合がありたす。メトリックずログの適切な組み合わせは、コンテキストに倧きく䟝存したす。



特定の目的に圹立぀メトリックを必ず収集しおください。これらは、垯域幅のスケゞュヌリング、デバッグ、たたは発生した問題の報告などの目暙です。



監芖しおいるずきは、芖芚的で䟿利なはずです。これを行うには、その蚭定をテストするこずをお勧めしたす。優れた監芖システムは利益をもたらしたす。特定の芁件を最適にカバヌするために䜿甚する゜リュヌションを事前に培底的に蚈画し、監芖システムを継続的に繰り返し改善するこずは、成果を䞊げるための投資です。



この本に぀いおの詳现は、䞊で芋぀けるこずができたす»出版瀟のりェブサむト

»目次

»抜粋



に぀いおは居䜏者クヌポンで25割匕- Googleの



曞籍の玙のバヌゞョンの支払いの際に、電子曞籍を電子メヌルで送信されたす。



All Articles