• 締切済み

PHPでアクセスログ管理システム

掲題の通り、PHPでアクセスログを管理(管理画面より閲覧)できるシステムを作ろうと思っています。システムの実現方法に悩んでいます。「こういうのが最も動作が軽い」から「実務でこういうのを作った」「自分が作るならこう作る」までなんでも良いので(ちょっとしたヒント程度のものでもかまいませんので)アイデアをいただけたらありがたいです。 要望は以下のとおりです。 ・管理画面から閲覧ができる(ログファイルを見る必要がない) ・サーバーへの負荷が少ない ・リアルタイムがベスト ※具体的なソースのご提示はなくてもかまいません ※対象サイトの月間PVは3万~5万程度です。 ※「Google Analyticsを使えば良い」はお控えください 当方で考えたシステムは以下の3通りです。 == 1. アクセスログテーブルを作成し、ユーザーからのアクセスするたびにDBにINSERTする 2. テキストファイルに出力をしておいて、アクセスの少ない時間帯にバッチを動かして、テキストからDBにINSERTする 3. テキストファイルに出力して、管理画面でアクセスするたびにテキストを加工し、閲覧できるようにする == どれも、どこかに大きな負荷がかかりそうな気がして、いまいちこれで良いのか、という感じがしています(3万~5万というPVがどの程度のものかがいまいち掴めていない、というのもありますが…) 以上です。よろしくお願いします。

  • PHP
  • 回答数2
  • ありがとう数6

みんなの回答

  • pringlez
  • ベストアンサー率36% (598/1630)
回答No.2

あなたがどういう状況にあるのかわかりませんが、開発の経験がほとんどない方なのでしょうか?でしたら普通に周りの先輩などに聞けばいいと思うのですが。…まぁそれができない状況だから質問しているということなのでしょうかね。 月間5万のトランザクションという事だと私からすると小規模で、どんなつくりにしても問題は起きないだろうと思ってしまいます。将来アクセスが激増して月間500万になったとしても、30日*24時間*60分*60秒=259万秒で割れば、1秒当たり1.9件です。ので普通にリアルタイムにDBにINSERTで何も問題はないでしょうね。さらにピーク時は平均の10倍のアクセスがあるのだとしても、1秒19件、1件当たり50msならば(そこまで行くとサーバー性能によりますが)ギリギリ持つと思います。というかそれくらいは耐えられるシステムを作りたいものです。 あと考慮することはDBの容量など。1レコードあたりのバイト数(もちろんインデックスも付与するのでしょうからその分の容量もきちんと考慮する事)と何件分・何年分保存するかの要件から保存に必要な容量を計算しそれを根拠にハードを確保したり、逆にハードが決まっているなら何件保存できるか逆算しておくべきでしょう。そして古いものは削除するのかとかその辺を考えます。「どのくらい使えるのか自分でもさっぱりわかりません」なんてことを言うものなら、入社1年目でもかなり恥ずかしい事だと思います。 それから検索ですかね。将来データが溜まった時に例えば100万件のデータを1画面で表示しようとすればどうしたってHTML作成に時間がかかってしまいます。ので、ページングしたり検索数の上限値を決めたり、期間指定を必須とし半年以内とするとか、データ数をしぼる何かしらの工夫は必要でしょう。 さらに、データの追加と検索はプロセスを分離した方がいいかと思います。万が一、検索時にデータを絞る処理がきちんとできていなくて、検索の応答が返ってこなくなってしまった場合などでも無関係にデータの追加ができるようにとか。

kazumae
質問者

補足

質問内容は「高負荷によって障害が起きないようにするための方法」ではありません。先頭に書いてあるとおり「軽量なアクセス解析システムのプログラム実装アイデア」です。システムという書き方が悪かったですかね。質問の仕方が悪かったのならすみませんでした。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

