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は公開されません

※ コメントは承認されると下記に表示されます

コメント一覧

最近の投稿

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でどういうコンポーネント設計にするかについてまとめます

Netlify Formsを使ってブログサイトにコメント機能を追加する方法を調べたので紹介 Netlify FormsはNetlifyに標準機能として用意されているフォーム機能 サーバレスなので別途コメント用にサーバを用意する必要がなくHTMLを埋め込むだけで準備できる

TypeScriptの入門の入門チートシート 型の種類や使い方についてまとめていくだけでなく、 TypeScriptについてや必要性などについてもまとめることでこのページでTypeScriptをざっくり理解できる程度の内容を目指す

カテゴリ一覧

タグ一覧