joppot

コピペで絶対動く。説明を妥協しない

サーバ

CentOSのfluentdでapacheのaccess logとerror logを取得する

投稿日:2014年8月21日 更新日:

Pocket

09jfa

概要

みなさんこんにちはcandleです。今回はapacheのアクセスログとエラーログをfluentdを使って取得して見たいと思います。

前提

一台のサーバ上にapacheサーバとfluentdサーバが構築されている
サーバはLanの中のハードでもvagrantでもvirtual machineでもvpsでもなんでも良いです。
私はvagrantのCentOS6.5を使用します。実際今回の題材はamazon linuxでも使えます。

SPONSORED LINK


fluentdの設定ファイルを作る

fluentdの設定ファイルをまだ作成していない場合は下のコマンドで作成しましょう。

sudo mkdir /etc/fluent/
sudo chown root:`whoami` /etc/fluent/
sudo chmod 775 /etc/fluent/
 
cd /etc/fluent/
fluentd --setup ./

これで作成出来ました。

fluentdのapacheのaccess logを取得する設定

fluent.confをエディタで開きます。エディタはemacsでもvimでもなんでも良いです。
下の内容を貼り付けて保存します。

<source>
  type tail
  path /var/log/httpd/access_log
  tag apache.access
  pos_file /var/log/fluent/access_log.pos
  format apache2
</source>

<match apache.access>
  type file
  path /var/log/fluent/apache_access
  time_slice_format %Y%m%d
  time_slice_wait 1s
  compress gzip
</match>


fluentdのapacheのerror logを取得する設定

access_logはformatにapache2というのがあるのですが、error_logはないので、独自のフォーマットを作ります。これはqiitaのとある記事に載っていたのを使わせてもらっています。

<source>
  type tail
  path /var/log/httpd/error_log
  tag apache.error
  pos_file /var/log/fluent/error_log.pos
  format /^\[[^ ]* (?<time>[^\]]*)\] \[(?<level>[^\]]*)\] (?<message>.*)$/
</source>

<match apache.error>
 type file
  path /var/log/fluent/apache_error
  time_slice_format %Y%m%d
  time_slice_wait 1s
  compress gzip
</match>

エラーログの設定は以上です。


fluentdの実行の用意をする

fluentdのログを保存するフォルダを作っておきましょう。

sudo mkdir /var/log/fluent/
sudo chown root:`whoami` /var/log/fluent/
sudo chmod 770 /var/log/fluent/

一般にapacheというかhttpdのaccess_logとerror_logは権限がrootのみに与えられており、ログインユーザーからはアクセス出来ないようになっています。もしも、fluentdをログインユーザーとして実行する場合はfluentdはaccess_logにアクセスできません。
もちろん、本番環境を考えるとfluentdは自動起動になっていると思うのでrootユーザでfluentdが起動されているから問題はないでしょう。しかし、練習の段階ではわざわざfluentdを自動起動にするとテストが面倒なので、httpdのaccess_logとerror_logの権限を変更しておきます。

sudo chown root:`whoami` /var/log/httpd/
sudo chmod 750 /var/log/httpd/

sudo chown root:`whoami` /var/log/httpd/access_log /var/log/httpd/error_log

準備が出来ました。

fluentdを実行してみる

それでは実際にapacheのログが取れるか試してみます。
まずは、apacheを起動します。

sudo service httpd start

次に、fluentdを起動します。

fluentd -c /etc/fluent/fluent.conf -vv

準備ができたので、ブラウザでサーバにアクセスしてみます。

Hello

これで、apacheのアクセスログがとれているはずです。ログがある場所に移動します。

cd /var/log/fluent/
ls

下のようにファイルが生成されています。

apachelogs

ファイルの最後にposと付いているのは置いておいて、重要なのはapache_access.201408. …..というファイルです。
ここにapacheのアクセスログの内容が保存されています。

access_log_re

apacheのerror_logが作成されていないのはエラーがapacheに出ていないからです。
railsとかphpのソースをわざと間違えればapacheのエラーがでます。

ckeckerrorlog

どうでしょうか。

mainerrorlog


まとめ

apacheのアクセスログとエラーログはfluentdの中では割と簡単に取れる部類のものですね。

スポンサードリンク

「為になったなぁ」と思ったら、シェアお願いします。

-サーバ
-, ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

fabricでvagrantのデフォルトの秘密鍵を使ってサーバにアクセスする

概要 みなさんこんにちはcandleです。今回はfabricを使ってvagrant上のvmにアクセスする方法を紹介します。様々なサイトを閲覧すると、あまりvagrantのデフォルトの鍵を使用して、fa …

出力fluentdから収集fluentdへforwardを使ってログデータを送信する方法

概要 みなさんこんにちはcandleです。今回はfluentdサーバを2台使って、ログの収集を行ってみたいと思います。サーバ2台はどのような環境でも良いのですが、私が今回説明する環境は1つはMac P …

fabricを使ってgit のdiffで指定のバージョンからのファイルをアップロード

概要 皆さんこんにちはcandleです。今回はfabricを使ってgit のpush pullを使わないデプロイを実装します。 一般にgit管理されているプロジェクトのデプロイは下の様な図式でデプロイ …

railsのfluent-logger gemを使ってユーザーのアクセスをfluentdサーバに収集する

概要 みなさんこんにちはcandleです。前回からfluentd関連の記事を続けていますが、今回辺りから実用的な使い方を書いていきたいと思います。 fluentdと言えば、ビックデータで扱うようなデー …

let’s encryptのssl証明書をvagrantのubuntuを使用して取得する

概要 みなさんこんにちはcandleです。2014年の後期にmozillaあたりが主導して、無料のssl証明書作ろうという動きがありました。ついに去年の12月にβ版がでたので、早速試してみました。 ち …

  • English
  • 日本語

プロフィール


ベンチャー企業のCTOをやってます。大学時代にプログラミングを始め、javaから入門し、C++へて、PHPへと進み、会社ではRailsを使用。自動化が大好きなプログラマー

スポンサードリンク

アーカイブ