webalizerでログ解析してみて、機能の過不足を調整してみては? (webalizerを使えという意味ではなくあくまでも必要機能確認のため) リアルタイムと負荷が少ないのは相反しているので。 更新スケジュールを1時間程度にして定期処理を回すのが妥当では?

kazumae
質問者

お礼

ありがとうございます。更新スケジュールを多目にして、一度のクエリーの負荷を減らすということですね。参考にさせていただきます。

関連するQ&A

  • アクセスログについて

    会社のサーバ管理者をしているtani-mariと申します。 Windows NTでのイベントビューアーからアクセスログは取得して管理を 行っているのですが、Windows2000をファイルサーバとしても運用を行っています。Windows2000でもアクセスログを取得することはできるのでしょうか? 管理ツールのなかのイベントビュアーをみてもそれらしいものがでてこないので、無理なのかなぁ~と不安になっています。 もし難しい場合アクセスログを管理できるツールなどをご紹介していただけないでしょうか。 お手数ですがよろしくお願いいたします。

  • アクセスログを取りたい

    エクセルのファイルをHTTP上に置いてユーザ毎に権限を持たせて ブラウザから閲覧できるようにします(ユーザ毎にアクセス制限をかける)。 アクセス制限をかけるのは .htaccessで出来るみたいですがそのファイルを誰が見たかアクセスログを取りたいのですがどのようにすれば実現可能でしょうか? 希望として.htaccessで出来ればやりたいのです。

  • ログ解析でDBを使うのは適切かどうか。

    アクセスログ保存でSQLサーバを使おうとと思っているのですが、件数が多くDBかテキスト保存か迷っております。 状況 ・毎月10種類くらいログ取得対象が存在する。 ・1つの画像には、大体34万/月のアクセスがある。 ・画像は毎月変わる。 これのログを取得したいのですが、 1つのテーブルで管理しようとすると、月に34万x10=340万レコード増えていく事になります。 また画像ごとにテーブルを作成するとテーブルがどんどん増えていってしまいます。 こういった場合はDBを使うのは適切なのでしょうか? テキストログなどで、1つの画像ごとにログを追加していった方がよいでしょうか? ・1つのテーブルで情報を管理 ・1つの画像ごとにテーブルを作成して管理 ・1つのファイルごとに管理 のどれがよいと思われますでしょうか? これほど大きいレコード数を扱った事がないのですが、どなたかアドバイスいただけたらと思っております。 よろしくお願いいたします。

  • 管理者により収集されるアクセスログの内容

    私の勤務先では、情報セキュリティ対策の一環として、今後全従業員のパソコンのアクセスログ を収集するとの通知がありました。アクセスログの簡単な説明として「ホームページの閲覧情報 の記録」とあるのですが、一般的にどんな記録がどのくらいの期間保存されるのでしょうか? 例えば、パソコンで閲覧したすべてのサイトのURLがそのまま記録されるのでしょうか? ポータルサイトに入力した単語やネット上の銀行の入出金明細なども記録されるのでしょうか? もし管理者により収集されたアクセスログのサンプルのようなものが参照できるページがあれば 教えてください。よろしくお願いいたします。

  • 【.NET】ログ出力について

    以下の環境のWEBシステムにおいて、ログアウトの際、セッション切れの際にログを出力できないか調査しています。 (サーバーOS) Windows Server 2008 R2 Standard (DB) SQLServer 2008 R2 (開発言語) .NET Framework Version 3.5 SP1 (サイト管理) IIS 尚、現状以下のような調査状況です。 ◇ログアウト時のログ出力 ⇒ .NET上では厳しく、windowsサービスとして別途実装が必要と思われる… ◇セッション切れ時のログ ⇒ セッションを管理しているIIS上でアクセスログとして出力できないか調査中だが…困難と思われる… これらの実現に向けて、何か良いアドバイスがあれば是非お聞きしたいです。 よろしくお願いいたします。

  • 外部からのアクセスログを取りたい

    現在、相当古いルータを使っているせいで、アクセスログが意味不明な文字列です。 (時間帯くらいしか解読出来ない) しかもtxtファイルなどとして出力する事が出来ません。 外部からのアクセスログを取り、txtファイル形式などに出力出来るソフトウェアはありませんでしょうか? 出来ればフリーウェアで。 内部アクセスはWin2000AdvancedServerのアクセス権限付与と ローカルセキュリティポリシーで対応しようとしています。 NortonInternetSecurityって外部からのアクセスのログってとれましたっけ? まず、外部からのアクセスのログを取りたいので、 何か最適なソフトウェアがありましたらご教示下さい。 因みにルータの交換というのは検討中です。

  • sqlserverのログ

    DBに負荷をかけている処理、端末をつきとめようと思いログの解析をしているのですが、管理→SQL Serverログでは十分な情報がのっていません。どなたかもっと詳細なログを参照する方法をご存知でしょうか?よろしくお願いします。

  • Accessテキスト日付変換

    NASのアクセスログを管理するDBを作成しておりますが、日付が下記形式となってます、日付型・日時型に簡単に変換する方法はありますでしょうか? ログ日付項目 Jan 15 16:50:03 一連の処理 1、NASのログファイルを、秀丸エディタで、CSV出力できるようマクロで整形保存 2、Accessでログ整形CSVファイルを、インポート ただし、ログの日付が、上記のテキストで吐き出されており、Access上で日付・時間として取扱いできません。 エクセルで、ログ整形csvを読み込むと自動で日付型として認識しますが、残念ながらAccessでは、日付型として認識してくれません。 簡単に変換できる方法があればご教授ください。

  • ファイルサーバのアクセスログはどこにあるのでしょうか?

    windows2003サーバをファイルサーバにし、数拠点とVPNを構築しております。 他拠点のクライアントよりファイルサーバを閲覧したとき、通常ですとLANではないので仕方ない程度の速さですが、反応が遅くとても耐えられない時があります。 アクセスが集中しているからかと思い、アクセスを監視したいと思うのですが、どこをみたらよいのかわかりません。アクセスログはどこにあるのでしょうか? また、この様な場合はどこに問題があるのでしょうか? よろしくお願いいたします。

  • loggerを使用し、ログを管理したいのですが・・

    前回、いくつかのプログラム(約50本)で1つのログファイルを使用し、ログを管理したい という質問をさせていただき、リダイレクトでログを出力する場合、同時に同じ ファイルへ書き込みに行くと、書込みが保障されないためRDBMSを使用してログを 管理したほうが良いという回答をいただきました。 ただ現状開発がほぼ終わっている段階のため、RDBMSを使用してログを管理する 方式は、選択しづらい状況です。(最終的にRDBMSを使用するしかない場合は、 RDBMSを使用します。前回回答を下さった方々には本当に申し訳ないと思っています。) そこでloggerコマンドを使用して、syslogにログを出力し、ログを管理したいと考えています。 loggerコマンドでsyslogに出力する場合、同時にファイルに書込みにいった場合、自動的に 書き込むファイルを振り分けてくれるようなので。(確証はもてておりません。) そこで質問のなのですが、本当にloggerコマンドで同時にファイルに書込みにいった場合、 自動的に書き込むファイルを振り分けてくれるのでしょうか? また、今回syslogには、プライオリティ(重要度)(INFO、WARNING、ERROR等)に関係なく 全てのログを出力しようと考えています。プライオリティがINFOの情報は、「○○処理開始」 レベルのログとなっています。(今回出力しようとするログの95%以上は、プライオリティがINFO の情報となります。)一般的に運用する場合、syslogにプライオリティがINFOの情報は出力 するものなのでしょうか? 申し訳ありませんが有識者の方ご教授ください。 (特に2つ目の質問はあいまいでわかりづらい質問ですみません。)