Quora回答シリーズです。
質問
今どきはWebサーバー毎にアクセスログやエラーログを保存せずに共通の別サーバーに保存するのが主流ですか?
https://qr.ae/pNy6HG
一定規模以上のサービスだとよくやるやつですね。
回答
クラウド環境において、ある程度の規模のサービスですと、WebサーバにAutoScalingの設定をすることがよくあります。この場合は必要なログを別のサーバ等に逃がす設定をするのが定石です。
AutoScalingとは
AutoScalingは起動中のサーバの負荷が高まると、自動的にサーバ台数を増やしてくれる、逆にサーバの負荷が平常時に戻ると増やした分のサーバを落として元の台数に戻してくれる機能のことです。(時間によるスケジュールも可能です)
ようは利用状況に応じてサーバ台数が増えたり減ったりするので、ログなど必要なデータは別の場所に保存しておかないと縮退するタイミングで消えて無くなります。
具体的な手法
よく見かけるのは他の方が書かれているようなsyslogの他に、fluentdのようにローカルに保存されたデータを一定のタイミングで収集する仕組みでしょうか。
またAWSではサーバの縮退時に、指定した処理を行ってくれる機能があるので通常はこちらを利用してS3などに逃がします。
リアルタイム性が必要とされるような場合にはデータのストリーミングサービスを利用することもあります。
余談ですが、今となっては静的なファイルを配信するだけでしたら、S3を利用することが増えましたのでサーバそのものを使わないケースもあります。AutoScalingを利用する場合はPHPのようなプログラムを動かすようなアプリケーションサーバ(APIサーバ)で利用する機会が多いですね。