1

第章

身近なシステムログからウェブやデータベース、そしてビッグデータの基礎までログを読む技術

1

ログの基本をおさえておこう 1-

手がかりを見いだす眼力をつくる

ログの基本をおさえておこう

11-Mail jj2kon@gmail.com

Author▼図 2 Syslog のログ書き込みの流れ
ヒント 図 1 では、ログの出力先をファイルとしていますが、ログの出力先はファイルとは限りません。データベースやメールなどへ出力されるこ

syslog はログの近藤 成（こんどう じょう）

Web http://server-setting.info/③ ログの出力先に Apache が起動した時のログ

そもそもsyslogは、Mail（SMTP：Simple Mail

1
そもそもログは、ソフトウェア注（プログラムの意味）が実行された経過情報を出力したもMail
サーバ

FTP
log

FTPlogUnix 系 OS（Linux も含む）
では、何といってす。

Maillog

FTP
ログファイル

syslog

基本ですもログと言えば syslog（シスログと呼ばれる）で情報を出力する②ログファイル
書き込みともあります。

ログは、システムの稼働状況をはじめとして、さまざまな情報を蓄積しています。本章では、システムログ、アプリケーションのログ、それぞれのログの読み方・扱い方を解説します。これによって、システムに障害が起きたときに原因追及ができるようになったり、分析ができるようになります。まず本節 1-1 では、ログの基本をしっかりと学びます。

ログは、いつ、だれが、どこに収集するの？

①ログ出力

Maillog

FTP
サーバ

Mail
ログファイルTransfer Protocol）
サーバの代表的なアプリケー④ Apache が起動完了し、Web サイトへのアクションであるsendmail 注 3 のログアプリケーショセスが可能となる。そこへ、ユーザからそのンとして開発されたものです。つまり、最初は、Webサイトへアクセスがあったとする

単純に Mail サーバ専用のロガープログラムだっsyslog の基本機能①「ログを書き込む」のです。つまり、プログラムが実行されたときに、⑤ユーザからWebサイトへのアクセスをApacheたわけです。これが便利だと気づいた開発者た

1 つ目の機能はログを書き込む機能です。言あらかじめ決められている出力先（ファイルなど）は検出し、ユーザへ要求ページを返信する

ちが、こぞってほかのアプリケーション（FTP

い換えれば、ログの出力を管理する機能のことへ、プログラムの処理情報を書き込みます。と同時に、日時情報（いつ）とともにユーザサーバなど）
でも取り入れて、sendmailと同じよです。たとえば、ログの出力先がファイルの場

一般的な UNIX 系のアプリケーション情報（だれが）、要求されたページ情報（何をうに syslog アプリケーションを使ってログ情報合は、ログファイルへの書き込み、ログファイしたか）をログ情報として出力するの出力を行ったので、デファクトスタンダードルの管理を行う機能のことです。

注2のほとんどは、ログの出力先（ファイル名など）を指定ができるようになっており、そこにあらかじめ設定しておけば、そのアプリケーションが起このような流れで Apache のログ情報は出力動した際に、その設定情報を読み込み、指定しさ れ ま す。Apache の ロ グ に つ い て は、
「1-2てあるログの出力先（ファイルなど）へ出力されWeb サーバのログを見てみよう（」
で解説します。

るようになります（図 1）。
ヒント ここで紹介する CentOS のデフォルトの①Apache 起動/var/log/ 配下のディレクトリおよびファイルへ① OS から Apache が起動される② Apache は、起動時に設定ファイルの情報を読み込む。そこで、ログの出力先を確認する
注 1） ここでは、ハードウェアとの違いを強調するためソフトウェアという表現を使っています。ここでの意味は、プログラ
ムと同義です。
注 2） プログラムの中で一般的にサービス（デーモン）として提供されているプログラムをここではアプリケーションと呼ぶことにします。

12 - Software Design

や FTP サーバ
（vsftpd 注 6 など）か
postﬁx 注 5 など）のが syslogプロトコルと言われるものです。

らのログ情報を syslog がログファイルへ書き込

ヒント 一般的に syslog というと、広義のアプリrsyslog や syslog-ng などのアプリケーションを含

