0

当社の PHP および MySQL ベースのアプリケーションは、ユーザー アクションの MySQL データベースに書き込まれるカスタム ログを作成します。これは主に、検索を容易にするためと、アプリが永続的なストレージに MySQL を既に使用していたため、当然のことでした。

現在、ログには 1,760 万行が含まれており、サイズは 2GB です。その場所を移動するときはそれほど友好的ではありません。

ログを保存するためのより効率的な方法として、コミュニティが何を提案するのか疑問に思っていました.

明らかに、このテーブルを 1 週間分のすべてのログに分割してから、重要でないログを削除し、過去の重要なログ (支払いなど) のためにテーブルを 2 つに分割できます。

一般に、次のような関数を使用してログに書き込みます。

playerlog($id,$message,$cash,$page,$ip,$time);

しかし、これはかなり簡略化されたバージョンです。ログはページの読み込みにとって重要ではないため、MySQL の INSERT DELAYED も使用しています。

4

2 に答える 2

2

MongoDB (タグから推測) でこれを行うことに興味がある場合は、ここを参照してください: http://docs.mongodb.org/manual/use-cases/storing-log-data/

于 2012-07-18T21:14:37.157 に答える
0

ログが必要なものを明確にする必要があります。挿入後の 2 番目のステップとして、ログ データを操作するジョブを設定できます。たとえば、ログを読み取って処理します (これにより、DBMS がある種のメッセージング ミドルウェアに劣化します)。これは、一部 (支払いなど) を削除されないアーカイブに保存したり、指定された保持期間後に削除される場所に認証ログを書き込んだりすることです。ただし、これはすべてユースケースによって異なります。

分析する予定の内容やデータのクエリ方法によっては、MySQL の外部にデータを保存することもできます。

いくつかの可能性:

  • イベントの分析、アラートのトリガーなどを対象とする SIEM システム (http://en.wikipedia.org/wiki/Security_information_and_event_management) を実装します。
  • Splunk (splunk.com を参照) のような SIEM のようなソフトウェアを使用します。これは生のログを処理し、ログの検索と分析を目的としています。
  • 「十分に速い」場合は、DBMS ソリューションを使い続ける
  • syslog を使用してテキスト ログ ファイルを保存するだけです。MySQL 全体をスキップできます。
  • ...
于 2012-07-18T17:21:57.017 に答える