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に加工しています

Share

最近の投稿

NetlifyのSplit TestingとFunctionsについて使い方をまとめる Split TestingはGitHubのブランチをベースにしたA/Bテストを行うための機能のことで、FunctionsはNetlifyでAWS Lambdaを使うことができる

NetlifyとはHTMLなどの静的コンテンツのみで構成されたWebサイトを閲覧できる形で配信するWebサービス GitHubやBitbucket、GitLabなどと連携して使うことができて、リポジトリにプッシュすることで自動でCI/CDを行うことができる、無料枠が豊富で独自ドメインを設定可能

WordPressからJekyll(GitHub Pages)に移行した手順をまとめる。 お金的な事情や使いやすさなどの理由で無料のJekyll+GitHub Pagesに移行した。JekyllとはMarkdown等から静的ページを生成する静的サイトジェネレータ

Scala開発のためにScalaらしさをまとめる 言語設計者の設計思想を元にScalaらしさについてまとめる オブジェクト指向と関数型の融合について

StorybookとはUI開発環境を提供するツール React、React Native、Angular、Vueなどをサポートしている ユーザーは独立した開発環境でコンポーネントを個別に作成して挙動の確認をテストできたり、コンポーネントを一覧にしてカタログ化できるので他の人に紹介する時に使えたりする

カテゴリ一覧

タグ一覧