お疲れ様です!おっくんです。
2022年も早1ヶ月半ほどたちましたねー。毎日が早すぎる...
記事執筆のきっかけ
私は現在、エンジニア数10名以下のベンチャー企業で勤務しています。
あるあるですが、インフラをメインで触っているエンジニアの数が少なく、インフラにおけるトラブル解決のスピードが課題となっている状況です。
つい先日、新規案件のステージング環境でURLにアクセスしても画面が表示されないトラブルが発生した際、ただ「webサイトが表示されません。」と報告するのではなく、「このような状態又は動作の為トラブルと判断した」と問題を切り分けてからインフラエンジニアに依頼をかける必要性を感じ、簡単なトラブル切り分け方法を調べたのでまとめておきたいと思います。
想定しているケース
本記事では運営している「http://www.okkun-sample.com/」というwebサイトが突然ブラウザから接続できなくなってしまったというシュチュエーションを想定しています。
クライアントのOSはMac、Webサイトは、Webサーバとその裏にあるDBサーバで構築されている前提で進めます。
記事の対象者
- 初めてエンジニアとして働くことになった方
- インフラ周りに苦手意識をもっているwebエンジニアさん
手順
1. クライアント側のネットワーク問題を疑う
まずはクライアント側のネットワークに問題がないか調べていきます。
といっても簡単でブラウザから「http://www.okkun-sample.com/」以外のサイトに正しくアクセスできる事を確認します。
2. ホスト名解決がされているか調査する
nslookup
又はdig
コマンドを利用してDNSサーバに名前解決を確認します。
このnslookup
コマンドはDNSサーバに対して名前解決リクエストを送信するコマンドです。
$ nslookup www.okkun-sample.com ** server can't find www.okkun-sample.com
IPアドレスが返却されない場合は、DNSの設定、もしくはDNSサービス自体に問題があります。
3. Webサーバとの疎通を調査する
ping
コマンドでWebサーバとのネットワーク疎通を確認します。
$ ping www.okkun-sample.com(IPアドレスでも可)
Webサーバからの応答が返ってこない場合は、途中のネットワークに問題があるか、Webサーバがダウンしている可能性があります。
※注意点
ping
コマンドにはICMP
というプロトコルが利用されます。その為、サーバ側でICMP
が許可されていない場合は、ping
から応答は返ってこないがサーバは正しく動作している場合もあります。
4. ポート番号が閉じられていないか調査する
telnet
コマンドを利用してHTTPのウェルノウンポートである「80番」に接続してみます。
$telnet www.okkun-sample.com 80
Webサーバから応答が返ってこない場合は、ポートがセキュリティ設定などで閉じられている可能性があります。
5. アプリケーション側の問題を疑う
上記①~④までのチェックをおこなった上で接続が確認できない場合は、アプリケーション側での問題である可能性が高くなります。
所感
Webサイトに接続できない場合もアプリケーションのエラー解決と同じく、一つ一つ可能性を潰し、根本原因を探し当てるプロセスは変わりません。
今までインフラ関連は難しいと先入観をもってしまい中々手を出してきませんでしたが、いざ触ってみると面白く、さらに勉強していきたいと感じています。
もっといい方法あればコメントにてご教授いただけますと幸いです。