Apache④Web サイトへアクセス②設定ファイルを読み込み、ログの出力先を確認する③ログファイルへ書き込む
Apache⑤Web サイトアクセスを検知、要求ページを返信し、同時にアクセス情報をログ情報として出力する

むまでの大きな流れです。
① Mail サーバやFTPサーバなどでログ情報を書めたもの）として使うことが多いと思っていました。

き込みたい場合、syslog へログ情報を渡す

しかし、最近の Web 情報では syslog とはプロトコ② syslog はそのログ情報を受け取り、誰からルだという記事をよく見かけるようになりました。

出力するようになっています。

Apache のログ出力までの大きな流れです。

た と え ば 図 2 は、Mail サ ー バ（sendmail やた syslog を体系づけて RFC 3164 注 4 にまとめたケ ー シ ョ ン の 総 称（た と え ば、以 降 で 解 説 す る▼図 1 Apache のログ出力までの流れ

設 定 で は、ロ グ の 出 力 先 は、ほ と ん ど の 場 合、たとえば、図 1 は Web サーバとして有名なになりました。このデファクトスタンダードになっ

個 人 的 に、少 し 違 和 感 を 感 じ て 調 べ て み る とwikipedia にそれに近い表現で書かれているのを見つけました。想像ですが、その情報を元に、いろいろな方々が書かれたのではないかと思います。のログ情報か確認し、各アプリケーション用のログファイルへ書き込む
このように非常に単純な流れです。これによっ

このような呼称は、広く普及したほうが正しくなって Mail サーバや FTP サーバは、ログファイルてしまうので、今では、どっちが正しいとは言えへの書き込みおよびそのファイルの管理を行うなくなってきているのかもしれません。

必要もなく、手間が省けて大助かりというわけです。ただ、必ず syslog がインストールされて

注 3） http://www.sendmail.com/sm/open_source/
注 4） RFC とは、Request for Comments の略で直訳すれば「コメント募集」となります。もともとは、広く意見を吸い上げる意味合いで使用されたようですが、今では少し異なり、インターネットに関する技術の標準を定める団体である
IETF が正式に発行する公開文書を意味します。RFC 3164
では、The BSD syslog Protocol が定義、公開されています。

いるとも限らないので、一般的なアプリケーショ
注 5） http://www.postfix.org/ ［日 本 語］
http://www.postfix-

jp.info/

注 6） https://security.appspot.com/vsftpd.html

Special Issue - 13

1

第身近なシステムログからウェブやデータベース、そしてビッグデータの基礎までログを読む技術

章

1

ログの基本をおさえておこう 1-

手がかりを見いだす眼力をつくる

ンは、自前のログ情報出力・管理機能を持って③ ログサーバ内の syslog は、そのログ情報をリース）で更新が止まってしまいました注 7。また、います。もちろん、syslog への出力機能も、ほアプリケーションサーバから受け取り、誰syslogd は、ログ情報の紛失の可能性やネットとんどのアプリケーションが有しています。

からのログ情報かを確認し、各アプリケーショワーク上のログ情報が暗号化ができないなどのン用のログファイルへ書き込むいくつかの問題が指摘されていました。

ヒント

Windows では、この syslog のログの出力これらの問題から、とくに多くのLinuxディスト管理機能をイベントログが行っています。

syslog の基本機能②「ログを収集する」
2 つ目の機能は、ログの収集管理機能で、複数のサーバのログ情報を 1 台のログ専用サーバで集中的に収集し管理する機能です。

このようにネットワークを介してログ情報をリビューションでは、sysklogd（つまり、syslogd、一ヵ所に集めて管理できます。大規模なシステklogd）
パッケージは採用されなくなっています。

ムでも、この機能を利用し、ログサーバの情報代わりに採用されているsyslogアプリケーショ

管理をしっかり行えば、運用の手助けになるこンの後継者には、大きくsyslog-ng と rsyslog の 2とは間違いありません。

つがあります。以降、この 2 つのアプリケーショ

このようにアプリケーションを開発する側とたとえば図 3 は、図 2 の例に倣って Mail サー

したら、ログ情報を syslog へポイポイと投げてバ（sendmail もしくは postﬁx など）
や、FTP サー

