サーバログ
サーバログ(英: Server log)は、サーバ上での活動によって自動的に生成されるログファイルなどを指す。
概要
[編集]主なサーバログとしては、以下のものがある。
- ハードウエアの物理的状況(電源電圧、CPU周波数、ファン回転数、温度等)
- ハードウエア認識の有効・無効の状況
- OSの動作状況
- リソース状況(メモリー利用率、ハードディスク利用率等)
- ユーザ認証の成功・失敗状況
- サービスへのアクセス記録やエラー状況(Webサーバ、FTPサーバ等)
これらのログは常時追記保存され、リアルタイムで監視を行ったり、一定期間ごとに解析して異常を抽出するために使われる。
Webサーバ
[編集]典型例としては、Webサーバでのページ要求履歴を保持するログがある。W3C はWebサーバ向けの標準フォーマット[1]を定めているが、それ以外の独自フォーマットも存在する。新たなエントリは一般にファイルの最後尾に追加される。要求に関する情報として、クライアントIPアドレス、要求日付/時間、要求されたウェブページ、HTTPコード、バイト数、ユーザーエージェントが記録され、一般にHTTPリファラ情報(そのページに移動したときのリンク元ページ)が追加される。これらのデータは1つのファイルにまとめて記録されるか、個別のログ(アクセスログ、エラーログ、リファラログ)に記録される。しかし、一般にサーバログはユーザー固有の情報は収集しない。
これらのファイルは一般のインターネットユーザーの目に触れることはなく、サイトの管理者などが利用する。Webサーバのログを統計的に解析することで、一日あるいは一週間の時間帯ごとのトラフィックパターンを割り出したり、リファラやユーザーエージェントを分析できる。Webサーバのログを分析することで、サイト管理の効率化、ホスティングリソースの適正化、販売方針の調整の補助となる。
Linux
[編集]Linuxではサーバログは/var/log/ディレクトリ以下に、主にテキストファイルとして記録される。主なログファイルは/var/log/messagesと/var/log/secureなどであり、syslogdサービス(syslogサーバ機能)を通して書き込まれる。また、syslogdサービスを通さずに直接ログファイルを出力するプログラムもあり、例えばApache Webサーバは独自のログファイルを/var/log/httpd/ディレクトリ以下に直接書き込む仕組みになっている。
ログローテーション
サーバログは自動的に一定期間ごとに別ファイルに切り出され、圧縮ファイルとして保管される。この仕組みをログローテーションという。Linuxではこの処理のためlogrotateサービスを利用するのが一般的であり、標準設定では1週間に1回ファイルの切り分けと圧縮保存が行われる(頻度などは設定ファイルで設定可能)。
ログ解析
サーバ管理者の利便性を考慮し、各種のログファイルを自動解析してレポートを作成するツールが存在する。例えばログファイル全般のものとしてはlogwatchがあり、毎朝各種ログファイルからエラー抽出などを行い、管理者にメールを送信することが出来る。また、特定のサービスに特化した解析ツールも存在し、例えばWebサーバのログに対してはAnalogやWebalizerなどのツールが良く使われている。
データセンター内で多数のサーバやネットワーク機器のログを、(SNMPや独自の通信プロトコルを用いて)ネットワーク経由で集約し、リアルタイムでの状況表示や高度な集計作業を行うソフトウェアも存在する。商用ソフトが企業等で利用されているほか、オープンソースソフトウェア (OSS)も発展してきている。OSSでの例としては、ログ収集にFluentdやlogstash、収集したログの蓄積や解析などにElasticsearchなどの組み合わせが挙げられる。このほか、Amazon CloudWatch Logsのようなクラウドサービスも登場している。
Microsoft Windows
[編集]Microsoft Windows にはイベントログがあり、形式はバイナリで、イベント ビューアなどで閲覧できる。また、サードパーティのsyslogサービスをインストールすることにより、syslogイベントを受け取ることも出来る。
記録方式
[編集]ソフトウェアが生成したログを記録する方法は多様である。
- 標準ストリーム(stdout, stderr)
- ファイル(/var/log/ など)
- ネットワーク送信
セットアップや用途により適切な記録方式は異なる。例えばWebアプリケーション・SaaSの方法論である「The Twelve-Factor app」はstdout
への出力を推奨している。これはアプリケーションがログの詳細(送信先、保存先、処理など)に関知すべきでないという思想による[2]。stdout
へ出力されたログは単純にターミナルで表示する、ログルーターへ送られ分類される等の処理を施される[3]。
ログルーター
[編集]ログルーターは集積されたログを適切な送信先へルーティングするソフトウェアである。ログルーターはアプリケーションや基盤ソフトからのログを集積し、破棄・保存・追加処理等を判断、実際の処理を行うソフトウェアへ送信する[4]。
ログルーターを利用することで、アプリケーションはログの標準的な出力のみを担い、ルーターがログ処理を担うように関心を分離できる。ログルーター機能を有するソフトウェアにはFluentd、Stackdriverや FireLens がある[5]。
脚注
[編集]- ^ standard format
- ^ Twelve-Factor Appはアプリケーションの出力ストリームの送り先やストレージについて一切関知しない。 アプリケーションはログファイルに書き込んだり管理しようとするべきではない。代わりに、それぞれの実行中のプロセスはイベントストリームを
stdout
(標準出力)にバッファリングせずに書きだす。 The Twelve-Factor app - ^ これらの保存のための目的地は、アプリケーションからは見ることも設定することもできず、代わりに実行環境によって完全に管理される。Logplex や Fluentd などのオープンソースのログルーターがこの目的に利用できる。 The Twelve-Factor app
- ^ ログルーターは、各ログエントリを既存のルールと照合して、破棄するログエントリ、Cloud Logging で取り込むログエントリ、エクスポートに含めるログエントリを判断します。 Google Cloud
- ^ Logplex や Fluentd などのオープンソースのログルーターがこの目的に利用できる。 The Twelve-Factor app
関連項目
[編集]外部リンク
[編集]- W3C Extended Log File Format
- Syslog.org ロギング情報、議論、ヘルプなどのサイト
- Breadboard BI Web Analytics Webログ分析に関するオープンソースプロジェクト
- Cronolog ログ・ローテーションを行うプログラム
- Should I Use Page Tags, Log Files or a Hybrid Solution? ページタグとサーバログの比較