Fluentd とは
Fluentd とはTreasure Dataという会社が開発している、さまざまなログの収集手段を提供するログ管理ツールです。
今回は CentOS 6.7 で実際にインストールしてつかってみることによって基本的な設定を学んでいきたいと思います。
td-agent をインストール
td-agent ? となるかと思いますが、td-agent には以下のものが同梱されています。
つまり、ad-agent の中に Fluentd が入っていて、プラグインなども一緒に入っているので、通常は td-agent をインストールします。
インストールにあたっては公式にインストールスクリプトが公開されているので今回はそちらをつかってインストールします。
$ curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh
起動は次のコマンドでできます。
$ sudo /etc/init.d/td-agent start
設定ファイルの編集
それでは設定ファイルを編集してみましょう。
まずは、ログ収集の設定を行います。なお、デフォルトの設定はすべて削除してしまって問題ありません。
/etc/td-agent/td-agnet.conf
<source> # 入力に in_tail プラグインを指定 type tail # 監視するログファイルのパスを指定 path /var/log/httpd/access_log # ログにつけるタグを指定 tag apache.access # 監視するファイルをどの行まで読み込んだかを記録するファイルの指定 pos_file /var/log/td-agent/httpd-access_log.pos # ログの書式を指定 format apache2 </source>
次に上記の記述の下にログ出力の設定を追記していきます。
/etc/td-agent/td-agnet.conf
# 上で指定したタグを設定 <match apache.access> # 出力に out_file プラグインを指定 type file # 出力先のファイルを指定 path /var/log/td-agent/httpd/access.log # ファイル名に含める日時情報を指定 time_slice_format %Y%m%d # ログファイルの更新後に旧ログファイルへのログ記録を継続する時間を指定 time_slice_wait 10m # ログをgzip形式で圧縮 compress gzip </match>
このままだと /var/log/httpd ディレクトリのパーミッションエラーになってしまうので、/var/log/httpd ディレクトリに一般ユーザー実行権限を与えます。
sudo chmod o+x /var/log/httpd
設定は以上となるので、td-agent をリロードします。
$ /etc/init.d/td-agent reload
ブラウザで apache にアクセスした後に実際にログが保存されるか確認してみます。
$ ls /var/log/td-agent/httpd/ access.log.20151114.b524785e8e3b0d946
td-agent によってログが保存されたのが確認できました。
ログをMongoDBに保存
まずは MongoDB をインストールするのでレポジトリを追加します。
/etc/yum.repos.d/10gen.repo
[10gen] name=10gen Repository baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/i686 gpgcheck=0 enabled=1
yum インストールします。
sudo yum install mongo-10gen mongo-10gen-server
MongoDB を起動します。
sudo /etc/init.d/mongod start
自動起動の設定もしておきます。
sudo chkconfig mongod on
MongoDB にアクセスして fluentd という名前のデータベースを作成します
$ mongo MongoDB shell version: 2.6.11 connecting to: test Welcome to the MongoDB shell. For interactive help, type "help". For more comprehensive documentation, see http://docs.mongodb.org/ Questions? Try the support group http://groups.google.com/group/mongodb-user > use fluentd switched to db fluentd > exit
MongoDB の設定はこれで完了したので、td-agent の設定を変更してログの出力先を MongoDBに変更しましょう。
/etc/td-agent/td-agnet.conf
<match apache.access> # 出力に out_mongo プラグインを指定 type mongo # ホスト指定 host localhost # ポート指定 port 27017 # データベースを指定 database fluentd # Collectionを指定 collection apache_access # Capped Collection 機能を利用する capped # Collection の上限サイズを 1G に設定 capped_size 1024m # 10秒おきにログを MongoDB に flush する flush_interval 10s </match>
td-agent をリロードして設定を反映させます。
sudo /etc/init.d/td-agent reload
それでは MongoDB にアクセスして『/』というパスへのアクセスのログ件数を確認することで、ログが MongoDB に保存されているか確認します。
$ mongo MongoDB shell version: 2.6.11 connecting to: test > use fluentd switched to db fluentd > db.apache_access.count({path: "/"}); 23
ログが23件保存されているのが確認できました。
まとめ
Fluentd はリモートのサーバにログを送ることもでき、本番環境ではそのような構成になりますが、今回 fluentd の最低限の知識や基本的な設定はこれである程度学ぶことができたかと思います。
ここから先の細い設定などは公式サイトなどでさらに学習していきましょう!
データ分析基盤構築入門[Fluentd、Elasticsearch、Kibanaによるログ収集と可視化]
- 作者: 鈴木健太,吉田健太郎,大谷純,道井俊介
- 出版社/メーカー: 技術評論社
- 発売日: 2017/09/21
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る