おけば、あとは syslog が何とかしてくれるわけバ（vsftpd など）
からのログ情報を syslog（アプです。確かに便利ですよね。

リケーションサーバ）がログの専用サーバ（ログサーバ）へ送信し一括管理するという大きな流れです。
① Mail サーバや FTP サーバなどでログ情報をみを可能にすることでロギングのスイス・アー

syslog というアプリケーション

ミーナイフのようなもの（写真 1）
へと進化しましょうか。この名前のとおり先の syslog アプリ

した（このキャプションは公式サイトの訳です）。

CentOS 5 では、アプリケーションとしてのケーションの問題を解決すべく開発されたアプ

先の syslog-ng 同様、rsyslog も syslog プロト

リケーションです。syslog プロトコルのサポー

コルのサポートはもちろんのこと、次のようなトはもちろんのこと、次のような主だった機能主だった機能が追加されています。

は今や利用されていない
syslogd（syslog デーモン）
は、バ内の syslog へログ情報を渡す

・klogd ( カーネルログデーモン )の2つのアプリケーション（デーモン）をsysklogdという 1 つのパッケージで提供していました。
しかし、syslogd は、バージョン 1.5（2007 年リ▼図 3 syslog のログ収集の流れ

Column

①ログ出力
Mail
サーバ

アプリケーションサーバ

MaillogFTP
log②ログ情報をログサーバへ転送する駆使して行っていました。その当時は、まだまだ、FTP
サーバ
ログサーバ

FTP
log

syslog
Syslog③ログ情報を受信し、ログ情報によってファイルを選択し、ログファイルへ書き込む

syslog がなかった時代

syslog がなかった、あるいはアプリケーションがまだ syslog に対応していなかった時代では、ログの一括管理は自前の UDP によるファイル転送などをsyslog

・ ログの分類機能（ログ情報の紛失の回避）
・ SSL/TLS を使用してセキュアログ

・ SSL/TLS を使用してセキュアログ（ネットワーク経由の暗号化の実現）（ネットワーク経由の暗号化の実現）

・データベースへのログ出力

・ データベースへのログ出力などさまざまな機能が盛り込まれています。

rsyslog の機能とはrsyslog 注 9 は、rocket-fast system for log
syslog 」
ぐらいの意味でしょうか。そもそも数回送られていた時代でもありましたから、メールrsyslog は、標準の syslogd の後継として始まりましたが、多種多様なソースコードからの入力を変換、結果をさらに多様な出力先への書き込

今でこそ、ほぼリアルタイムに送受信できるメールもそんな感じだったんですよ。この syslog も例外でMail
ログファイル

なく、開発された当時は、UDP がメインでした。
そのため、ここでの転送も UDP がメインです。

注 7） http://freecode.com/projects/sysklogd
注 8） ラ イ セ ン ス：LGPL（core 部）
、LGPLv2（plugin 部）
http://www.balabit.com/network-security/syslog-ng/
opensource-logging-system

注 9） ライセンス：GPLv3（http://www.rsyslog.com）

14 - Software Design

・ TCP によるログ情報の送受信（ログ情報の紛失の回避）

processing の略で、直訳すれば「猛烈に早いが普通の時代です。メールもその UDP 接続で 1 日に・ ログの分類機能

・ TCP によるログ情報の送受信の常時接続などは夢物語のような時代でした。UDPのやりとりは、文字どおり郵送の手紙感覚でした。

Maillogが追加されています。

電話回線＋モデムでの接続がメインで、TCP 接続で接続で 1 日に数回、コンピュータ同士を接続するのFTP
ログファイル

syslog-ng の機能とはで、直訳すれば「次世代 syslog」
ぐらいの意味で・syslogdのログ情報を受け取りログサーバへ転送するンについて解説します。

このようになんでもかんでも 1 つのナイフにぶら下がっている様を言いたいんでしょうか、それとも、これだけ機能が豊富だよということでしょうか。いずれにせよ、 便利であることは間違いないと思います。

syslog-ng 注 8 は、syslog New Generation の略

書き込みたい場合、アプリケーションサー②アプリケーションサーバ内の syslog は、そ▼写真 1 スイス・アーミーナイフ

