パワフルなサポートエンジニアに必要なスキル: OS情報の取得と分析
OS情報の取得がなぜ重要であるかを理解することは、サポートエンジニアにとって不可欠です。その重要性と具体的な方法について説明します。
OS情報の必要性
アプリケーションが正常に動作しない場合、原因はOSのリソース不足かもしれません。しかしながら、アプリケーション自体がリソース不足をログに詳細に表示することは難しいです。
- CPU枯渇:そもそもアプリケーションが動かないのでログすら出せない。
- メモリ:メモリ確保しようとしたときにOSからリソース不足のエラーが返ったことは記録できるが、なぜメモリ枯渇したかはわからない
- ディスクI/O:ログが突然でなかったり、タイムスタンプの間隔が開いたりといった症状が確認できるが、ディスク問題との紐づけができない。
そのため、アプリケーションログだけからは問題の本質を把握することは困難です。ここで重要となるのがOS情報の定期的な取得です。
OS情報の取得方法
以下では、WindowsとLinuxのそれぞれについて取得すべき情報を示します。
Windows
Windowsイベントログ
CPU: コマンド wmic cpu get loadpercentage
メモリ: コマンド wmic OS get FreePhysicalMemory
ディスクI/O: コマンド typeperf "\LogicalDisk(_Total)\Disk Transfers/sec"
Linux
syslog
CPU
ps (取得時刻も記録すること)
top (全プロセスの情報を取得した方がよい)
メモリ: vmstat (採取間隔は細かい方がよい)
ディスクIO
OS情報取得のポイント
取得時刻の記録: awkや dateなどを使い、データ取得時刻も一緒に記録します。取得時刻がないデータは解析で使えません。
プロセス単位での取得: アプリケーションとは別のプロセスがOSリソースを枯渇させている可能性がありますので、症状が発生しているプロセスを特定することが重要です。このため、OSレベルでの情報取得だけではどのプロセスが問題を引き起こしているのか特定することができません。全プロセスの情報を取得しましょう。また、Javaプロセスなどマルチスレッドの問題に対しては、スレッドやLWP単位のプロセス情報が必要となります。
定期的な情報取得: 問題発生中の情報が重要であり、そのためには定期的な情報収集が必要です。採取間隔は1秒間隔が推奨で、最低でも1分間隔とします。これにより、問題発生時の状況をより詳細に把握することができます。
常時採取すること:障害はいつ起こるかわからない
採取間隔の考え方:問題が発生中に最低3~5ショットの取得が必要です。これは、値の遷移が「↑↑↑(常に上昇)」、「↑↓↑(上がったり下がったり)」、「↓↓↓(常に下降)」であるかが、分析に重要なためとなります。(2ショットだけだと増減の傾向がわかりません。つまり、問題発生中に3~5ショット情報が取得できるように、採取間隔を設定すればよいことになります。)
テキスト形式での取得: データはテキスト形式で取得します。スクリーンショットでは値が不鮮明であり、数値分析もできないため、解析に使えません。統合管理ツールなどでOSリソース監視をしているから大丈夫!と安心せず、テキストでエクスポートできるか、どのぐらいの間隔で出力できるか、ツールのサポートに確認しておきましょう。
ツール使用時の注意点: ツールを使ってデータを取得する場合は、取得しているデータの詳細をツールの開発元に確認しておきましょう。一言にメモリ値、といっても様々あります。OS コマンドの何にあたるかまでサポートに伝えることができると、良い分析につながります。
OS情報の取得とその分析は、サポートエンジニアとして成功するための重要なステップです。上述のポイントを心に留め、適切な情報を効率的に収集することで、問題解決をスムーズに進めることが可能となります。