全1925文字
PR

 企業で利用するWebサービスの管理もシステム管理における重要な要素だ。システム管理者はWebサービスが正常に稼働しているかどうかを監視する必要がある。

 前回紹介したpingコマンドを使えば、サーバーやネットワーク機器が稼働しているかどうかを確認できる。しかしサーバーなどが提供するWebサービスに不具合が起きて、正常に動かなくなっていてもpingだけでは分からない。pingへの応答はOSの役割だからだ。WebサービスはOSにとってはアプリケーションの1つである。このためpingの応答があってもWebサービスにはアクセスできない事例は発生し得る。

 管理するWebサービスが増えると、いちいちブラウザーを使ってアクセスしていては時間を要する。Pythonプログラムを駆使すれば、複数のWebサービスが正常に動いているかどうかを一括して調査できる。利用するのはHTTP通信用モジュール(ライブラリー)の「requests」だ。PowerShellやコマンドプロンプトで「pip install requests」というコマンドを実行すれば利用できるようになる。

ステータスコードを調べる

 WebサービスはクライアントであるWebブラウザーからHTTPリクエストを受け取り、HTMLやCSS、JavaScriptといったファイルをHTTPレスポンスとして返す。HTTPレスポンスのヘッダーには、応答結果を示すステータスコードが含まれる。例えばWebサービスがブラウザーからのアクセスを正しく処理した場合、ステータスコードとして「200」を返す。

 ステータスコードは100~500番台が定義されており、特に注意したいのは500番台である。例えば「500」が返ってきた場合、Webサービス内部で何らかの不具合が生じている可能性が高い。またサーバーが一時的な過負荷で処理できないと「503」を返す。

 Pythonプログラムでこうしたステータスコードを調べれば、サーバーで生じた不具合をいち早く察知できるようになる。

Webサイトにアクセスして動作を確認
Webサイトにアクセスして動作を確認
[画像のクリックで拡大表示]

 では、requestsモジュールを使った単純なプログラムを実装してみよう。「https://example.com」というWebサービスにアクセスし、返されるステータスコードを表示する。プログラムの先頭でimportを使いrequestsモジュールを組み込む。するとモジュールに含まれるgetメソッドを利用できるようになる。これでHTTPのGETメソッドをWebサービスに発行する。

requestsモジュールの利用方法
requestsモジュールの利用方法
[画像のクリックで拡大表示]

 引数に調査対象のURLを指定してgetメソッドを呼び出すと、レスポンスの内容をオブジェクトとして取得できる。オブジェクト内のstatus_code属性には、返ってきたステータスコードが含まれている。reason属性にはステータスコードの理由が含まれている。

 例えばアクセス先のURLが存在しないことを意味する「404」というステータスコードが返ってきた場合、reason属性には「Not Found」が格納される。図に示した例では「200」というステータスコードが返ってきたので、reason属性は「OK」となる。