ヒント Web 情 報 で rsyslog を 検 索 す る と、rsyslog は、reliable syslog（信頼性の高い syslog の意味）の略だというページを多く見つけました。

reliable syslog を目指したのは確かですが、名前の由来は、公式サイトで上記のように記載があったので、プロトコルと混同されているのではないかと思います。

CentOS 6 では、この rsyslog が採用されています。また、Debian でも rsyslog が採用されており、主要な 2 つの Linux ディストリビューションで採用されたことによって、rsyslog が今やデファクトスタンダードになりつつあると言っても良いかもしれません。

Special Issue - 15

1

第身近なシステムログからウェブやデータベース、そしてビッグデータの基礎までログを読む技術

章

ここまで、ログ、syslog の基本的な機能を解インストールされた状態で、なおかつ、何も変説してきました。ここからは、実際に CentOS更されていない状態（初期（デフォルト）状態）
で6 を使って具体的な設定、使い方を解説します。

あることを前提に解説します。

また、以降 syslog と表記する場合は、狭義の意
味での rsyslog を指すのではなく、広義の意味で syslog 対応アプリケーションの意味として表リモートアクセスしてみよう
まずは、CentOS へログインしてみましょう。
SSH に よ る リ モ ー ト ロ グ イ ン を 行 う に は、記することに注意してください。

syslog へコマンドを使って出力してみよう
ここで CentOS 6 ＋ rsyslog 環境で実践することで、まずは syslog が、どのようなものかを肌で感じてもらおうと思います。CentOS 6 は、Mac では、Mac OS X ターミナルを使うと良いでしょう。Windows のターミナルソフトは、コマンドプロンプトです。そもそもデフォルトで ssh コマンドが存在しませんので、ssh コマンドのインストールを行うか、別のターミナルソフトを使うことになります。ここではターミ

2014 年 5 月現在の最新版 6.5 です。rsyslog のナルソフトの TeraTerm を使ってリモートログバージョンは、5.8.10 です。また、CentOS 6インを行ってみます（TeraTerm のインストー

は便宜上リモートアクセス（SSH 接続）して使ルおよび設定は多くの Web サイトで紹介され用します。SSH 接続するためには、SSH サーていますので、ここでは割愛します）。

バ（openssh-server）
が CentOS 側で起動していなければいけません。
もし、SSH サーバ（openssh-server）
がインストールされていないようなら、サーバのコンソール画面から次の要領で簡単にインストールできますので、インストールしてみましょう。

コマンドを使ってみよう
まずは、簡単な ls コマンド
（Windows でいうところの dir コマンド）を使ってみます（図 4）。

パ ラ メ ー タ の -l は リ ス ト 出 力、 -a は、すべてを意味します。実行すると上記のようにすべての情報をリスト形式で出力します。

$ yum install openssh-server

次に ps コマンドを使って、syslog のプロセ……（省略）……

スを確認してみます（図 5）。

Is this ok [y/N]: y……（省略）……

ps コマンドは、現在のプロセスの状態を出Complete!

インストールを終えたら、起動しておきましょう。
$ /etc/init.d/sshd start
sshd を起動中:

CentOS 6 ＋ SSH サーバ（openssh-server) が▼図 4 ls コマンドを試す$ ls -al
合計 20
drwx------. 2 hoge hoge 4096
drwxr-xr-x. 3 root root 4096
-rw-r--r--. 1 hoge hoge 18-rw-r--r--. 1 hoge hoge 176-rw-r--r--. 1 hoge hoge 124……（省略）……

16 - Software Design力するコマンドです。 x は、呼び出したユーザの所有する全プロセスを出力するという意味（tty）を持つすべてのプロセスで、 a は、端末

[ OK ]

1

ログの基本をおさえておこう 1-

手がかりを見いだす眼力をつくるをリストで出力するという意味になります。
ちょっとわかり難いですが、 ax を指定することで全プロセスを出力してくれると覚えておColumn

ログはコンピュータの行動記録

ログとは、そもそも英語では log と書きます。英しないように（英語にもなった）改善（カイゼン）を図和辞典を調べてみると最初に出てくるのが、丸太、るでしょう。その原因究明には、壊れた時の状態・材木を切り出すという意味です。次が、測程儀（船情報が非常に大事です。その貴重な情報がログです。の速度を測る器具）や航海（航路）日誌（写真 2）に記

