システムモニタリング
文責: 梅林良太
"システムモニタリング"とはそもそも何か
システムモニタリングとは、あるシステムやそのシステムのコンポーネントの振る舞いや出力を観察しチェックし続ける行為であり、システムの健全性を維持するための重要なプロセスです。システムモニタリングは、メトリクス、ロギング、アラート、オンコール、障害管理、振り返り、統計など、多くの要素を含む広範な概念です。
"システムモニタリング"はなぜ重要か
システムの品質は、エラーや障害などから学び改善していくことで生まれます。
そのためには、エラーや障害について検知し、復旧するためのモニタリングとその改善を支援するための文化と技術が必要になります。
ミスを許さない懲罰的な文化のもとでは、重大事故が起きやすくなります。
システムモニタリングを代表するプラクティスの解説
APM(Application Performance Management)のためのSaaSやツールが導入され、ユーザーからみた応答速度などについて、要因ごとの影響度を定常的に分析できる状態になっているか
エラーや障害など、イレギュラーなものだけでなく、ユーザーの応答速度など将来的にサービス運営の障害となりそうな項目もダッシュボードなどで可視化しておくことが求められます。応答速度が遅くなってユーザーが離脱したり、システムがタイムアウトしてしまったりなどの問題が発覚した後に対処するのではなく、リアルタイムでこれらの値を確認してモニタリングすることで、問題発生前に兆候を掴み、予防的な対策を講じることができます。これにより、サービスの品質維持や改善に効果的に取り組むことが可能となります。
フォルトインジェクションテストや、カオスエンジニアリング等の仕組みを導入することで、重大事故につながりうるシステムの欠陥を早期に発見するための試みをおこなっているか
フォルトインジェクションテストやカオスエンジニアリングは、システムの欠陥を早期に発見し、重大事故のリスクを軽減するための手法です。フォルトインジェクションテストは、意図的にエラーを起こし、システムの耐障害性を評価します。一方、カオスエンジニアリングは、本番環境で予期せぬ障害をシミュレートし、システムの弱点を特定し、回復力を向上させる手法です。これらの試みを導入することで、未知の問題や想定外の状況に対応できる柔軟なシステムを構築し、サービス品質の維持・向上に効果的に取り組むことができます。
オートスケールなどの仕組みにより、開発者やSREが介在しなくても、適切なキャパシティコントロールができているか
オートスケーリングは、システムのリソース使用状況に応じて自動的にキャパシティを調整する仕組みです。開発者やSREが介在することなく、負荷の増減に対応してリソースを適切に制御できます。オートスケーリングを利用することで、ピーク時には十分なリソースを確保し、低負荷時にはコストを削減できるため、効率的なシステム運用が可能となります。また、突発的なトラフィック増加や障害発生時のリカバリーも迅速に対応できるため、サービスの可用性と品質の維持に貢献します。オートスケーリングを導入することで、システムの安定性と効率性が向上し、開発者やSREが重要なタスクに集中できる環境が整います。
システムモニタリングをどのようにして測定するか
システムモニタリングの効果を測定するために、以下のような指標を用いることができます。
- 平均故障間隔(MTBF):システムが故障するまでの平均時間
- 平均修復時間(MTTR):システムを修復するためにかかる平均時間
- システム可用性:システムが利用可能な時間の割合
- 障害発生率:一定期間内に発生する障害の回数
これらの指標を定期的に評価し、モニタリングシステムの改善を進めることが重要です。
システムモニタリングで陥りがちなアンチパターンとはどういう状況か
障害の発生に対しての罰則や謝罪などの、開発者が萎縮したり障害を隠蔽する方向につながるような慣習が存在する
障害発生時に罰則や謝罪を求める慣習は、開発者がプレッシャーを感じ、萎縮してしまうことがあります。このような状況では、障害の隠蔽や責任の追及が優先され、問題の本質的な解決が遅れるリスクがあります。また、開発者の創造性やチームワークが損なわれることも懸念されます。
理想的な組織文化では、障害や問題をオープンに共有し、積極的に解決策を模索する風土が育まれます。このような環境では、障害が恐れられるものではなく、改善の機会と捉えられ、組織全体の成長やシステムの安定性向上に寄与します。そのため、罰則や謝罪を求める慣習を見直し、前向きな対応ができる組織文化を築くことが重要です。
定常的に発生しているサービス上の警告を問題ないものとして無視したり、ログ自体を出さないようにしている
定常的に発生しているサービス上の警告を無視することは、重大な問題への対処が遅れるリスクを生み出します。警告は、システム上の潜在的な問題や改善点を示唆する重要な指標であり、適切に対処することがシステムの安定性や性能向上に繋がります。
また、ログを出さないようにすることは、問題発生時の原因特定や解析が困難になり、修正や最適化のプロセスが遅れることがあります。適切なログの出力やモニタリングが行われることで、システム全体の状態を把握し、迅速かつ効果的な対処が可能となります。
したがって、警告やログを無視せず、適切な対応を行うことが重要です。これにより、システムの安定性や性能を向上させ、ユーザーに快適なサービスを提供することができます。組織全体で警告やログの重要性を理解し、適切な対処ができる環境を整えることが望ましいです。
システム構成要素の構築方法や運用方法が属人化しており、同じインスタンスを構築できない
システム構成要素の構築・運用方法が属人化している場合、知識の共有が不十分であり、チーム全体の生産性や柔軟性に影響を与えることがあります。同じインスタンスを構築できない状況は、メンバーの入れ替わりや緊急対応が必要な際に、効率的な対処が困難になります。
属人化の解消には、まずドキュメントの整備が重要です。構築・運用方法を詳細に記録し、メンバー間で知識を共有することが求められます。また、定期的なミーティングやトレーニングを通じて、スキルの向上や知識の共有を促すことも有効です。
さらに、自動化や標準化を推進し、手順を容易に再現できる状態を目指すことが望ましいです。IaC(Infrastructure as Code)の導入やCI/CDパイプラインの構築などを通じて、構築・運用プロセスを明確化し、属人化を回避しましょう。これらの取り組みにより、システムの安定性や効率性が向上し、組織全体の成長に繋がります。
システムモニタリングのクライテリア:
参考文献
- Mike Julian(松浦隼人・訳)『入門 監視』オライリー・ジャパン、2019。
- David N.Blank-Edelman(山口 能迪・監訳、渡邉 了介・訳)『SREの探求』オライリー・ジャパン、2021。