【発注者向け】システム開発が濃いめのWebサイト制作では、必ずプログラマーにアプリケーションログを残すように伝えないと後で痛い目に合う。
Webサイト・Webシステム開発においては、発注者として開発会社に必ずこれを伝えておかないと、後で痛い目に遭うポイントがいくつかあります。その1つが「アプリケーションログを残すよう指示をする」です。
そもそもログとはカンタンに言ってしまうと、そのWebサイト・Webシステムを利用した「足跡」です。
ログをしっかりと残しておけば、問題解決にはもちろん、セキュリティ向上・マーケティングに大きく役立ちます。たとえば、システムに問題が発生してもアプリケーションログが保存されていれば、原因の特定がスムーズに行えます。逆にログがないとほとんど問題は解決できません。まるっきりお手上げでどうしようもありません。
このため、Webサイト制作・システム開発を依頼するとき、開発会社に「サーバログを必ず残してくださいね」「どうやってサーバログを残すのか教えてくれますか」と依頼・確認しておくことが必須です。その中でも特にアプリケーションログが決定的に重要になってきます。
当然ですが発注者から見れば、Webサイトは開発して終わりではなく、リリースしてからが本番です。そのとき、サーバログがあるかどうかは、リリース後のWebサイトを円滑に運用できるかに致命的かつ決定的な違いをもたらします。
気の利いていないシステム開発会社やプログラマーだと、サーバログを全く残す設定にしていない場合もあり得ます。発注者としてそこはしっかり指定・確認しておく必要があります。
今回の記事では、サーバログの概要・種類・メリット・デメリットをわかりやすくまとめました。くわえて技術者じゃなくてもシステム開発するときに必要なプログラマーへの指示も解説してす。
目次
サーバログってそもそも何?
サーバログとは、一言で簡単に言うと「ユーザーがWebサイト(つまりサーバ)に対して行った行為を自動でメモって保管したファイル」となります。たとえば、ユーザーがブラウザでWebサイトにアクセスすると、Webサーバーがコンテンツを返し、それと同時にその記録(これをアクセスログ)をサーバに残します。
サーバログはアクションがあるたびに保存され、監視や解析に利用されます。ログを調べることで、「正常にWebサイトが表示されているか」「要求通りの動作をしているか」などの解析が可能です。また、問題が発生したときにサーバログから原因を特定できます。この問題解決のために使えるというのが非常に重要で、ログがないと問題が起きたときに全く手がかりがなくどうしようもない、ということになります。
また多くのレンタルサーバ会社が保管するログというのは、基本的に「サーバにアクセスしに来た記録」だけを残しています。「誰々が会員登録した時間の記録」「誰々が上手く会員認証出来なかった内容と時間の記録」は残しません。前者をアクセスログ、後者をアプリケーションログ、エラーログと言います。本記事では「アプリケショーションログ」こそがもっともキモとなる、大事なログだと考えています。
サーバログの種類はざっくり言うと3種類ある
サーバログは大きく分けて、以下の3つの種類があります。今回肝になるのはこの「アプリケーションログ」です。
● アクセスログ
● アプリケーションログ(超重要)
● エラーログ
アクセスログ
アクセスログとは、Webサーバーなどにクライアントがアクセスした記録です。Webサーバーのアクセスログには、以下のような情報が含まれます。
● リクエスト元IPアドレス
● アクセス日時
● 指定されたURL
● URLパラメーター
● 参照元URL
● HTTPステータスコード
● ユーザーエージェント
● 要求処理にかかった時間
● 送受信バイト数
アクセスログは、トラブル発生時に原因を探る目的で利用するケースが多いです。たとえば、クラッキングされてWordPress管理画面に不正侵入された場合、アクセスログから相手のIPアドレス・ブラウザ・OSなどがわかり調査に役立ちます。アクセスログは、ほとんどの場合サーバが自動で残すので、プログラマーに何か指示を出す必要はありません。
アプリケーションログ(超重要)
アプリケーションログとは、簡単に言ってしまうと「ユーザーがシステム開発された機能を操作した時に残す記録」です。そしてこれこそが最も大事なログになります。
たとえば、「佐藤さんが1日12時1分に会員としてログインした」「伊藤さんは7日朝9時にマイページにアクセスしたが、表示が上手くいかなかった」ということが記録されます。
そしてアプロケーションログが他のアクセスログ等と決定的に違うのは、プログラマーが残そうとしない限り、残らない、という事です。これは決定的に重要です。
システムに問題が生じたときに、アプリケーションログが記録されていれば原因を素早く特定できます。プログラマーの能力によっては忘れてたり、そもそもそういうことを知らない、スキルの低いプログラマーもいます。後になって頼むと仕様の中だ外だと言ってもめたり、追加料金を取られる可能性がありますので、Webサイト・システム開発時にプログラマーに操作ログは残すが個人情報はのこさないように、としっかり依頼しましょう。また残すべきログの他に、残してはいけないログもあります。例えば生の入力したパスワードや個人情報をログに吐き出すのはNGです。それも合わせて注意するようにしてください。
エラーログ
エラーログも、アクセスログと一緒でWebサーバが自動で出力するエラーについてのログです。誰かが(ユーザーかシステムか)Webサイトにリクエスト処理をした結果、発生したエラーを記録します。何かWebサイトで問題が発生した場合、調査をする上で最も基本的なログになります。これが無いと調査しようがありません。Webサーバーで出力されるエラーログの例は以下の通りです。
アクセス失敗のログ
● リクエストしたファイルがない
● 不正なリクエスト
● Webサーバーの再起動時
ここで注意が必要なのは、アクセス失敗のログというのは、Basic認証という認証方法が失敗した場合だけ出力されます。皆さんはこういう認証を見たことありませんか?
これがBasic認証と呼ばれるものです。ここで超重要なのは、会員制サイトでログインを失敗したとか、そういうエラーログは、「アプリケーションログ」に保管されるもので、エラーログには保管されない、ということです。そしてそういう会員制サイトのシステムを開発したプログラマーが、意図的にそのログを出力を出そうとしない限り、「一切」記録されない、ということです。
レンタルサーバでのサーバログの扱い
多くのレンタルサーバでは、サーバログが自動で保存されません。最近は自動で保管するレンタルサーバ会社も少し増えてきてはいますが、ユーザーが保存設定を行う必要があることが多く、最初に設定しておきましょう。
サーバーログの取り扱いや保存期間は、レンタルサーバーによって異なります。一定期間が過ぎるとログが削除されるレンタルサーバーも多いので、必要なら定期的にログをダウンロードしてローカルに保存しましょう。
アプリケーションログを残すのはメリットしかない。
アプリケーションログを残しておくことで得られるメリットは計り知れません。ここではそのメリットと、わずかながらですがデメリットについて解説します。
メリット①問題発生時にログから解決策を探れる
Webサイトを運営していて、問題が発生したときに、ログを保存していればシステムの動作状況をスムーズに把握できます。動作状況がわかれば、問題の原因が何なのか絞り込むことが容易になります。
特に不正アクセスされた場合、原因の調査にはログが絶対に欠かせません。セキュリティ向上のためにも、ログは必ず保存するようにしましょう。
メリット②アクセス解析でマーケティング改善
アクセスログからアクセス解析し、マーケティング活動に役立てる事が出来ます。皆さんは自分のサイトにどれくらいアクセスが来ているか知る上で、良くGoogleアナリティクスを使っていませんでしょうか?あれは実は「ビーコン型」と呼ばれるアクセス解析方法で、登録すればすぐに使うことができて便利です。しかし、ビーコン型は実際のアクセス数と若干の違いが生じます。
厳密にアクセスを知るためには「アクセスログ解析型」と呼ばれる方法が一番最適です。しかし、普通の企業はそこまで厳密に知る必要はないと思うので気にしなくても大丈夫です
アクセス解析にはサーバーログを解析するサーバーログ型と、Webサイトにコードを挿入するビーコン型があり、ビーコン型で代表的なツールはGoogleアナリティクスがある、と覚えておいてください。
● セッション数
● ユーザー数
● PV数
● 滞在時間
● 検索流入数
マーケティングを通して、自社のWebサイトの収益性をさらに高めましょう。
デメリット①データ量が膨大になるので管理が手間
アクセスが多いサーバーでは、膨大な量のログが記録され続けています。そのまま放っておくと、サーバのハードディスクを圧迫してWebサイトがダウンしてしまい、「何だ?何が起きたんだ?なんで見えなくなった?」というのはまま見られる障害要因あるあるです。
このため、ログを吐き出すファイルを月別や日別に出す形とし、かつそのログファイルを別のサーバに保管または一定期間で上書きするという方法論を採るのが無難です。
1つのファイルの中に何年分も延々とログを書き込む仕様にしてしまうと、その1つのファイルサイズがとんでもな大きさになってしまい、ファイルがなかなか開かない、ファイルの中を検索するのに偉い時間がかかるというハメになります。月単位や日単位であれば快適にログファイルを扱うことが出来ます。
またログファイルをサーバ領域に保管することによって、サーバ全体のハードディスクを圧迫するのを防ぐことが可能です。ログの保管方法についても、経験値の浅いプログラマーだと何も考えず、何もしない可能性が高いです。このため念のためプログラマーにログの保管方法についても必ず「ログの保管の期間と方法について教えてくれますか」「ログは最低1年は保管しておきたい」と確認、要望するようにしましょう。
デメリット②ログでセキュリティが実現できるわけではない
ログ管理を徹底しても、それだけではセキュリティの向上は望めません。ログ管理はあくまで、発生したことの事実確認であり、問題解決の手段だからです。
セキュリティ向上には、不正アクセス対策・バグの解消・攻撃検知など別途対策が必要です。ログを分析して必要な対策を検討しましょう。
ログの保管期間はどれくらいが適性なの?
ログの保管期間は三ヶ月程度残せば、万が一問題が起きた場合に対処可能です。三ヶ月を一つの目安としてください。また、一部のシステム開発言語(例:PHPのフレームワークであるLaravel)では、デフォルトで自動的にアプリケーションログが出力されますので、保管期間をプログラマーに確認しましょう。
まとめ:プログラマーへ行うべき指示はこの4つ
Web制作のシステム開発では、前もってプログラマーに以下のことを伝えましょう。
1 アクセスログだけではなく、きちんとアプリケーションログの出力・保管をして欲しい。
2 サーバログはそれぞれ最低三ヶ月は保管して欲しい
3 ログは月単位で分割し、利用しやすいようにして欲しい。
4 サーバのディスクがフル(満杯)にならないように保管場所と方法を提案して欲しい。
繰り返しになりますが、スクラッチ(ゼロ)から開発した場合、プログラマーが意識して残さないようにしないと、アプリケーションログは記録されません。事前に課題を伝え、必要なログの種類と記録方法についてプログラマーに検討してもらいましょう。たとえば、WordPressなら「WP Activity Log」というプラグインを利用すると操作ログがすべて記録されます。ただしこの場合もシステム的にカスタマイズした領域の操作はログとして残りませんので注意が必要です。
ログを保存して問題解決をスムーズにしよう
システムには脆弱性・バグ・問題がつきものであり、解決にはログの保存が絶対に必要不可欠です。
アプリケーションログを残せば、問題が発生しても素早く原因を特定して解決できます。前述した通り未熟なプログラマーの場合だと、アプリケーションログを出力するということ自体をしない場合も少なくありません。このため、プログラマーに丸任せにせず、上記の確認をしっかり取れば安心です。