サーバー監視ツールを作ろう – 2日目

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

今回は、一番肝になるhttpアクセス監視をターミナルコマンドだけで実現してみたいと思います。
 

httpアクセス監視は、「wget」または「curl」のどちらかを使えば非常に簡単に行えますが、個人的にはレガシーコマンドを使うことを推奨しているので「wget」で行います。
 

wgetの豊富な機能

wgetは、地味ながら非常に高機能を備えている素敵コマンドです。
 

試しにhelpを見てみると、そのオプションの多さにびっくりするでしょう。
 

 

バージョンが”1.17.1″というのがわかりますが、古いバージョンを使っている人は、これよりも機能が不足しているかもしれません。
 

ちなみに、2018.9.12現在での最新バージョンは”1.18″のようです。
 

http://www.gnu.org/software/wget/manual/wget.htmlこちらのページで確認ができます。
 

すべての機能を説明しませんが、簡単にwgetコマンドでできる事をリストアップしてみます。
 

1. url先の表示htmlソースコードをダウンロード。(階層ごと取得することも可能※再帰処理)
2. 任意のアドレスに対してデータをPOST送信。
3. basic認証付きサイトにログインしてアクセス。
4. DNS調査
5. ドメイン調査
6. Cookie調査
7. IPアドレスの取得

 

いろんな事できますね。神ツールです。

httpアクセスはレスポンス値200を確認すればいい?!

主にはURL先のデータダウンロードに使う場合が多いですが、今回は、wgetを使って、url先のレスポンスヘッダを取得してみようと思います。
 

インターネットのレスポンスヘッダのルールとして、ステータスコードの200番は、正常通信したという状態の事です。
 

ちなみに、ステータスコードの404番は「404 Not found」としてみることができる、ページが存在しないというエラーです。
 

また、500番台は、エンジニアには悩ましいサーバー内部エラーで、プログラムエラーや、モジュールエラーなどの意味ですね。
 

要するに任意のURLにアクセスして、レスポンスヘッダを取得して、ステータスコードが200である場合に、そのURLは正常に動作しているという判断で問題なく「生死確認」ができるという事になります。
 

具体的にwgetコマンドではどのようにするかというと、まずはステータスコードをwgetを使って取得していみましょう。
 

試しにこのブログのドメインのステータスコードを取得してみましょう。
 

 

「-S」は、サーバの応答を表示するという事で、ヘッダ情報が表示されます。
 

ちなみに、この情報は通常のこめんどレスポンス値とは違っていて、その値をそのまま取得することができません。
試しに、”> res.txt”を後ろに追加してみても、表示はされているのに値がデータで取得されないことがわかります。
 

でもコマンドを知っている人は下記のようにして取得できる事がわかると思います。
 

 

「2」というのは、返り値を表しているので、それを出力する意味になります。
 

でもそもそも-Sオプションを使わなくても下記のようにするだけで、ステータスコードの取得は簡単にできます。
 

 

簡単に解説すると、
「–spider」は、ダウンロードしないという命令
「-nv」は、冗長ではなくするという説明書きですが、余計な表示を無くすという命令
「–timeout 60」は、その名称通りタイムアウトの秒数をしていしています。もしサーバーがダウンしていたらこれを記載していないとサーバーが回復するまで、値が帰ってこなくなるので、処理て停止してしまう可能性がありますからね。
 

この時点で分かりにくい人は、ネットワークとコマンドの事をもう少し勉強した方がいいでしょう。
今回はこれ以上は深掘りしません。
 

とりあえず、これでurlに対して、ステータスコード:200の取得ができるかどうかの判定ができました。
 

次回は、これをURLリストを元に、一括で処理してみたいと思います。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です