用意周到に開発、運用に取り組んでも、Webシステムに障害が発生したり、突発的な障害に対応するためプロジェクトが遅延したりすることも少なくありません。一旦トラブルが発生したら、状況を正しく捉まえて迅速に対応することは当然として、トラブルの内容や傾向を分析し、得られた知見を次の開発に活かすことも大切です。
現在はシステムを監視するツールや過去データを収集・分析するツールも開発されており、これらを活用することによって問題解決が図りやすくなっています。
今回は、Webシステムの障害の状況を「見える化」するお勧めのツールを5つご紹介します。
改めて、トラブル状況の「見える化」が必要な理由
冒頭で述べたように、トラブルが発生したら、状況を正しく捉まえて迅速に対応することが必要です。当然な話ですが、問題解決するには「どんなトラブルが起きているか」「それが開発現場でも再現するか」「その原因は何か」を正確に「見える化」する必要があります。
逆に言いますと、トラブル状況の「見える化」がされていなければ、問題の検知・解析に時間がかかったり、本当に問題が解決できているのかを他のメンバーが判断できなかったりする可能性もあります。
経験豊富なエンジニアであれば、何かしらの測定値がなくても、あるいはトラブルの内容の情報が多少不明確であっても、原因を類推して対処することもできるかもしれません。しかし、経験やスキルのある特定メンバーに過度に依存してしまうと、人材の流動性が高い開発現場では安定したプロジェクト運営が損なわれることになりますし、問題解決のためのノウハウが蓄積しないことにも繋がります。
また、システムにおける障害やトラブルをチームで解決するためには、起きてしまった後に情報収集を行うだけでなく、緊急事態に備えて日頃から定量的なデータを使ってシステムを監視したり、定量・定性データを収集して分析・フィードバックしたりして、トラブルの予兆を早めに捉えて予防することも重要です。

関連記事
Webシステムの性能テスト(パフォーマンステスト)とは?負荷テストなど目的に応じた3つの種類
障害の現象・原因を「見える化」するツール5選
システム開発では特に、トラブル発生前からの情報収集と分析が重要であると述べました。ここでは、システム障害やトラブル発生時に備えて、事象と原因を可視化するツールを5つご紹介します。
【1】ハードウェアリソースモニタリングツール
CPUやメモリの使用率、スワップの発生状況といった、ハードウェアのリソース使用状況を監視するツールです。システムの速度が低下している、応答が返ってこないという場合、このツールを利用することで、サーバーのハードウェア障害なのか、特定のプログラムによる影響なのかなど、問題の発生原因となる箇所を特定できます。
【2】負荷生成ツール
擬似的にシステムに負荷をかけ、システムの動きや状況を確認するためのツールです。サーバーに複数ユーザーが同時にアクセスしたり、大量のデータを処理したりする状況を人為的に作り出し、パフォーマンスを確認します。また、負荷の増加による処理速度の低下やエラーの発生が起きた場合、状況を再現して不具合修正に役立てるという目的で用いられることもあります。負荷テストは人力では難しいため、負荷生成ツールが利用されることが一般的です。
【3】GCログ解析ツール
ガーベジコレクション(GC)のログを取得し、分析を行うツールです。サーバー起動後利用を重ねていくうちに、システムの速度低下や無応答状態が続いた場合には、不要なメモリ領域が開放されずにメモリ不足に陥っている可能性も考えられます。解析ツールを用いてメモリ不足に陥った箇所を特定し、問題の早期解決につながることも少なくありません。
【4】APM(アプリケーションマネジメント)ツール
APMツールは、Webシステムのアプリケーション性能を監視するツールです。パフォーマンスを監視するという意味では、ハードウェアリソースモニタリングツールと同じですが、APMツールの場合はエンドユーザー視点でのパフォーマンスを監視するという違いがあります。障害の早期発見および迅速な対応が可能となり、顧客満足度向上や業務効率化を図ることができます。
【5】データ解析ツール
データ解析ツールを利用することにより、障害の詳細な傾向把握や原因究明をすることができます。取得したデータをツールに読み込み、標準偏差や相関係数を求めたり、回帰分析や検定を行ったりして、新しい気付きを得られるでしょう。既にご紹介したツールでも可視化自体は可能ですが、さまざまな角度から解析できる点がデータ解析ツールの強みです。
おわりに
今回は、「見える化」の必要性と可視化のためのツールについてご紹介しました。自動でシステムの内部情報を取得・分析するツールを活用できる体制を整えておくことで、システム障害の早期把握および迅速な問題解決が可能となるだけでなく、再発防止につなげることができます。
「見える化」による十分な効果を得るために、目的を明らかにした上で取り組むようにしましょう。

関連記事
パフォーマンスの安定性や負荷耐性といった「非機能要件」を検証し信頼性向上へ
ライター参考
-
プロジェクト管理>「見える化」の目的|Think IT(https://thinkit.co.jp/free/article/0610/9/1/)
-
現場から学ぶWebアプリ開発のトラブルハック:Webアプリの問題点を「見える化」する7つ道具|@IT atmarkit(http://www.atmarkit.co.jp/ait/articles/0703/22/news138.html)
-
ITシステム > 現行システムの見える化 > 第13回 障害原因を見える化したい!|日経XTECH(https://tech.nikkeibp.co.jp/it/article/COLUMN/20081110/318920/)
-
IT 用語バイナリ > ガーベジコレクション|Weblio辞書( https://www.weblio.jp/content/ガーベジコレクション)