Fluentd入門の入門

Published: 2016年8月21日 by tomsato

概要

ログ収集管理ツールであるFluentdについてまとめます

どういうものかをまとめつつ簡単なサンプルを動かすところまで記述します

Fluentdとは

Fluentdはログ収集管理ツールで、どういったログを収集させるかやどういうふうにログを保存するかを柔軟にカスタマイズできる
fluent01
図でわかるように好きなログについて収集することができて、何かしらのツールに連携することができる
また必要最低限の情報のみにフィルタすることができたり指定した別のremoteサーバに連携することができる

以下のようなことを行いたい場合に適している(例)

  • 数十台のフロントサーバのアクセスログを収集して可視化させたい
  • サーバの負荷状況を収集して監視を行いたい
  • 独自で作成したスクリプト(例えばMySQLのテーブルをcountするスクリプト)を使ってその実行結果を可視化させたい

※ Fluentdはログ収集、連携だけを担当しているので可視化、監視させる場合は別途ツールを準備する必要がある
※ 有名所だとFluentd + Elasticsearch(検索エンジン) + Kibana(ログデータを解析して可視化するツール)で可視化を行う方法がある

プラグインについて

Fluentdではログの入力・出力をプラグインによって設定を行う

プラグインは大きく分けて2つに分類される

inputプラグイン 入力部分を担当する、どういったものをfluentdが受け取るか
outputプラグイン 出力部分を担当する、どのように保存するか

例えば、in_tailプラグインではログに出力されたものをFluentdで受け取って何かしらの処理を行うことができる
ログをどこまで読み込んだかのポジションファイルを作成することで「tail」という名がつくようにログをtailしているかのように新しく出力されたものだけを見ていく
従ってログファイルを都度最初から読み直す、ということにはならない

そのin_tailで読み込んだものは、outputプラグインでどのように保存するかをカスタマイズできる
例えばout_fileプラグインではファイルに保存することができる

その他にも、in_execプラグインを使うとコマンドの実行結果をFluentdで受け取ることができるので MySQLのあるテーブルの件数を可視化したい、という時にcountするスクリプトをin_execにより実行させて 可視化サーバーに連携するということができる
また、out_stdoutプラグインを使うとfluentdのログファイル(/var/log/td-agent/td-agent.log)に出力させることができたりもする

どういったものがあるかは以下の公式サイトを参考にする
input-plugin-overview
output-plugin-overview

環境準備

試した環境

$ cat /etc/redhat-release
CentOS release 6.8 (Final)

fluentdインストール

// curlが必要なのでインストール
$ sudo yum -y install curl
// tg-agentがインストールされる
$ sudo bash -c 'curl -L http://toolbelt.treasuredata.com/sh/install-redhat.sh | sh'
// 起動 and 再起動時に自動で起動させる設定をonにする
$ sudo bash -c 'service td-agent start; chkconfig td-agent on'

apacheのアクセスログを収集させるのでapacheをインストール

// apache インストール
$ sudo yum -y install httpd
$ sudo bash -c 'service httpd start; chkconfig httpd on'

アクセスログをファイルに出力させる

Fluentdの設定を記述する

$ cat /etc/td-agent/td-agent.conf
<source>
  type tail
  path /var/log/httpd/access_log
  pos_file /var/log/td-agent/access_log.pos
  format apache2
  tag apache.access.test
</source>

<match apache.access.test>
  type file
  path /tmp/output_access_log
</match>

設定について
・type tailでアクセスログを読み込む
・apache.access.testというタグをつける
・match apache.access.testの箇所でtail時に設定したタグがマッチされてfileとして出力される

反映の仕方

$ sudo service httpd restart

アクセスログが指定したファイルに出力されていることがわかる

$ tail /tmp/output_access_log.*
2016-08-21T04:43:33+00:00	apache.access.test	{"host":"XXX.XXX.XXX.XXX","user":null,"method":"GET","path":"/","code":200,"size":21,"referer":null,"agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X XXX) AppleWebKit/XXX.XXX (KHTML, like Gecko) Chrome/XXX.XXX.XXX.XXX Safari/XXX.XXX"}

※ 念のため一部出力をXXXに加工しています

コメントを書く

※ 個別に返信が必要な時のみご記入ください

※ Emailは公開されません

※ 承認されると名前・コメントが下記に表示されます

コメント一覧

最近の投稿

ビジュアルリグレッションテストについてまとめ、ネットで調べると数多くのライブラリがありどれがどんな立ち位置なのか全体像がわかりずらかったのでどんな種類があるのか入門の入門としてまとめます、またPlaywrightを使って実際に触ってみました

社内ツールなどの超小規模なAPIをGolangで実装する際にフレームワークを使うべきかを、実際にnet/httpを使った実装とフレームワークを使った実装を比較することでどれだけ優位性があるかを見ていきたいと思います。今回はフレームワークにはシンプルで使いやすそうなEchoを使うことにします。

vue-pdfを使ってNuxt.jsで作成しているアプリケーションに pdfスライドを表示させるサンプルを作成しました README.md通りに実装してもうまくいかないところがあったのでそのあたり含めてまとめます

Vue.js / Nuxt.jsにおけるログインの実装方法をまとめる Auth0やNuxt.jsのAuth Moduleとmiddlewareについて調べつつサンプルを作成することで理解を深める

コンポーネント設計について考える Atomic DesignやPresentational Component, Container Componentについてまとめつつ 自分だったらVue.js / Nuxt.jsでどういうコンポーネント設計にするかについてまとめます

カテゴリ一覧

タグ一覧