そのログが経時的（あるいは経過的）に記録された情入するなどの意味が出てきます。この 2 つは、まっ報であることから、壊れた時に何が起こったか、ハーたく意味が異なるもののようですが、これらを結びドウェア・ソフトウェアを含めてシステムの状態をつけるものは 船 であり 測程儀 です。船の速度を時間をさかのぼって把握することができるのです。

測る器具（測程儀）に手用測程儀（hand log）というもその昔、大航海時代には、航海日誌が安全な航海ののがあります。これは、木片に長い紐を括り付けたための貴重な情報だったように、このログも安定し簡単な道具です。使い方も簡単で、木片を海に浮かたシステム運用のための貴重な情報なのです。

べ、紐を船上から垂らし、その紐がスルスルと簡単

もう 1 つは、昨今、注目されているビッグデータに流れ出るようにして船を走らせるだけです。一定に代表される痕跡情報（アクセス情報）としてのログ時間内に紐がどれだけ流れ出たかで船の速度を測定の必要性が高まったことにあるでしょう。これは、するというものです。船の速度でノット（英語：

ログの特徴である「いつ、だれが、どこで、何をした」

knot、日本語：結び目）という単位が使われるのは、という情報から、人の動向や意識、マーケティング

この紐に一定間隔で結び目をつけ、先の計測方法での調査などのためのデータマイニングの元データと流れ出た結び目の数を船の速度としたことに由来しして用いられたりします。具体的に身近な例として、

ます。この木片が丸太（log）であり、船の計測が航海日誌（logbook）へと結びついたとされています。

Web サ イ ト の ア ク セ ス ロ グ の 解 析 が あ り ま す。
Web サイトのアクセスログ解析では、どのページまた、コンピュータ、とくにプログラミングの世から入ってきて、どのページで離脱したか、どの地界では、プログラムが経時（あるいは処理経過）ごと域の人がどれくらいアクセスしたかなどさまざまなに（「いつ、だれが、どこで、何をした」という情報を）分析が行われます。その分析結果は、より人が興味記録することを「ロギングする」、記録したものを「ロを持つようなページ作りや人を見せたいページへどグ」と呼びます。英語で 記録 は record という単語のように導いていくか、いわゆる導線の張り方を考を使うことが多いですが、まさに log が使われていえる材料などに用いられたりします。これらは、先るのは、航海日誌（logbook）のように時間経過（あの不具合の修理のように過去のデータから現在を改るいは作業経過）とともに記録を残したことにたと善するのではなく、過去のデータから未来を予測（改えてのことだと言われています。

善）するという、同じログの情報でも活用の範囲をさて、本題に入りましょう。なぜログが必要なのでしょう。

広げた 1 つの解析（分析）方法でもあります。最近では、インターネットの発展とともに、これらの情報それは、大きく 2 つの理由があります。1 つは、活用が非常に注目を集めているだけに、ログという不具合の修理、改善のためです。コンピュータシスとこちらのイメージが強い方も多いようです。このテムに完璧なものはありません。むしろ、コンピューように、ログが、さまざまな切り口で利用され、改タシステムほどよく壊れるものはないとさえ言える

修、改善を図る貴重なデータであることは間違いあかもしれません。今でこそ、少なくなりましたが、りません。

パソコンが固まる（突然、動かなくなる）のは日常茶飯事でした。もし、コンピュータシステムが完璧で▼写真 2 大航海時代の海図

壊れないものであれば、そのような過去を記録した情報（ログ）は、必要ないのかもしれません。しかし、5月 25 06:33 2014 .
5月 25 06:33 2014 ..
7月 18 22:15 2013 .bash̲logout
7月 18 22:15 2013 .bash̲profile
7月 18 22:15 2013 .bashrc

コンピュータシステムに限らず完璧なもの、壊れないものはありません。安全神話が妄想であるように、それを正しく理解していれば壊れたときにどうしようかと考えるでしょう。もし壊れれば、その原因を究明し、修復・修繕し、二度と同じような壊れ方を

Special Issue - 17